buildr 1.4.12 → 1.4.13
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/CHANGELOG +62 -0
- data/addon/buildr/checkstyle.rb +6 -4
- data/addon/buildr/gpg.rb +9 -2
- data/addon/buildr/gwt.rb +1 -0
- data/buildr.gemspec +18 -20
- data/doc/download.textile +30 -6
- data/doc/index.textile +21 -9
- data/doc/packaging.textile +29 -0
- data/lib/buildr.rb +3 -0
- data/lib/buildr/core/application.rb +24 -0
- data/lib/buildr/core/assets.rb +93 -0
- data/lib/buildr/core/build.rb +3 -2
- data/lib/buildr/core/common.rb +3 -2
- data/lib/buildr/core/compile.rb +0 -1
- data/lib/buildr/core/generate.rb +2 -2
- data/lib/buildr/core/project.rb +1 -1
- data/lib/buildr/core/shell.rb +1 -1
- data/lib/buildr/core/transports.rb +4 -1
- data/lib/buildr/core/util.rb +8 -0
- data/lib/buildr/ide/idea.rb +267 -114
- data/lib/buildr/java/commands.rb +16 -2
- data/lib/buildr/java/packaging.rb +6 -4
- data/lib/buildr/java/pom.rb +1 -1
- data/lib/buildr/java/tests.rb +3 -3
- data/lib/buildr/packaging/archive.rb +4 -3
- data/lib/buildr/packaging/package.rb +0 -2
- data/lib/buildr/packaging/ziptask.rb +1 -1
- data/lib/buildr/version.rb +2 -2
- data/rakelib/rspec.rake +5 -49
- data/rakelib/stage.rake +7 -5
- data/spec/addon/jaxb_xjc_spec.rb +2 -2
- data/spec/core/application_spec.rb +8 -8
- data/spec/core/build_spec.rb +41 -41
- data/spec/core/common_spec.rb +3 -2
- data/spec/core/test_spec.rb +34 -34
- data/spec/core/transport_spec.rb +21 -17
- data/spec/ide/idea_spec.rb +707 -4
- data/spec/java/packaging_spec.rb +20 -0
- data/spec/java/tests_spec.rb +2 -2
- data/spec/packaging/packaging_spec.rb +0 -22
- metadata +54 -114
data/lib/buildr/core/build.rb
CHANGED
@@ -331,10 +331,11 @@ module Buildr #:nodoc:
|
|
331
331
|
@this_version = extract_version
|
332
332
|
check
|
333
333
|
with_release_candidate_version do |release_candidate_buildfile|
|
334
|
-
args =
|
334
|
+
args = []
|
335
|
+
args << 'buildr' << '--buildfile' << release_candidate_buildfile
|
335
336
|
args << '--environment' << Buildr.environment unless Buildr.environment.to_s.empty?
|
336
337
|
args << 'clean' << 'upload' << 'DEBUG=no'
|
337
|
-
|
338
|
+
sh *args
|
338
339
|
end
|
339
340
|
tag_release resolve_tag
|
340
341
|
update_version_to_next if this_version != resolve_next_version(this_version)
|
data/lib/buildr/core/common.rb
CHANGED
@@ -46,9 +46,10 @@ module Buildr #:nodoc:
|
|
46
46
|
# For example:
|
47
47
|
# write('README') { read('README').sub("${build}", Time.now) }
|
48
48
|
def write(name, content = nil)
|
49
|
-
|
49
|
+
filename = name.to_s
|
50
|
+
mkpath File.dirname(filename)
|
50
51
|
content = yield if block_given?
|
51
|
-
File.open(
|
52
|
+
File.open(filename, 'wb') { |file| file.write content.to_s }
|
52
53
|
content.to_s
|
53
54
|
end
|
54
55
|
|
data/lib/buildr/core/compile.rb
CHANGED
@@ -86,7 +86,6 @@ module Buildr #:nodoc:
|
|
86
86
|
def applies_to?(project, task)
|
87
87
|
paths = task.sources + [sources].flatten.map { |src| Array(project.path_to(:source, task.usage, src.to_sym)) }
|
88
88
|
paths.flatten!
|
89
|
-
ext_glob = Array(source_ext).join(',')
|
90
89
|
|
91
90
|
paths.each { |path|
|
92
91
|
Find.find(path) {|found|
|
data/lib/buildr/core/generate.rb
CHANGED
@@ -58,7 +58,7 @@ module Buildr #:nodoc:
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def has_eclipse_project?
|
61
|
-
candidates = Dir.glob("**/.project")
|
61
|
+
candidates = Dir.glob("**/.project", File::FNM_DOTMATCH)
|
62
62
|
return false if candidates.size == 0
|
63
63
|
candidates.find { |x| get_project_natures(x) }
|
64
64
|
return candidates.size > 0
|
@@ -134,7 +134,7 @@ EOF
|
|
134
134
|
script << " # dependencies << 'junit should be commented out and replace by correct ARTIFACT definition. Eg"
|
135
135
|
script << " # dependencies << 'junit:junit:jar:3.8.2'"
|
136
136
|
script << setLayout('src', 'bin') # default values for eclipse
|
137
|
-
dot_projects = Dir.glob('**/.project').find_all { |dot_project| get_project_natures(dot_project) }
|
137
|
+
dot_projects = Dir.glob('**/.project', File::FNM_DOTMATCH).find_all { |dot_project| get_project_natures(dot_project) }
|
138
138
|
dot_projects.sort.each { |dot_project| from_eclipse(File.dirname(dot_project), false) } if dot_projects
|
139
139
|
else
|
140
140
|
# Skip fragments. Buildr cannot handle it without the help of buildr4osgi
|
data/lib/buildr/core/project.rb
CHANGED
@@ -251,7 +251,7 @@ module Buildr #:nodoc:
|
|
251
251
|
end
|
252
252
|
project ||= @projects[name] # Not found in scope.
|
253
253
|
raise "No such project #{name}" unless project
|
254
|
-
project.invoke
|
254
|
+
project.invoke unless Buildr.application.current_scope.join(":").to_s == project.name.to_s
|
255
255
|
project
|
256
256
|
end
|
257
257
|
|
data/lib/buildr/core/shell.rb
CHANGED
@@ -271,7 +271,10 @@ module URI
|
|
271
271
|
options ||= {}
|
272
272
|
connect do |http|
|
273
273
|
trace "Requesting #{self}"
|
274
|
-
headers = {
|
274
|
+
headers = {}
|
275
|
+
headers['If-Modified-Since'] = CGI.rfc1123_date(options[:modified].utc) if options[:modified]
|
276
|
+
headers['Cache-Control'] = 'no-cache'
|
277
|
+
headers['User-Agent'] = "Buildr-#{Buildr::VERSION}"
|
275
278
|
request = Net::HTTP::Get.new(request_uri.empty? ? '/' : request_uri, headers)
|
276
279
|
request.basic_auth self.user, self.password if self.user
|
277
280
|
http.request request do |response|
|
data/lib/buildr/core/util.rb
CHANGED
@@ -76,6 +76,14 @@ module Buildr #:nodoc:
|
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
+
def uuid
|
80
|
+
return SecureRandom.uuid if SecureRandom.respond_to?(:uuid)
|
81
|
+
ary = SecureRandom.random_bytes(16).unpack("NnnnnN")
|
82
|
+
ary[2] = (ary[2] & 0x0fff) | 0x4000
|
83
|
+
ary[3] = (ary[3] & 0x3fff) | 0x8000
|
84
|
+
"%08x-%04x-%04x-%04x-%04x%08x" % ary
|
85
|
+
end
|
86
|
+
|
79
87
|
# Return the path to the first argument, starting from the path provided by the
|
80
88
|
# second argument.
|
81
89
|
#
|
data/lib/buildr/ide/idea.rb
CHANGED
@@ -100,9 +100,9 @@ module Buildr #:nodoc:
|
|
100
100
|
@components ||= []
|
101
101
|
end
|
102
102
|
|
103
|
-
def create_composite_component(name, components)
|
103
|
+
def create_composite_component(name, attrs, components)
|
104
104
|
return nil if components.empty?
|
105
|
-
component = self.create_component(name)
|
105
|
+
component = self.create_component(name, attrs)
|
106
106
|
components.each do |element|
|
107
107
|
element = element.call if element.is_a?(Proc)
|
108
108
|
component.add_element element
|
@@ -298,60 +298,102 @@ module Buildr #:nodoc:
|
|
298
298
|
|
299
299
|
def add_web_facet(options = {})
|
300
300
|
name = options[:name] || "Web"
|
301
|
-
|
302
|
-
default_webroots =
|
301
|
+
default_webroots = {}
|
302
|
+
buildr_project.assets.paths.each {|p| default_webroots[p] = "/" }
|
303
303
|
webroots = options[:webroots] || default_webroots
|
304
|
-
|
305
|
-
|
306
|
-
|
304
|
+
default_deployment_descriptors = []
|
305
|
+
['web.xml', 'sun-web.xml', 'glassfish-web.xml', 'jetty-web.xml', 'geronimo-web.xml',
|
306
|
+
'context.xml', 'weblogic.xml',
|
307
|
+
'jboss-deployment-structure.xml', 'jboss-web.xml',
|
308
|
+
'ibm-web-bnd.xml', 'ibm-web-ext.xml', 'ibm-web-ext-pme.xml'].
|
309
|
+
each do |descriptor|
|
310
|
+
webroots.each_pair do |path, relative_url|
|
311
|
+
next unless relative_url == "/"
|
312
|
+
d = "#{path}/WEB-INF/#{descriptor}"
|
313
|
+
default_deployment_descriptors << d if File.exist?(d)
|
314
|
+
end
|
315
|
+
end
|
316
|
+
deployment_descriptors = options[:deployment_descriptors] || default_deployment_descriptors
|
307
317
|
|
308
318
|
add_facet(name, "web") do |f|
|
309
319
|
f.configuration do |c|
|
310
320
|
c.descriptors do |d|
|
311
|
-
|
312
|
-
d.deploymentDescriptor :name =>
|
321
|
+
deployment_descriptors.each do |deployment_descriptor|
|
322
|
+
d.deploymentDescriptor :name => File.basename(deployment_descriptor), :url => file_path(deployment_descriptor)
|
313
323
|
end
|
314
324
|
end
|
315
325
|
c.webroots do |w|
|
316
|
-
webroots.
|
317
|
-
w.root :url => file_path(webroot), :relative =>
|
326
|
+
webroots.each_pair do |webroot, relative_url|
|
327
|
+
w.root :url => file_path(webroot), :relative => relative_url
|
318
328
|
end
|
319
329
|
end
|
320
330
|
end
|
331
|
+
default_enable_jsf = webroots.select{|webroot| File.exist?("#{webroot}/WEB-INF/faces-config.xml")}
|
332
|
+
enable_jsf = options[:enable_jsf].nil? ? default_enable_jsf : options[:enable_jsf]
|
333
|
+
enable_jsf = false if root_project.ipr? && root_project.ipr.version >= '13'
|
334
|
+
f.facet(:type => 'jsf', :name => 'JSF') do |jsf|
|
335
|
+
jsf.configuration
|
336
|
+
end if enable_jsf
|
321
337
|
end
|
322
338
|
end
|
323
339
|
|
324
340
|
def add_jruby_facet(options = {})
|
325
341
|
name = options[:name] || "JRuby"
|
326
|
-
|
342
|
+
|
343
|
+
ruby_version_file = buildr_project._('.ruby-version')
|
344
|
+
default_jruby_version = File.exist?(ruby_version_file) ? "rbenv: #{IO.read(ruby_version_file).strip}" : 'jruby-1.6.7.2'
|
345
|
+
jruby_version = options[:jruby_version] || default_jruby_version
|
327
346
|
add_facet(name, "JRUBY") do |f|
|
328
|
-
f.configuration
|
347
|
+
f.configuration do |c|
|
329
348
|
c.JRUBY_FACET_CONFIG_ID :NAME => "JRUBY_SDK_NAME", :VALUE => jruby_version
|
349
|
+
c.LOAD_PATH :number => "0"
|
350
|
+
c.I18N_FOLDERS :number => "0"
|
330
351
|
end
|
331
352
|
end
|
332
353
|
end
|
333
354
|
|
334
355
|
def add_jpa_facet(options = {})
|
335
356
|
name = options[:name] || "JPA"
|
357
|
+
|
358
|
+
source_roots = [buildr_project.iml.main_source_directories, buildr_project.compile.sources, buildr_project.resources.sources].flatten.compact
|
359
|
+
default_deployment_descriptors = []
|
360
|
+
['orm.xml', 'persistence.xml'].
|
361
|
+
each do |descriptor|
|
362
|
+
source_roots.each do |path|
|
363
|
+
d = "#{path}/META-INF/#{descriptor}"
|
364
|
+
default_deployment_descriptors << d if File.exist?(d)
|
365
|
+
end
|
366
|
+
end
|
367
|
+
deployment_descriptors = options[:deployment_descriptors] || default_deployment_descriptors
|
368
|
+
|
336
369
|
factory_entry = options[:factory_entry] || buildr_project.name.to_s
|
337
370
|
validation_enabled = options[:validation_enabled].nil? ? true : options[:validation_enabled]
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
371
|
+
if options[:provider_enabled]
|
372
|
+
provider = options[:provider_enabled]
|
373
|
+
else
|
374
|
+
provider = nil
|
375
|
+
{'org.hibernate.ejb.HibernatePersistence' => 'Hibernate',
|
376
|
+
'org.eclipse.persistence.jpa.PersistenceProvider' => 'EclipseLink'}.
|
377
|
+
each_pair do |match, candidate_provider|
|
378
|
+
deployment_descriptors.each do |descriptor|
|
379
|
+
if File.exist?(descriptor) && /#{Regexp.escape(match)}/ =~ IO.read(descriptor)
|
380
|
+
provider = candidate_provider
|
381
|
+
end
|
382
|
+
end
|
383
|
+
end
|
384
|
+
end
|
385
|
+
|
343
386
|
add_facet(name, "jpa") do |f|
|
344
387
|
f.configuration do |c|
|
345
|
-
|
346
|
-
|
388
|
+
if provider
|
389
|
+
c.setting :name => "validation-enabled", :value => validation_enabled
|
390
|
+
c.setting :name => "provider-name", :value => provider
|
391
|
+
end
|
347
392
|
c.tag!('datasource-mapping') do |ds|
|
348
393
|
ds.tag!('factory-entry', :name => factory_entry)
|
349
394
|
end
|
350
|
-
|
351
|
-
c.deploymentDescriptor :name =>
|
352
|
-
end
|
353
|
-
if File.exist?(orm_xml) || default_orm_xml != orm_xml
|
354
|
-
c.deploymentDescriptor :name => 'orm.xml', :url => file_path(orm_xml)
|
395
|
+
deployment_descriptors.each do |descriptor|
|
396
|
+
c.deploymentDescriptor :name => File.basename(descriptor), :url => file_path(descriptor)
|
355
397
|
end
|
356
398
|
end
|
357
399
|
end
|
@@ -359,15 +401,27 @@ module Buildr #:nodoc:
|
|
359
401
|
|
360
402
|
def add_ejb_facet(options = {})
|
361
403
|
name = options[:name] || "EJB"
|
362
|
-
|
363
|
-
|
364
|
-
ejb_roots = options[:ejb_roots] ||
|
404
|
+
|
405
|
+
default_ejb_roots = [buildr_project.iml.main_source_directories, buildr_project.compile.sources, buildr_project.resources.sources].flatten.compact
|
406
|
+
ejb_roots = options[:ejb_roots] || default_ejb_roots
|
407
|
+
|
408
|
+
default_deployment_descriptors = []
|
409
|
+
['ejb-jar.xml', 'glassfish-ejb-jar.xml', 'ibm-ejb-jar-bnd.xml', 'ibm-ejb-jar-ext-pme.xml', 'ibm-ejb-jar-ext.xml',
|
410
|
+
'jboss.xml', 'jbosscmp-jdbc.xml', 'openejb-jar.xml', 'sun-cmp-mapping.xml', 'sun-ejb-jar.xml',
|
411
|
+
'weblogic-cmp-rdbms-jar.xml', 'weblogic-ejb-jar.xml'].
|
412
|
+
each do |descriptor|
|
413
|
+
ejb_roots.each do |path|
|
414
|
+
d = "#{path}/WEB-INF/#{descriptor}"
|
415
|
+
default_deployment_descriptors << d if File.exist?(d)
|
416
|
+
end
|
417
|
+
end
|
418
|
+
deployment_descriptors = options[:deployment_descriptors] || default_deployment_descriptors
|
365
419
|
|
366
420
|
add_facet(name, "ejb") do |facet|
|
367
421
|
facet.configuration do |c|
|
368
422
|
c.descriptors do |d|
|
369
|
-
|
370
|
-
d.deploymentDescriptor :name =>
|
423
|
+
deployment_descriptors.each do |deployment_descriptor|
|
424
|
+
d.deploymentDescriptor :name => File.basename(deployment_descriptor), :url => file_path(deployment_descriptor)
|
371
425
|
end
|
372
426
|
end
|
373
427
|
c.ejbRoots do |e|
|
@@ -381,6 +435,14 @@ module Buildr #:nodoc:
|
|
381
435
|
|
382
436
|
protected
|
383
437
|
|
438
|
+
def root_project
|
439
|
+
p = buildr_project
|
440
|
+
while p.parent
|
441
|
+
p = p.parent
|
442
|
+
end
|
443
|
+
p
|
444
|
+
end
|
445
|
+
|
384
446
|
def test_dependency_details
|
385
447
|
main_dependencies_paths = main_dependencies.map(&:to_s)
|
386
448
|
target_dir = buildr_project.compile.target.to_s
|
@@ -415,7 +477,7 @@ module Buildr #:nodoc:
|
|
415
477
|
end
|
416
478
|
|
417
479
|
def facet_component
|
418
|
-
create_composite_component("FacetManager", self.facets)
|
480
|
+
create_composite_component("FacetManager", {}, self.facets)
|
419
481
|
end
|
420
482
|
|
421
483
|
def module_root_component
|
@@ -553,17 +615,24 @@ module Buildr #:nodoc:
|
|
553
615
|
class IdeaProject < IdeaFile
|
554
616
|
attr_accessor :extra_modules
|
555
617
|
attr_accessor :artifacts
|
618
|
+
attr_accessor :data_sources
|
556
619
|
attr_accessor :configurations
|
557
620
|
attr_writer :jdk_version
|
621
|
+
attr_writer :version
|
558
622
|
|
559
623
|
def initialize(buildr_project)
|
560
624
|
super()
|
561
625
|
@buildr_project = buildr_project
|
562
626
|
@extra_modules = []
|
563
627
|
@artifacts = []
|
628
|
+
@data_sources = []
|
564
629
|
@configurations = []
|
565
630
|
end
|
566
631
|
|
632
|
+
def version
|
633
|
+
@version || "12"
|
634
|
+
end
|
635
|
+
|
567
636
|
def jdk_version
|
568
637
|
@jdk_version ||= buildr_project.compile.options.source || "1.6"
|
569
638
|
end
|
@@ -584,47 +653,86 @@ module Buildr #:nodoc:
|
|
584
653
|
end
|
585
654
|
end
|
586
655
|
|
656
|
+
def add_postgres_data_source(name, options = {})
|
657
|
+
if options[:url].nil? && options[:database]
|
658
|
+
default_url = "jdbc:postgresql://#{(options[:host] || "127.0.0.1")}:#{(options[:port] || "5432")}/#{options[:database]}"
|
659
|
+
end
|
660
|
+
|
661
|
+
params = {
|
662
|
+
:driver => 'org.postgresql.Driver',
|
663
|
+
:url => default_url,
|
664
|
+
:username => ENV["USER"],
|
665
|
+
:dialect => 'PostgreSQL',
|
666
|
+
:classpath => ["org.postgresql:postgresql:jar:9.2-1003-jdbc4"]
|
667
|
+
}.merge(options)
|
668
|
+
add_data_source(name, params)
|
669
|
+
end
|
670
|
+
|
671
|
+
def add_sql_server_data_source(name, options = {})
|
672
|
+
if options[:url].nil? && options[:database]
|
673
|
+
default_url = "jdbc:jtds:sqlserver://#{(options[:host] || "127.0.0.1")}:#{(options[:port] || "1433")}/#{options[:database]}"
|
674
|
+
end
|
675
|
+
|
676
|
+
params = {
|
677
|
+
:driver => 'net.sourceforge.jtds.jdbc.Driver',
|
678
|
+
:url => default_url,
|
679
|
+
:username => ENV["USER"],
|
680
|
+
:dialect => 'TSQL',
|
681
|
+
:classpath => ['net.sourceforge.jtds:jtds:jar:1.2.7']
|
682
|
+
}.merge(options)
|
683
|
+
add_data_source(name, params)
|
684
|
+
end
|
685
|
+
|
686
|
+
def add_data_source(name, options = {})
|
687
|
+
add_to_composite_component(self.data_sources) do |xml|
|
688
|
+
data_source_options = {
|
689
|
+
:source => "LOCAL",
|
690
|
+
:name => name,
|
691
|
+
:uuid => Buildr::Util.uuid
|
692
|
+
}
|
693
|
+
classpath = options[:classpath] || []
|
694
|
+
xml.tag!("data-source", data_source_options) do |xml|
|
695
|
+
xml.tag!("synchronize", (options[:synchronize]||"true"))
|
696
|
+
xml.tag!("jdbc-driver", options[:driver]) if options[:driver]
|
697
|
+
xml.tag!("jdbc-url", options[:url]) if options[:url]
|
698
|
+
xml.tag!("user-name", options[:username]) if options[:username]
|
699
|
+
xml.tag!("user-password", encrypt(options[:password])) if options[:password]
|
700
|
+
xml.tag!("default-dialect", options[:dialect]) if options[:dialect]
|
701
|
+
|
702
|
+
xml.libraries do |xml|
|
703
|
+
classpath.each do |classpath_element|
|
704
|
+
a = Buildr.artifact(classpath_element)
|
705
|
+
a.invoke
|
706
|
+
xml.library do |xml|
|
707
|
+
xml.tag!("url", resolve_path(a.to_s))
|
708
|
+
end
|
709
|
+
end
|
710
|
+
end if classpath.size > 0
|
711
|
+
end
|
712
|
+
end
|
713
|
+
end
|
714
|
+
|
587
715
|
def add_exploded_war_artifact(project, options = {})
|
588
|
-
artifact_name = options
|
589
|
-
|
716
|
+
artifact_name = to_artifact_name(project, options)
|
717
|
+
artifacts = options[:artifacts] || []
|
590
718
|
|
591
|
-
add_artifact(artifact_name, "exploded-war", build_on_make) do |xml|
|
719
|
+
add_artifact(artifact_name, "exploded-war", build_on_make(options)) do |xml|
|
592
720
|
dependencies = (options[:dependencies] || ([project] + project.compile.dependencies)).flatten
|
593
721
|
libraries, projects = partition_dependencies(dependencies)
|
594
722
|
|
595
|
-
|
596
|
-
output_dir = options[:output_dir] || project._(:artifacts, artifact_name)
|
597
|
-
xml.tag!('output-path', output_dir)
|
598
|
-
|
723
|
+
emit_output_path(xml, artifact_name, options)
|
599
724
|
xml.root :id => "root" do
|
600
725
|
xml.element :id => "directory", :name => "WEB-INF" do
|
601
726
|
xml.element :id => "directory", :name => "classes" do
|
602
|
-
projects
|
603
|
-
xml.element :id => "module-output", :name => p.iml.id
|
604
|
-
end
|
605
|
-
if options[:enable_jpa]
|
606
|
-
module_names = options[:jpa_module_names] || [project.iml.id]
|
607
|
-
module_names.each do |module_name|
|
608
|
-
facet_name = options[:jpa_facet_name] || "JPA"
|
609
|
-
xml.element :id => "jpa-descriptors", :facet => "#{module_name}/jpa/#{facet_name}"
|
610
|
-
end
|
611
|
-
end
|
612
|
-
if options[:enable_ejb]
|
613
|
-
module_names = options[:ejb_module_names] || [project.iml.id]
|
614
|
-
module_names.each do |module_name|
|
615
|
-
facet_name = options[:ejb_facet_name] || "EJB"
|
616
|
-
xml.element :id => "javaee-facet-resources", :facet => "#{module_name}/ejb/#{facet_name}"
|
617
|
-
end
|
618
|
-
end
|
727
|
+
artifact_content(xml, project, projects, options)
|
619
728
|
end
|
620
729
|
xml.element :id => "directory", :name => "lib" do
|
621
|
-
libraries
|
622
|
-
|
623
|
-
end
|
730
|
+
emit_libraries(xml, libraries)
|
731
|
+
emit_jar_artifacts(xml, artifacts)
|
624
732
|
end
|
625
733
|
end
|
626
734
|
|
627
|
-
if options[:enable_war].nil? || options[:enable_war]
|
735
|
+
if options[:enable_war].nil? || options[:enable_war] || (options[:war_module_names] && options[:war_module_names].size > 0)
|
628
736
|
module_names = options[:war_module_names] || [project.iml.id]
|
629
737
|
module_names.each do |module_name|
|
630
738
|
facet_name = options[:war_facet_name] || "Web"
|
@@ -632,7 +740,7 @@ module Buildr #:nodoc:
|
|
632
740
|
end
|
633
741
|
end
|
634
742
|
|
635
|
-
if options[:enable_gwt]
|
743
|
+
if options[:enable_gwt] || (options[:gwt_module_names] && options[:gwt_module_names].size > 0)
|
636
744
|
module_names = options[:gwt_module_names] || [project.iml.id]
|
637
745
|
module_names.each do |module_name|
|
638
746
|
facet_name = options[:gwt_facet_name] || "GWT"
|
@@ -644,76 +752,53 @@ module Buildr #:nodoc:
|
|
644
752
|
end
|
645
753
|
|
646
754
|
def add_exploded_ear_artifact(project, options ={})
|
755
|
+
artifact_name = to_artifact_name(project, options)
|
647
756
|
|
648
|
-
artifact_name
|
649
|
-
build_on_make = options[:build_on_make].nil? ? true : options[:build_on_make]
|
650
|
-
|
651
|
-
add_artifact(artifact_name, "exploded-ear", build_on_make) do |xml|
|
757
|
+
add_artifact(artifact_name, "exploded-ear", build_on_make(options)) do |xml|
|
652
758
|
dependencies = (options[:dependencies] || ([project] + project.compile.dependencies)).flatten
|
653
759
|
libraries, projects = partition_dependencies(dependencies)
|
654
760
|
|
655
|
-
|
656
|
-
output_dir = options[:output_dir] || project._(:artifacts, artifact_name)
|
657
|
-
xml.tag!('output-path', output_dir)
|
658
|
-
|
761
|
+
emit_output_path(xml, artifact_name, options)
|
659
762
|
xml.root :id => "root" do
|
660
|
-
|
661
|
-
xml.element :id => "module-output", :name => project.iml.id
|
662
|
-
|
663
|
-
projects.each do |p|
|
664
|
-
xml.element :id => "directory", :name => p.iml.id do
|
665
|
-
xml.element :id => "module-output", :name => p.iml.id
|
666
|
-
end
|
667
|
-
end
|
668
|
-
|
763
|
+
emit_module_output(xml, projects)
|
669
764
|
xml.element :id => "directory", :name => "lib" do
|
670
|
-
libraries
|
671
|
-
xml.element :id => "file-copy", :path => resolve_path(dependency_path)
|
672
|
-
end
|
765
|
+
emit_libraries(xml, libraries)
|
673
766
|
end
|
767
|
+
end
|
768
|
+
end
|
769
|
+
end
|
674
770
|
|
771
|
+
def add_jar_artifact(project, options = {})
|
772
|
+
artifact_name = to_artifact_name(project, options)
|
773
|
+
|
774
|
+
dependencies = (options[:dependencies] || [project]).flatten
|
775
|
+
libraries, projects = partition_dependencies(dependencies)
|
776
|
+
raise "Unable to add non-project dependencies (#{libraries.inspect}) to jar artifact" if libraries.size > 0
|
777
|
+
|
778
|
+
jar_name = "#{artifact_name}.jar"
|
779
|
+
add_artifact(jar_name, "jar", build_on_make(options)) do |xml|
|
780
|
+
emit_output_path(xml, artifact_name, options)
|
781
|
+
xml.root(:id => "archive", :name => jar_name) do
|
782
|
+
artifact_content(xml, project, projects, options)
|
675
783
|
end
|
676
784
|
end
|
677
785
|
end
|
678
786
|
|
679
787
|
def add_exploded_ejb_artifact(project, options = {})
|
788
|
+
artifact_name = to_artifact_name(project, options)
|
680
789
|
|
681
|
-
artifact_name
|
682
|
-
|
683
|
-
|
684
|
-
add_artifact(artifact_name, "exploded-ejb", build_on_make) do |xml|
|
685
|
-
dependencies = (options[:dependencies] || ([project] + project.compile.dependencies)).flatten
|
790
|
+
add_artifact(artifact_name, "exploded-ejb", build_on_make(options)) do |xml|
|
791
|
+
dependencies = (options[:dependencies] || [project]).flatten
|
686
792
|
libraries, projects = partition_dependencies(dependencies)
|
793
|
+
raise "Unable to add non-project dependencies (#{libraries.inspect}) to ejb artifact" if libraries.size > 0
|
687
794
|
|
688
|
-
|
689
|
-
output_dir = options[:output_dir] || project._(:artifacts, artifact_name)
|
690
|
-
xml.tag!('output-path', output_dir)
|
691
|
-
|
795
|
+
emit_output_path(xml, artifact_name, options)
|
692
796
|
xml.root :id => "root" do
|
693
|
-
|
694
|
-
xml.element :id => "module-output", :name => project.iml.id
|
695
|
-
|
696
|
-
if options[:enable_jpa]
|
697
|
-
module_names = options[:jpa_module_names] || [project.iml.id]
|
698
|
-
module_names.each do |module_name|
|
699
|
-
facet_name = options[:jpa_facet_name] || "JPA"
|
700
|
-
xml.element :id => "jpa-descriptors", :facet => "#{module_name}/jpa/#{facet_name}"
|
701
|
-
end
|
702
|
-
end
|
703
|
-
|
704
|
-
if options[:enable_ejb].nil? || options[:enable_ejb]
|
705
|
-
module_names = options[:ejb_module_names] || [project.iml.id]
|
706
|
-
module_names.each do |module_name|
|
707
|
-
facet_name = options[:ejb_facet_name] || "EJB"
|
708
|
-
xml.element :id => "javaee-facet-resources", :facet => "#{module_name}/ejb/#{facet_name}"
|
709
|
-
end
|
710
|
-
end
|
711
|
-
|
797
|
+
artifact_content(xml, project, projects, options)
|
712
798
|
end
|
713
799
|
end
|
714
800
|
end
|
715
801
|
|
716
|
-
|
717
802
|
def add_gwt_configuration(launch_page, project, options = {})
|
718
803
|
name = options[:name] || "Run #{launch_page}"
|
719
804
|
shell_parameters = options[:shell_parameters] || ""
|
@@ -733,6 +818,12 @@ module Buildr #:nodoc:
|
|
733
818
|
|
734
819
|
protected
|
735
820
|
|
821
|
+
def artifact_content(xml, project, projects, options)
|
822
|
+
emit_module_output(xml, projects)
|
823
|
+
emit_jpa_descriptors(xml, project, options)
|
824
|
+
emit_ejb_descriptors(xml, project, options)
|
825
|
+
end
|
826
|
+
|
736
827
|
def extension
|
737
828
|
"ipr"
|
738
829
|
end
|
@@ -748,6 +839,7 @@ module Buildr #:nodoc:
|
|
748
839
|
lambda { modules_component },
|
749
840
|
vcs_component,
|
750
841
|
artifacts_component,
|
842
|
+
lambda { data_sources_component },
|
751
843
|
configurations_component,
|
752
844
|
lambda { framework_detection_exclusion_component }
|
753
845
|
]
|
@@ -771,11 +863,11 @@ module Buildr #:nodoc:
|
|
771
863
|
attribs["version"] = "2"
|
772
864
|
attribs["languageLevel"] = "JDK_#{self.jdk_version.gsub('.', '_')}"
|
773
865
|
attribs["assert-keyword"] = "true"
|
774
|
-
attribs["jdk-15"] = "
|
866
|
+
attribs["jdk-15"] = (jdk_version >= "1.5").to_s
|
775
867
|
attribs["project-jdk-name"] = self.jdk_version
|
776
868
|
attribs["project-jdk-type"] = "JavaSDK"
|
777
869
|
create_component("ProjectRootManager", attribs) do |xml|
|
778
|
-
xml.output("url" =>
|
870
|
+
xml.output("url" => file_path(buildr_project._(:target, :idea, :project_out)))
|
779
871
|
end
|
780
872
|
end
|
781
873
|
|
@@ -840,12 +932,16 @@ module Buildr #:nodoc:
|
|
840
932
|
end
|
841
933
|
end
|
842
934
|
|
935
|
+
def data_sources_component
|
936
|
+
create_composite_component("DataSourceManagerImpl", {:format => "xml", :hash => "3208837817"}, self.data_sources)
|
937
|
+
end
|
938
|
+
|
843
939
|
def artifacts_component
|
844
|
-
create_composite_component("ArtifactManager", self.artifacts)
|
940
|
+
create_composite_component("ArtifactManager", {}, self.artifacts)
|
845
941
|
end
|
846
942
|
|
847
943
|
def configurations_component
|
848
|
-
create_composite_component("ProjectRunConfigurationManager", self.configurations)
|
944
|
+
create_composite_component("ProjectRunConfigurationManager", {}, self.configurations)
|
849
945
|
end
|
850
946
|
|
851
947
|
def resolve_path(path)
|
@@ -854,6 +950,62 @@ module Buildr #:nodoc:
|
|
854
950
|
|
855
951
|
private
|
856
952
|
|
953
|
+
def to_artifact_name(project, options)
|
954
|
+
options[:name] || project.iml.id
|
955
|
+
end
|
956
|
+
|
957
|
+
def build_on_make(options)
|
958
|
+
options[:build_on_make].nil? ? false : options[:build_on_make]
|
959
|
+
end
|
960
|
+
|
961
|
+
def emit_jar_artifacts(xml, artifacts)
|
962
|
+
artifacts.each do |p|
|
963
|
+
xml.element :id => "artifact", 'artifact-name' => "#{p}.jar"
|
964
|
+
end
|
965
|
+
end
|
966
|
+
|
967
|
+
def emit_libraries(xml, libraries)
|
968
|
+
libraries.each(&:invoke).map(&:to_s).each do |dependency_path|
|
969
|
+
xml.element :id => "file-copy", :path => resolve_path(dependency_path)
|
970
|
+
end
|
971
|
+
end
|
972
|
+
|
973
|
+
def emit_module_output(xml, projects)
|
974
|
+
projects.each do |p|
|
975
|
+
xml.element :id => "module-output", :name => p.iml.id
|
976
|
+
end
|
977
|
+
end
|
978
|
+
|
979
|
+
def emit_output_path(xml, artifact_name, options)
|
980
|
+
## The content here can not be indented
|
981
|
+
output_dir = options[:output_dir] || buildr_project._(:artifacts, artifact_name)
|
982
|
+
xml.tag!('output-path', resolve_path(output_dir))
|
983
|
+
end
|
984
|
+
|
985
|
+
def emit_ejb_descriptors(xml, project, options)
|
986
|
+
if options[:enable_ejb] || (options[:ejb_module_names] && options[:ejb_module_names].size > 0)
|
987
|
+
module_names = options[:ejb_module_names] || [project.iml.id]
|
988
|
+
module_names.each do |module_name|
|
989
|
+
facet_name = options[:ejb_facet_name] || "EJB"
|
990
|
+
xml.element :id => "javaee-facet-resources", :facet => "#{module_name}/ejb/#{facet_name}"
|
991
|
+
end
|
992
|
+
end
|
993
|
+
end
|
994
|
+
|
995
|
+
def emit_jpa_descriptors(xml, project, options)
|
996
|
+
if options[:enable_jpa] || (options[:jpa_module_names] && options[:jpa_module_names].size > 0)
|
997
|
+
module_names = options[:jpa_module_names] || [project.iml.id]
|
998
|
+
module_names.each do |module_name|
|
999
|
+
facet_name = options[:jpa_facet_name] || "JPA"
|
1000
|
+
xml.element :id => "jpa-descriptors", :facet => "#{module_name}/jpa/#{facet_name}"
|
1001
|
+
end
|
1002
|
+
end
|
1003
|
+
end
|
1004
|
+
|
1005
|
+
def encrypt(password)
|
1006
|
+
password.bytes.inject("") { |x, y| x + (y ^ 0xdfaa).to_s(16) }
|
1007
|
+
end
|
1008
|
+
|
857
1009
|
def partition_dependencies(dependencies)
|
858
1010
|
libraries = []
|
859
1011
|
projects = []
|
@@ -861,7 +1013,8 @@ module Buildr #:nodoc:
|
|
861
1013
|
dependencies.each do |dependency|
|
862
1014
|
artifacts = Buildr.artifacts(dependency)
|
863
1015
|
artifacts_as_strings = artifacts.map(&:to_s)
|
864
|
-
|
1016
|
+
all_projects = Buildr::Project.instance_variable_get("@projects").keys - [buildr_project.name]
|
1017
|
+
project = Buildr.projects(all_projects).detect do |project|
|
865
1018
|
[project.packages, project.compile.target, project.resources.target, project.test.compile.target, project.test.resources.target].flatten.
|
866
1019
|
detect { |component| artifacts_as_strings.include?(component.to_s) }
|
867
1020
|
end
|