buildr 1.1.3 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +48 -0
- data/README +1 -1
- data/Rakefile +204 -0
- data/bin/buildr +7 -0
- data/lib/buildr.rb +155 -16
- data/lib/buildr/cobertura.rb +26 -19
- data/lib/buildr/hibernate.rb +8 -6
- data/lib/buildr/javacc.rb +1 -0
- data/lib/buildr/jdepend.rb +31 -4
- data/lib/buildr/jetty.rb +26 -28
- data/lib/buildr/openjpa.rb +8 -6
- data/lib/buildr/xmlbeans.rb +9 -4
- data/lib/core/build.rb +40 -50
- data/lib/core/checks.rb +358 -0
- data/lib/core/common.rb +161 -62
- data/lib/core/generate.rb +65 -0
- data/lib/core/help.rb +72 -0
- data/lib/core/project.rb +32 -37
- data/lib/core/rake_ext.rb +12 -66
- data/lib/core/transports.rb +388 -363
- data/lib/java/ant.rb +33 -36
- data/lib/java/artifact.rb +172 -160
- data/lib/java/compile.rb +13 -21
- data/lib/java/eclipse.rb +5 -5
- data/lib/java/idea.ipr.template +284 -0
- data/lib/java/idea.rb +107 -72
- data/lib/java/java.rb +42 -18
- data/lib/java/packaging.rb +242 -124
- data/lib/java/test.rb +532 -135
- data/lib/tasks/zip.rb +72 -23
- metadata +24 -10
data/lib/java/compile.rb
CHANGED
@@ -81,7 +81,7 @@ module Buildr
|
|
81
81
|
OPTIONS.each { |name| send "#{name}=", nil }
|
82
82
|
end
|
83
83
|
|
84
|
-
def to_s()
|
84
|
+
def to_s() #:nodoc:
|
85
85
|
OPTIONS.inject({}){ |hash, name| hash[name] = send(name) ; hash }.reject{ |name,value| value.nil? }.inspect
|
86
86
|
end
|
87
87
|
|
@@ -191,8 +191,9 @@ module Buildr
|
|
191
191
|
#
|
192
192
|
# For example:
|
193
193
|
# compile.using(:warnings=>true, :source=>"1.5")
|
194
|
-
def using(
|
195
|
-
|
194
|
+
def using(*args)
|
195
|
+
args.pop.each { |key, value| options.send "#{key}=", value } if Hash === args.last
|
196
|
+
args.each { |key| options.send "#{key}=", value = true }
|
196
197
|
self
|
197
198
|
end
|
198
199
|
|
@@ -254,7 +255,7 @@ module Buildr
|
|
254
255
|
def initialize(*args) #:nodoc:
|
255
256
|
super
|
256
257
|
@filter = Buildr::Filter.new
|
257
|
-
enhance { filter.run }
|
258
|
+
enhance { filter.run if filter.source && filter.target }
|
258
259
|
end
|
259
260
|
|
260
261
|
# :call-seq:
|
@@ -385,8 +386,9 @@ module Buildr
|
|
385
386
|
#
|
386
387
|
# For example:
|
387
388
|
# javadoc.using :windowtitle=>"My application"
|
388
|
-
def using(
|
389
|
-
|
389
|
+
def using(*args)
|
390
|
+
args.pop.each { |key, value| @options[key.to_sym] = value } if Hash === args.last
|
391
|
+
args.each { |key| @options[key.to_sym] = true }
|
390
392
|
self
|
391
393
|
end
|
392
394
|
|
@@ -448,19 +450,9 @@ module Buildr
|
|
448
450
|
|
449
451
|
class Project
|
450
452
|
|
451
|
-
#
|
452
|
-
# prepare(*prereqs) => task
|
453
|
-
# prepare(*prereqs) { |task| .. } => task
|
454
|
-
#
|
455
|
-
# The prepare task executes before the #compile task. Use it for pre-compilation
|
456
|
-
# tasks, e.g. generating source code.
|
457
|
-
#
|
458
|
-
# This method returns the project's prepare task. It also accepts a list of
|
459
|
-
# prerequisites and a block, used to enhance the prepare task.
|
460
|
-
#
|
461
|
-
# For example:
|
462
|
-
# prepare { schema_to_java }
|
453
|
+
# *Deprecated* Add a prerequisite to the compile task instead.
|
463
454
|
def prepare(*prereqs, &block)
|
455
|
+
warn_deprecated "Add a prerequisite to the compile task instead of using the prepare task."
|
464
456
|
task("prepare").enhance prereqs, &block
|
465
457
|
end
|
466
458
|
|
@@ -536,7 +528,7 @@ module Buildr
|
|
536
528
|
prepare = task("prepare")
|
537
529
|
# Resources task is a filter.
|
538
530
|
resources = Java::ResourcesTask.define_task("resources")
|
539
|
-
|
531
|
+
project.path_to("src/main/resources").tap { |dir| resources.filter.from dir if File.exist?(dir) }
|
540
532
|
# Compile task requires prepare and performs resources, if anything compiled.
|
541
533
|
compile = Java::CompileTask.define_task("compile"=>[prepare, resources])
|
542
534
|
project.path_to("src/main/java").tap { |dir| compile.from dir if File.exist?(dir) }
|
@@ -564,12 +556,12 @@ module Buildr
|
|
564
556
|
#
|
565
557
|
# You can turn this option off directly, or by setting the environment variable
|
566
558
|
# DEBUG to "no". For example:
|
567
|
-
#
|
559
|
+
# buildr build DEBUG=no
|
568
560
|
#
|
569
561
|
# The release tasks runs a build with <tt>DEBUG=no</tt>.
|
570
562
|
attr_accessor :debug
|
571
563
|
|
572
|
-
def debug()
|
564
|
+
def debug() #:nodoc:
|
573
565
|
@debug = (ENV["DEBUG"] || ENV["debug"]) !~ /(no|off|false)/ if @debug.nil?
|
574
566
|
@debug
|
575
567
|
end
|
data/lib/java/eclipse.rb
CHANGED
@@ -15,9 +15,9 @@ module Buildr
|
|
15
15
|
|
16
16
|
# We need paths relative to the top project's base directory.
|
17
17
|
root_path = lambda { |p| f = lambda { |p| p.parent ? f[p.parent] : p.base_dir } ; f[p] }[project]
|
18
|
-
# We want the Eclipse files changed every time the
|
19
|
-
# the
|
20
|
-
# after the
|
18
|
+
# We want the Eclipse files changed every time the Buildfile changes, but also anything loaded by
|
19
|
+
# the Buildfile (buildr.rb, separate file listing dependencies, etc), so we add anything required
|
20
|
+
# after the Buildfile. So which don't know where Buildr shows up exactly, ignore files that show
|
21
21
|
# in $LOADED_FEATURES that we cannot resolve.
|
22
22
|
sources = ($LOADED_FEATURES - Buildr.instance_eval("@loaded_features_to_ignore")).
|
23
23
|
map { |file| File.expand_path(file) }.select { |file| File.exist?(file) }
|
@@ -27,7 +27,7 @@ module Buildr
|
|
27
27
|
if project.packages.detect { |pkg| pkg.type.to_s =~ /(jar)|(war)|(rar)|(mar)|(aar)/ }
|
28
28
|
eclipse.enhance [ file(project.path_to(".classpath")), file(project.path_to(".project")) ]
|
29
29
|
|
30
|
-
# The only thing we need to look for is a change in the
|
30
|
+
# The only thing we need to look for is a change in the Buildfile.
|
31
31
|
file(project.path_to(".classpath")=>sources) do |task|
|
32
32
|
puts "Writing #{task.name}" if verbose
|
33
33
|
|
@@ -107,7 +107,7 @@ module Buildr
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
110
|
-
# The only thing we need to look for is a change in the
|
110
|
+
# The only thing we need to look for is a change in the Buildfile.
|
111
111
|
file(project.path_to(".project")=>sources) do |task|
|
112
112
|
puts "Writing #{task.name}" if verbose
|
113
113
|
File.open(task.name, "w") do |file|
|
@@ -0,0 +1,284 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<project version="4" relativePaths="false">
|
3
|
+
<component name="AntConfiguration">
|
4
|
+
<defaultAnt bundledAnt="true" />
|
5
|
+
</component>
|
6
|
+
<component name="BuildJarProjectSettings">
|
7
|
+
<option name="BUILD_JARS_ON_MAKE" value="false" />
|
8
|
+
</component>
|
9
|
+
<component name="CodeStyleManager">
|
10
|
+
<option name="USE_DEFAULT_CODE_STYLE_SCHEME" value="true" />
|
11
|
+
<option name="CODE_STYLE_SCHEME" value="" />
|
12
|
+
</component>
|
13
|
+
<component name="CodeStyleProjectProfileManger">
|
14
|
+
<option name="PROJECT_PROFILE" />
|
15
|
+
<option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
|
16
|
+
</component>
|
17
|
+
<component name="CodeStyleSettingsManager">
|
18
|
+
<option name="PER_PROJECT_SETTINGS" />
|
19
|
+
<option name="USE_PER_PROJECT_SETTINGS" value="false" />
|
20
|
+
</component>
|
21
|
+
<component name="CompilerConfiguration">
|
22
|
+
<option name="DEFAULT_COMPILER" value="Javac" />
|
23
|
+
<option name="DEPLOY_AFTER_MAKE" value="0" />
|
24
|
+
<resourceExtensions />
|
25
|
+
<wildcardResourcePatterns>
|
26
|
+
<entry name="!?*.java" />
|
27
|
+
</wildcardResourcePatterns>
|
28
|
+
</component>
|
29
|
+
<component name="DataSourceManager" />
|
30
|
+
<component name="DataSourceManagerImpl" />
|
31
|
+
<component name="DependenciesAnalyzeManager">
|
32
|
+
<option name="myForwardDirection" value="false" />
|
33
|
+
</component>
|
34
|
+
<component name="DependencyValidationManager" />
|
35
|
+
<component name="EclipseCompilerSettings">
|
36
|
+
<option name="DEBUGGING_INFO" value="true" />
|
37
|
+
<option name="GENERATE_NO_WARNINGS" value="true" />
|
38
|
+
<option name="DEPRECATION" value="false" />
|
39
|
+
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
40
|
+
<option name="MAXIMUM_HEAP_SIZE" value="128" />
|
41
|
+
</component>
|
42
|
+
<component name="EclipseEmbeddedCompilerSettings">
|
43
|
+
<option name="DEBUGGING_INFO" value="true" />
|
44
|
+
<option name="GENERATE_NO_WARNINGS" value="true" />
|
45
|
+
<option name="DEPRECATION" value="false" />
|
46
|
+
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
47
|
+
<option name="MAXIMUM_HEAP_SIZE" value="128" />
|
48
|
+
</component>
|
49
|
+
<component name="EntryPointsManager">
|
50
|
+
<entry_points />
|
51
|
+
</component>
|
52
|
+
<component name="ExportToHTMLSettings">
|
53
|
+
<option name="PRINT_LINE_NUMBERS" value="false" />
|
54
|
+
<option name="OPEN_IN_BROWSER" value="false" />
|
55
|
+
<option name="OUTPUT_DIRECTORY" />
|
56
|
+
</component>
|
57
|
+
<component name="GUI Designer component loader factory" />
|
58
|
+
<component name="IdProvider" IDEtalkID="0246D33576B8D4BC3331F9A5BB848389" />
|
59
|
+
<component name="ImportConfiguration">
|
60
|
+
<option name="VENDOR" />
|
61
|
+
<option name="RELEASE_TAG" />
|
62
|
+
<option name="LOG_MESSAGE" />
|
63
|
+
<option name="CHECKOUT_AFTER_IMPORT" value="true" />
|
64
|
+
</component>
|
65
|
+
<component name="InspectionProjectProfileManager">
|
66
|
+
<option name="PROJECT_PROFILE" value="Project Default" />
|
67
|
+
<option name="USE_PROJECT_LEVEL_SETTINGS" value="false" />
|
68
|
+
<scopes />
|
69
|
+
<profiles>
|
70
|
+
<profile version="1.0" is_locked="false">
|
71
|
+
<option name="myName" value="Project Default" />
|
72
|
+
<option name="myLocal" value="false" />
|
73
|
+
<used_levels>
|
74
|
+
<error>
|
75
|
+
<option name="myName" value="ERROR" />
|
76
|
+
<option name="myVal" value="400" />
|
77
|
+
</error>
|
78
|
+
<warning>
|
79
|
+
<option name="myName" value="WARNING" />
|
80
|
+
<option name="myVal" value="300" />
|
81
|
+
</warning>
|
82
|
+
<information>
|
83
|
+
<option name="myName" value="INFO" />
|
84
|
+
<option name="myVal" value="200" />
|
85
|
+
</information>
|
86
|
+
<server>
|
87
|
+
<option name="myName" value="SERVER PROBLEM" />
|
88
|
+
<option name="myVal" value="100" />
|
89
|
+
</server>
|
90
|
+
</used_levels>
|
91
|
+
</profile>
|
92
|
+
</profiles>
|
93
|
+
</component>
|
94
|
+
<component name="JUnitProjectSettings">
|
95
|
+
<option name="TEST_RUNNER" value="UI" />
|
96
|
+
</component>
|
97
|
+
<component name="JavacSettings">
|
98
|
+
<option name="DEBUGGING_INFO" value="true" />
|
99
|
+
<option name="GENERATE_NO_WARNINGS" value="false" />
|
100
|
+
<option name="DEPRECATION" value="true" />
|
101
|
+
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
102
|
+
<option name="MAXIMUM_HEAP_SIZE" value="128" />
|
103
|
+
</component>
|
104
|
+
<component name="JavadocGenerationManager">
|
105
|
+
<option name="OUTPUT_DIRECTORY" />
|
106
|
+
<option name="OPTION_SCOPE" value="protected" />
|
107
|
+
<option name="OPTION_HIERARCHY" value="false" />
|
108
|
+
<option name="OPTION_NAVIGATOR" value="false" />
|
109
|
+
<option name="OPTION_INDEX" value="false" />
|
110
|
+
<option name="OPTION_SEPARATE_INDEX" value="false" />
|
111
|
+
<option name="OPTION_DOCUMENT_TAG_USE" value="false" />
|
112
|
+
<option name="OPTION_DOCUMENT_TAG_AUTHOR" value="false" />
|
113
|
+
<option name="OPTION_DOCUMENT_TAG_VERSION" value="false" />
|
114
|
+
<option name="OPTION_DOCUMENT_TAG_DEPRECATED" value="false" />
|
115
|
+
<option name="OPTION_DEPRECATED_LIST" value="false" />
|
116
|
+
<option name="OTHER_OPTIONS" />
|
117
|
+
<option name="HEAP_SIZE" />
|
118
|
+
<option name="LOCALE" />
|
119
|
+
<option name="OPEN_IN_BROWSER" value="false" />
|
120
|
+
</component>
|
121
|
+
<component name="JikesSettings">
|
122
|
+
<option name="JIKES_PATH" value="" />
|
123
|
+
<option name="DEBUGGING_INFO" value="true" />
|
124
|
+
<option name="DEPRECATION" value="true" />
|
125
|
+
<option name="GENERATE_NO_WARNINGS" value="false" />
|
126
|
+
<option name="IS_EMACS_ERRORS_MODE" value="true" />
|
127
|
+
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
128
|
+
</component>
|
129
|
+
<component name="LogConsolePreferences">
|
130
|
+
<option name="FILTER_ERRORS" value="false" />
|
131
|
+
<option name="FILTER_WARNINGS" value="false" />
|
132
|
+
<option name="FILTER_INFO" value="true" />
|
133
|
+
<option name="CUSTOM_FILTER" />
|
134
|
+
</component>
|
135
|
+
<component name="Palette2">
|
136
|
+
<group name="Swing">
|
137
|
+
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
138
|
+
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
139
|
+
</item>
|
140
|
+
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
141
|
+
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
142
|
+
</item>
|
143
|
+
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
144
|
+
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
145
|
+
</item>
|
146
|
+
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
147
|
+
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
148
|
+
</item>
|
149
|
+
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
150
|
+
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
151
|
+
<initial-values>
|
152
|
+
<property name="text" value="Button" />
|
153
|
+
</initial-values>
|
154
|
+
</item>
|
155
|
+
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
156
|
+
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
157
|
+
<initial-values>
|
158
|
+
<property name="text" value="RadioButton" />
|
159
|
+
</initial-values>
|
160
|
+
</item>
|
161
|
+
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
162
|
+
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
163
|
+
<initial-values>
|
164
|
+
<property name="text" value="CheckBox" />
|
165
|
+
</initial-values>
|
166
|
+
</item>
|
167
|
+
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
168
|
+
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
169
|
+
<initial-values>
|
170
|
+
<property name="text" value="Label" />
|
171
|
+
</initial-values>
|
172
|
+
</item>
|
173
|
+
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
174
|
+
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
175
|
+
<preferred-size width="150" height="-1" />
|
176
|
+
</default-constraints>
|
177
|
+
</item>
|
178
|
+
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
179
|
+
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
180
|
+
<preferred-size width="150" height="-1" />
|
181
|
+
</default-constraints>
|
182
|
+
</item>
|
183
|
+
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
184
|
+
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
185
|
+
<preferred-size width="150" height="-1" />
|
186
|
+
</default-constraints>
|
187
|
+
</item>
|
188
|
+
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
189
|
+
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
190
|
+
<preferred-size width="150" height="50" />
|
191
|
+
</default-constraints>
|
192
|
+
</item>
|
193
|
+
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
194
|
+
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
195
|
+
<preferred-size width="150" height="50" />
|
196
|
+
</default-constraints>
|
197
|
+
</item>
|
198
|
+
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
199
|
+
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
200
|
+
<preferred-size width="150" height="50" />
|
201
|
+
</default-constraints>
|
202
|
+
</item>
|
203
|
+
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
204
|
+
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
205
|
+
</item>
|
206
|
+
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
207
|
+
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
208
|
+
<preferred-size width="150" height="50" />
|
209
|
+
</default-constraints>
|
210
|
+
</item>
|
211
|
+
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
212
|
+
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
213
|
+
<preferred-size width="150" height="50" />
|
214
|
+
</default-constraints>
|
215
|
+
</item>
|
216
|
+
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
217
|
+
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
218
|
+
<preferred-size width="150" height="50" />
|
219
|
+
</default-constraints>
|
220
|
+
</item>
|
221
|
+
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
222
|
+
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
223
|
+
<preferred-size width="200" height="200" />
|
224
|
+
</default-constraints>
|
225
|
+
</item>
|
226
|
+
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
227
|
+
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
228
|
+
<preferred-size width="200" height="200" />
|
229
|
+
</default-constraints>
|
230
|
+
</item>
|
231
|
+
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
232
|
+
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
233
|
+
</item>
|
234
|
+
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
235
|
+
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
236
|
+
</item>
|
237
|
+
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
238
|
+
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
239
|
+
</item>
|
240
|
+
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
241
|
+
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
242
|
+
</item>
|
243
|
+
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
244
|
+
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
245
|
+
<preferred-size width="-1" height="20" />
|
246
|
+
</default-constraints>
|
247
|
+
</item>
|
248
|
+
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
249
|
+
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
250
|
+
</item>
|
251
|
+
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
252
|
+
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
253
|
+
</item>
|
254
|
+
</group>
|
255
|
+
</component>
|
256
|
+
<component name="ProjectRootManager" version="2" assert-keyword="true" jdk-15="true" project-jdk-name="1.5" />
|
257
|
+
<component name="ProjectRunConfigurationManager" />
|
258
|
+
<component name="RmicSettings">
|
259
|
+
<option name="IS_EANABLED" value="false" />
|
260
|
+
<option name="DEBUGGING_INFO" value="true" />
|
261
|
+
<option name="GENERATE_NO_WARNINGS" value="false" />
|
262
|
+
<option name="GENERATE_IIOP_STUBS" value="false" />
|
263
|
+
<option name="ADDITIONAL_OPTIONS_STRING" value="" />
|
264
|
+
</component>
|
265
|
+
<component name="StarteamVcsAdapter" />
|
266
|
+
<component name="VssVcs" />
|
267
|
+
<component name="com.intellij.jsf.UserDefinedFacesConfigs">
|
268
|
+
<option name="USER_DEFINED_CONFIGS">
|
269
|
+
<value>
|
270
|
+
<list size="0" />
|
271
|
+
</value>
|
272
|
+
</option>
|
273
|
+
</component>
|
274
|
+
<component name="uidesigner-configuration">
|
275
|
+
<option name="INSTRUMENT_CLASSES" value="true" />
|
276
|
+
<option name="COPY_FORMS_RUNTIME_TO_OUTPUT" value="true" />
|
277
|
+
<option name="DEFAULT_LAYOUT_MANAGER" value="GridLayoutManager" />
|
278
|
+
</component>
|
279
|
+
<UsedPathMacros>
|
280
|
+
<macro name="M2_REPO" />
|
281
|
+
</UsedPathMacros>
|
282
|
+
</project>
|
283
|
+
|
284
|
+
|
data/lib/java/idea.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
require "pathname"
|
2
2
|
require "core/project"
|
3
3
|
require "java/artifact"
|
4
|
+
require 'stringio'
|
5
|
+
require 'rexml/document'
|
4
6
|
|
5
7
|
module Buildr
|
6
8
|
|
@@ -15,109 +17,142 @@ module Buildr
|
|
15
17
|
|
16
18
|
# We need paths relative to the top project's base directory.
|
17
19
|
root_path = lambda { |p| f = lambda { |p| p.parent ? f[p.parent] : p.base_dir } ; f[p] }[project]
|
18
|
-
# We want the Eclipse files changed every time the
|
19
|
-
# the
|
20
|
-
# after the
|
20
|
+
# We want the Eclipse files changed every time the Buildfile changes, but also anything loaded by
|
21
|
+
# the Buildfile (buildr.rb, separate file listing dependencies, etc), so we add anything required
|
22
|
+
# after the Buildfile. So which don't know where Buildr shows up exactly, ignore files that show
|
21
23
|
# in $LOADED_FEATURES that we cannot resolve.
|
22
24
|
sources = ($LOADED_FEATURES - Buildr.instance_eval("@loaded_features_to_ignore")).
|
23
25
|
map { |file| File.expand_path(file) }.select { |file| File.exist?(file) }
|
24
26
|
sources << File.expand_path(Rake.application.rakefile, root_path) if Rake.application.rakefile
|
25
27
|
|
26
|
-
#
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
file(task_name=>sources) do |task|
|
33
|
-
puts "Writing #{task.name}" # if verbose
|
28
|
+
# Find a path relative to the project's root directory.
|
29
|
+
relative = lambda do |path|
|
30
|
+
msg = [:to_path, :to_str, :to_s].find { |msg| path.respond_to? msg }
|
31
|
+
path = path.__send__(msg)
|
32
|
+
Pathname.new(path).relative_path_from(Pathname.new(project.path_to)).to_s
|
33
|
+
end
|
34
34
|
|
35
|
-
|
36
|
-
|
37
|
-
msg = [:to_path, :to_str, :to_s].find { |msg| path.respond_to? msg }
|
38
|
-
path = path.__send__(msg)
|
39
|
-
Pathname.new(path).relative_path_from(Pathname.new(project.path_to)).to_s
|
40
|
-
end
|
35
|
+
m2repo = Buildr::Repositories.instance.local
|
36
|
+
excludes = [ '**/.svn/', '**/CVS/' ].join('|')
|
41
37
|
|
42
|
-
|
43
|
-
|
38
|
+
# Only for projects that are packageable.
|
39
|
+
task_name = project.path_to("#{project.name.sub(':', '-')}.iml")
|
40
|
+
idea.enhance [ file(task_name) ]
|
44
41
|
|
45
|
-
|
46
|
-
|
47
|
-
|
42
|
+
# The only thing we need to look for is a change in the Buildfile.
|
43
|
+
file(task_name=>sources) do |task|
|
44
|
+
puts "Writing #{task.name}" if verbose
|
48
45
|
|
49
|
-
|
50
|
-
|
46
|
+
# Idea handles modules slightly differently if they're WARs
|
47
|
+
idea_types = Hash.new("JAVA_MODULE")
|
48
|
+
idea_types["war"] = "J2EE_WEB_MODULE"
|
51
49
|
|
52
|
-
|
53
|
-
|
50
|
+
# Note: Use the test classpath since Eclipse compiles both "main" and "test" classes using the same classpath
|
51
|
+
cp = project.test.compile.classpath.map(&:to_s) - [ project.compile.target.to_s ]
|
54
52
|
|
55
|
-
|
56
|
-
|
53
|
+
# Convert classpath elements into applicable Project objects
|
54
|
+
cp.collect! { |path| projects.detect { |prj| prj.packages.detect { |pkg| pkg.to_s == path } } || path }
|
57
55
|
|
58
|
-
|
59
|
-
|
56
|
+
# project_libs: artifacts created by other projects
|
57
|
+
project_libs, others = cp.partition { |path| path.is_a?(Project) }
|
60
58
|
|
61
|
-
|
62
|
-
|
59
|
+
# Separate artifacts from Maven2 repository
|
60
|
+
m2_libs, others = others.partition { |path| path.to_s.index(m2repo) == 0 }
|
63
61
|
|
64
|
-
|
65
|
-
|
66
|
-
# Project type is going to be the first package type
|
67
|
-
xml.module(:version=>"4", :relativePaths=>"false", :type=>idea_types[project.packages.first.type.to_s]) do
|
62
|
+
# Generated: classpath elements in the project are assumed to be generated
|
63
|
+
generated, libs = others.partition { |path| path.to_s.index(project.path_to.to_s) == 0 }
|
68
64
|
|
69
|
-
|
70
|
-
|
71
|
-
|
65
|
+
File.open(task.name, "w") do |file|
|
66
|
+
xml = Builder::XmlMarkup.new(:target=>file, :indent=>2)
|
67
|
+
# Project type is going to be the first package type
|
68
|
+
xml.module(:version=>"4", :relativePaths=>"false", :type=>idea_types[project.packages.first.type.to_s]) do
|
72
69
|
|
73
|
-
|
74
|
-
|
75
|
-
|
70
|
+
xml.component :name=>"ModuleRootManager"
|
71
|
+
xml.component "name"=>"NewModuleRootManager", "inherit-compiler-output"=>"false" do
|
72
|
+
xml.output :url=>"file://$MODULE_DIR$/#{relative[project.compile.target]}"
|
73
|
+
xml.tag! "exclude-output"
|
76
74
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
75
|
+
# TODO project.test.target isn't recognized, what's the proper way to get the test compile path?
|
76
|
+
xml.tag! "output-test", :url=>"file://$MODULE_DIR$/target/test-classes"
|
77
|
+
|
78
|
+
xml.content(:url=>"file://$MODULE_DIR$") do
|
79
|
+
srcs = project.compile.sources.map { |src| relative[src] } + generated.map { |src| relative[src] }
|
80
|
+
srcs.sort.uniq.each do |path|
|
81
|
+
xml.sourceFolder :url=>"file://$MODULE_DIR$/#{path}", :isTestSource=>"false"
|
82
|
+
end
|
83
|
+
test_sources = project.test.compile.sources.map { |src| relative[src] }
|
84
|
+
test_sources.each do |paths|
|
85
|
+
paths.sort.uniq.each do |path|
|
86
|
+
xml.sourceFolder :url=>"file://$MODULE_DIR$/#{path}", :isTestSource=>"true"
|
87
87
|
end
|
88
|
-
xml.excludeFolder :url=>"file://$MODULE_DIR$/#{relative[project.compile.target]}"
|
89
88
|
end
|
89
|
+
{"src/main/resources"=>false, "src/test/resources"=>true}.each do |key, value|
|
90
|
+
xml.sourceFolder :url=>"file://$MODULE_DIR$/#{key}", :isTestSource=>"#{value}" if File.exist?(project.path_to(key))
|
91
|
+
end
|
92
|
+
xml.excludeFolder :url=>"file://$MODULE_DIR$/#{relative[project.compile.target]}"
|
93
|
+
end
|
90
94
|
|
91
|
-
|
92
|
-
|
95
|
+
xml.orderEntry :type=>"sourceFolder", :forTests=>"false"
|
96
|
+
xml.orderEntry :type=>"inheritedJdk"
|
93
97
|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
+
# Classpath elements from other projects
|
99
|
+
project_libs.map(&:id).sort.uniq.each do |project_id|
|
100
|
+
xml.orderEntry :type=>'module', "module-name"=>project_id
|
101
|
+
end
|
98
102
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
end
|
108
|
-
xml.JAVADOC
|
109
|
-
xml.SOURCES
|
103
|
+
# Libraries
|
104
|
+
ext_libs = libs.map {|path| "$MODULE_DIR$/#{path.to_s}" } +
|
105
|
+
m2_libs.map { |path| path.to_s.sub(m2repo, "$M2_REPO$") }
|
106
|
+
ext_libs.each do |path|
|
107
|
+
xml.orderEntry :type=>"module-library" do
|
108
|
+
xml.library do
|
109
|
+
xml.CLASSES do
|
110
|
+
xml.root :url=>"jar://#{path}!/"
|
110
111
|
end
|
112
|
+
xml.JAVADOC
|
113
|
+
xml.SOURCES
|
111
114
|
end
|
112
115
|
end
|
113
|
-
|
114
|
-
xml.orderEntryProperties
|
115
116
|
end
|
117
|
+
|
118
|
+
xml.orderEntryProperties
|
116
119
|
end
|
117
120
|
end
|
118
121
|
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# Root project aggregates all the subprojects.
|
125
|
+
if project.parent == nil
|
126
|
+
task_name = project.path_to("#{project.name.sub(':', '-')}.ipr")
|
127
|
+
idea.enhance [ file(task_name) ]
|
128
|
+
|
129
|
+
file(task_name=>sources) do |task|
|
130
|
+
puts "Writing #{task.name}" if verbose
|
131
|
+
|
132
|
+
# Generating just the little stanza that chanages from one project to another
|
133
|
+
partial = StringIO.new
|
134
|
+
xml = Builder::XmlMarkup.new(:target=>partial, :indent=>2)
|
135
|
+
xml.component(:name=>"ProjectModuleManager") do
|
136
|
+
xml.modules do
|
137
|
+
project.projects.each do |subp|
|
138
|
+
module_name = subp.name.gsub(":", "-")
|
139
|
+
module_path = subp.name[/:(.*)/][1..-1]
|
140
|
+
path = "#{module_path}/#{module_name}.iml"
|
141
|
+
xml.module :fileurl=>"file://$PROJECT_DIR$/#{path}", :filepath=>"$PROJECT_DIR$/#{path}"
|
142
|
+
end
|
143
|
+
xml.module :fileurl=>"file://$PROJECT_DIR$/#{project.name}.iml", :filepath=>"$PROJECT_DIR$/#{project.name}.iml"
|
144
|
+
end
|
145
|
+
end
|
119
146
|
|
147
|
+
# Loading the whole fairly constant crap
|
148
|
+
template_xml = REXML::Document.new(File.open(File.dirname(__FILE__)+"/idea.ipr.template"))
|
149
|
+
include_xml = REXML::Document.new(partial.string)
|
150
|
+
template_xml.root.add_element(include_xml.root)
|
151
|
+
template_xml.write(File.new(task.name, "w"))
|
152
|
+
|
153
|
+
end
|
120
154
|
end
|
155
|
+
|
121
156
|
end
|
122
157
|
end
|
123
158
|
|