buildr 1.4.6 → 1.4.7.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (116) hide show
  1. data/CHANGELOG +59 -0
  2. data/Rakefile +1 -1
  3. data/addon/buildr/antlr.rb +0 -4
  4. data/addon/buildr/bnd.rb +3 -1
  5. data/addon/buildr/checkstyle.rake +201 -0
  6. data/addon/buildr/cobertura.rb +0 -1
  7. data/addon/buildr/drb.rb +0 -2
  8. data/addon/buildr/emma.rb +0 -1
  9. data/addon/buildr/findbugs.rake +227 -0
  10. data/addon/buildr/hibernate.rb +0 -4
  11. data/addon/buildr/javacc.rb +0 -4
  12. data/addon/buildr/javancss.rake +155 -0
  13. data/addon/buildr/jdepend.rb +138 -24
  14. data/addon/buildr/jetty.rb +0 -5
  15. data/addon/buildr/jibx.rb +85 -86
  16. data/addon/buildr/openjpa.rb +0 -4
  17. data/addon/buildr/pmd.rake +164 -0
  18. data/addon/buildr/protobuf.rb +0 -1
  19. data/addon/buildr/xmlbeans.rb +0 -5
  20. data/buildr.gemspec +19 -8
  21. data/doc/_layouts/default.html +1 -0
  22. data/doc/contributing.textile +11 -2
  23. data/doc/download.textile +17 -5
  24. data/doc/index.textile +21 -46
  25. data/doc/installing.textile +18 -8
  26. data/doc/languages.textile +0 -38
  27. data/doc/more_stuff.textile +168 -12
  28. data/doc/packaging.textile +10 -0
  29. data/doc/settings_profiles.textile +2 -2
  30. data/lib/buildr.rb +67 -4
  31. data/lib/buildr/clojure.rb +0 -2
  32. data/lib/buildr/core/application.rb +23 -32
  33. data/lib/buildr/core/build.rb +0 -7
  34. data/lib/buildr/core/cc.rb +0 -5
  35. data/lib/buildr/core/checks.rb +0 -4
  36. data/lib/buildr/core/common.rb +0 -5
  37. data/lib/buildr/core/compile.rb +5 -10
  38. data/lib/buildr/core/environment.rb +0 -1
  39. data/lib/buildr/core/filter.rb +0 -5
  40. data/lib/buildr/core/generate.rb +0 -4
  41. data/lib/buildr/core/help.rb +1 -6
  42. data/lib/buildr/core/linux.rb +0 -1
  43. data/lib/buildr/core/osx.rb +0 -1
  44. data/lib/buildr/core/project.rb +0 -4
  45. data/lib/buildr/core/run.rb +0 -4
  46. data/lib/buildr/core/shell.rb +0 -5
  47. data/lib/buildr/core/test.rb +0 -6
  48. data/lib/buildr/core/transports.rb +4 -6
  49. data/lib/buildr/core/util.rb +0 -63
  50. data/lib/buildr/groovy/doc.rb +0 -3
  51. data/lib/buildr/groovy/shell.rb +0 -2
  52. data/lib/buildr/ide/eclipse.rb +0 -9
  53. data/lib/buildr/ide/eclipse/java.rb +0 -4
  54. data/lib/buildr/ide/eclipse/plugin.rb +0 -4
  55. data/lib/buildr/ide/eclipse/scala.rb +0 -4
  56. data/lib/buildr/ide/idea.rb +100 -51
  57. data/lib/buildr/java/ant.rb +0 -3
  58. data/lib/buildr/java/bdd.rb +1 -119
  59. data/lib/buildr/java/cobertura.rb +16 -10
  60. data/lib/buildr/java/commands.rb +33 -7
  61. data/lib/buildr/java/compiler.rb +0 -7
  62. data/lib/buildr/java/deprecated.rb +0 -4
  63. data/lib/buildr/java/doc.rb +0 -2
  64. data/lib/buildr/java/emma.rb +0 -4
  65. data/lib/buildr/java/jruby.rb +0 -2
  66. data/lib/buildr/java/packaging.rb +0 -4
  67. data/lib/buildr/java/pom.rb +19 -12
  68. data/lib/buildr/java/test_result.rb +0 -5
  69. data/lib/buildr/java/tests.rb +68 -6
  70. data/lib/buildr/packaging/archive.rb +0 -1
  71. data/lib/buildr/packaging/artifact.rb +19 -16
  72. data/lib/buildr/packaging/artifact_namespace.rb +51 -24
  73. data/lib/buildr/packaging/artifact_search.rb +1 -2
  74. data/lib/buildr/packaging/gems.rb +1 -13
  75. data/lib/buildr/packaging/package.rb +0 -6
  76. data/lib/buildr/packaging/tar.rb +2 -4
  77. data/lib/buildr/packaging/zip.rb +0 -1
  78. data/lib/buildr/packaging/ziptask.rb +0 -4
  79. data/lib/buildr/run.rb +0 -1
  80. data/lib/buildr/scala/bdd.rb +129 -11
  81. data/lib/buildr/scala/compiler.rb +53 -6
  82. data/lib/buildr/scala/doc.rb +6 -4
  83. data/lib/buildr/scala/org/apache/buildr/Specs2Runner.java +38 -0
  84. data/lib/buildr/scala/shell.rb +0 -4
  85. data/lib/buildr/scala/tests.rb +15 -6
  86. data/lib/buildr/shell.rb +0 -1
  87. data/lib/buildr/version.rb +1 -1
  88. data/rakelib/all-in-one.rake +20 -11
  89. data/rakelib/checks.rake +0 -31
  90. data/rakelib/doc.rake +86 -100
  91. data/rakelib/release.rake +1 -1
  92. data/rakelib/rspec.rake +1 -3
  93. data/rakelib/stage.rake +2 -9
  94. data/spec/addon/bnd_spec.rb +2 -2
  95. data/spec/addon/jaxb_xjc_spec.rb +5 -0
  96. data/spec/core/application_spec.rb +10 -63
  97. data/spec/core/cc_spec.rb +0 -1
  98. data/spec/core/compile_spec.rb +11 -0
  99. data/spec/ide/idea_spec.rb +60 -0
  100. data/spec/java/bdd_spec.rb +8 -218
  101. data/spec/java/compiler_spec.rb +11 -8
  102. data/spec/java/tests_spec.rb +185 -0
  103. data/spec/packaging/artifact_namespace_spec.rb +15 -0
  104. data/spec/packaging/artifact_spec.rb +25 -0
  105. data/spec/sandbox.rb +3 -1
  106. data/spec/scala/bdd_spec.rb +111 -8
  107. data/spec/scala/tests_spec.rb +5 -1
  108. data/spec/spec_helpers.rb +3 -3
  109. metadata +377 -465
  110. data/lib/buildr/core.rb +0 -34
  111. data/lib/buildr/ide.rb +0 -19
  112. data/lib/buildr/java.rb +0 -25
  113. data/lib/buildr/java/jtestr_result.rb +0 -331
  114. data/lib/buildr/java/jtestr_runner.rb.erb +0 -116
  115. data/lib/buildr/packaging.rb +0 -25
  116. data/rakelib/setup.rake +0 -68
@@ -13,10 +13,6 @@
13
13
  # License for the specific language governing permissions and limitations under
14
14
  # the License.
15
15
 
16
-
17
- require 'buildr/java'
18
-
19
-
20
16
  module Buildr
21
17
 
22
18
  # Provides Hibernate Doclet and schema export tasks. Require explicitly using <code>require "buildr/hibernate"</code>.
@@ -13,10 +13,6 @@
13
13
  # License for the specific language governing permissions and limitations under
14
14
  # the License.
15
15
 
16
-
17
- require 'buildr/java'
18
-
19
-
20
16
  module Buildr
21
17
  # Provides JavaCC compile tasks. Require explicitly using <code>require "buildr/javacc"</code>.
22
18
  module JavaCC
@@ -0,0 +1,155 @@
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+ module Buildr
17
+ # Provides the <code>javancss:html</code> and <code>javancss:xml</code> tasks.
18
+ # Require explicitly using <code>require "buildr/javancss"</code>.
19
+ module JavaNCSS
20
+
21
+ class << self
22
+
23
+ # The specs for requirements
24
+ def dependencies
25
+ [
26
+ 'org.codehaus.javancss:javancss:jar:32.53',
27
+ 'javancss:ccl:jar:29.50',
28
+ 'javancss:jhbasic:jar:29.50'
29
+ ]
30
+ end
31
+
32
+ def javancss(output_file, source_paths, options = {})
33
+ dependencies = (options[:dependencies] || []) + self.dependencies
34
+ cp = Buildr.artifacts(dependencies).each(&:invoke).map(&:to_s)
35
+
36
+ args = []
37
+ args << "-all"
38
+ args << "-xml"
39
+ args << "-out"
40
+ args << output_file
41
+ args << "-recursive"
42
+ source_paths.each do |source_path|
43
+ args << source_path
44
+ end
45
+
46
+ begin
47
+ Java::Commands.java 'javancss.Main', *(args + [{:classpath => cp, :properties => options[:properties], :java_args => options[:java_args]}])
48
+ rescue => e
49
+ raise e if options[:fail_on_error]
50
+ end
51
+ end
52
+ end
53
+
54
+ class Config
55
+ def enabled?
56
+ !!@enabled
57
+ end
58
+
59
+ attr_writer :enabled
60
+
61
+ def html_enabled?
62
+ File.exist?(self.style_file)
63
+ end
64
+
65
+ attr_writer :config_directory
66
+
67
+ def config_directory
68
+ @config_directory || project._(:source, :main, :etc, :javancss)
69
+ end
70
+
71
+ attr_writer :report_dir
72
+
73
+ def report_dir
74
+ @report_dir || project._(:reports, :javancss)
75
+ end
76
+
77
+ attr_writer :fail_on_error
78
+
79
+ def fail_on_error?
80
+ @fail_on_error.nil? ? false : @fail_on_error
81
+ end
82
+
83
+ attr_writer :xml_output_file
84
+
85
+ def xml_output_file
86
+ @xml_output_file || "#{self.report_dir}/javancss.xml"
87
+ end
88
+
89
+ attr_writer :html_output_file
90
+
91
+ def html_output_file
92
+ @html_output_file || "#{self.report_dir}/javancss.html"
93
+ end
94
+
95
+ attr_writer :style_file
96
+
97
+ def style_file
98
+ @style_file || "#{self.config_directory}/javancss2html.xsl"
99
+ end
100
+
101
+ def source_paths
102
+ @source_paths ||= [self.project.compile.sources, self.project.test.compile.sources]
103
+ end
104
+
105
+ protected
106
+
107
+ def initialize(project)
108
+ @project = project
109
+ end
110
+
111
+ attr_reader :project
112
+
113
+ end
114
+
115
+ module ProjectExtension
116
+ include Extension
117
+
118
+ def javancss
119
+ @javancss ||= Buildr::JavaNCSS::Config.new(project)
120
+ end
121
+
122
+ after_define do |project|
123
+ if project.javancss.enabled?
124
+ desc "Generate JavaNCSS xml report."
125
+ project.task("javancss:xml") do
126
+ puts "JavaNCSS: Analyzing source code..."
127
+ mkdir_p File.dirname(project.javancss.xml_output_file)
128
+ Buildr::JavaNCSS.javancss(project.javancss.xml_output_file,
129
+ project.javancss.source_paths.flatten.compact,
130
+ :fail_on_error => project.javancss.fail_on_error?)
131
+ end
132
+
133
+ if project.javancss.html_enabled?
134
+ xml_task = project.task("javancss:xml")
135
+ desc "Generate JavaNCSS html report."
136
+ project.task("javancss:html" => xml_task) do
137
+ puts "JavaNCSS: Generating report"
138
+ mkdir_p File.dirname(project.javancss.html_output_file)
139
+ Buildr.ant "javancss" do |ant|
140
+ ant.xslt :in => project.javancss.xml_output_file,
141
+ :out => project.javancss.html_output_file,
142
+ :style => project.javancss.style_file
143
+ end
144
+ end
145
+
146
+ end
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
152
+
153
+ class Buildr::Project
154
+ include Buildr::JavaNCSS::ProjectExtension
155
+ end
@@ -13,48 +13,162 @@
13
13
  # License for the specific language governing permissions and limitations under
14
14
  # the License.
15
15
 
16
+ module Buildr
17
+ # Addes the <code>projectname:jdepend:swing</code>, <code>projectname:jdepend:text</code> and
18
+ # <code>projectname:jdepend:xml</code> tasks.
19
+ #
20
+ # Require explicitly using <code>require "buildr/jdepend"</code>.
21
+ module JDepend
16
22
 
17
- require 'buildr/java'
23
+ class << self
18
24
 
25
+ # The specs for requirements
26
+ def dependencies
27
+ [
28
+ 'jdepend:jdepend:jar:2.9.1'
29
+ ]
30
+ end
19
31
 
20
- module Buildr
32
+ def jdepend(output_file, target_paths, options = {})
33
+ dependencies = (options[:dependencies] || []) + self.dependencies
34
+ cp = Buildr.artifacts(dependencies).each(&:invoke).map(&:to_s)
21
35
 
22
- # Addes the <code>jdepend:swing</code>, <code>jdepend:text</code> and <code>jdepend:xml</code> tasks.
23
- # Require explicitly using <code>require "buildr/jdepend"</code>.
24
- module Jdepend
36
+ args = []
37
+ if output_file
38
+ args << "-file"
39
+ args << output_file
40
+ end
41
+ target_paths.each do |target_path|
42
+ file(target_path).invoke
43
+ args << target_path.to_s
44
+ end
25
45
 
26
- REQUIRES = ["jdepend:jdepend:jar:2.9.1"]
46
+ # If no output file then we must be trying to run the swing app
47
+ command = output_file ? 'jdepend.xmlui.JDepend' : 'jdepend.swingui.JDepend'
27
48
 
28
- class << self
49
+ begin
50
+ Java::Commands.java command, *(args + [{:classpath => cp, :properties => options[:properties], :java_args => options[:java_args]}])
51
+ rescue => e
52
+ raise e if options[:fail_on_error]
53
+ end
54
+ end
55
+ end
29
56
 
30
- def requires()
31
- @requires ||= Buildr.artifacts(REQUIRES).each(&:invoke).map(&:to_s)
57
+ class Config
58
+ def enabled?
59
+ !!@enabled
32
60
  end
33
61
 
34
- def paths()
35
- Project.projects.map(&:compile).each(&:invoke).map(&:target).
36
- map(&:to_s).select { |path| File.exist?(path) }.map { |path| File.expand_path(path) }
62
+ attr_writer :enabled
63
+
64
+ def html_enabled?
65
+ File.exist?(self.style_file)
37
66
  end
38
67
 
39
- end
68
+ attr_writer :config_directory
40
69
 
41
- namespace "jdepend" do
70
+ def config_directory
71
+ @config_directory || project._(:source, :main, :etc, :jdepend)
72
+ end
73
+
74
+ attr_writer :report_dir
75
+
76
+ def report_dir
77
+ @report_dir || project._(:reports, :jdepend)
78
+ end
79
+
80
+ attr_writer :fail_on_error
42
81
 
43
- desc "Runs JDepend on all your projects (Swing UI)"
44
- task "swing" do
45
- Java::Commands.java "jdepend.swingui.JDepend", paths, :classpath=>requires, :name=>"JDepend"
82
+ def fail_on_error?
83
+ @fail_on_error.nil? ? false : @fail_on_error
46
84
  end
47
85
 
48
- desc "Runs JDepend on all your projects (Text UI)"
49
- task "text" do
50
- Java::Commands.java "jdepend.textui.JDepend", paths, :classpath=>requires, :name=>"JDepend"
86
+ attr_writer :xml_output_file
87
+
88
+ def xml_output_file
89
+ @xml_output_file || "#{self.report_dir}/jdepend.xml"
51
90
  end
52
91
 
53
- desc "Runs JDepend on all your projects (XML output to jdepend.xml)"
54
- task "xml" do
55
- Java::Commands.java "jdepend.xmlui.JDepend", "-file", "jdepend.xml", paths, :classpath=>requires, :name=>"JDepend"
56
- puts "Created jdepend.xml"
92
+ attr_writer :html_output_file
93
+
94
+ def html_output_file
95
+ @html_output_file || "#{self.report_dir}/jdepend.html"
96
+ end
97
+
98
+ attr_writer :style_file
99
+
100
+ def style_file
101
+ @style_file || "#{self.config_directory}/jdepend.xsl"
102
+ end
103
+
104
+ def target_paths
105
+ @target_paths ||= [self.project.compile.target, self.project.test.compile.target]
106
+ end
107
+
108
+ def to_options
109
+ {
110
+ :fail_on_error => project.jdepend.fail_on_error?,
111
+ # Set user home so that jdepend.properties will be loaded from there if present
112
+ :properties => { 'user.home' => project.jdepend.config_directory }
113
+ }
114
+ end
115
+
116
+ protected
117
+
118
+ def initialize(project)
119
+ @project = project
120
+ end
121
+
122
+ attr_reader :project
123
+
124
+ end
125
+
126
+ module ProjectExtension
127
+ include Extension
128
+
129
+ def jdepend
130
+ @jdepend ||= Buildr::JDepend::Config.new(project)
131
+ end
132
+
133
+ after_define do |project|
134
+ if project.jdepend.enabled?
135
+ desc "Generate JDepend xml report."
136
+ project.task("jdepend:xml") do
137
+ puts "JDepend: Analyzing source code..."
138
+ mkdir_p File.dirname(project.jdepend.xml_output_file)
139
+ Buildr::JDepend.jdepend(project.jdepend.xml_output_file,
140
+ project.jdepend.target_paths.flatten.compact,
141
+ project.jdepend.to_options)
142
+ end
143
+
144
+ desc "Run JDepend with Swing UI."
145
+ project.task("jdepend:swing") do
146
+ puts "JDepend: Analyzing source code..."
147
+ Buildr::JDepend.jdepend(nil,
148
+ project.jdepend.target_paths.flatten.compact,
149
+ project.jdepend.to_options)
150
+ end
151
+
152
+ if project.jdepend.html_enabled?
153
+ xml_task = project.task("jdepend:xml")
154
+ desc "Generate JDepend html report."
155
+ project.task("jdepend:html" => xml_task) do
156
+ puts "JDepend: Generating report"
157
+ mkdir_p File.dirname(project.jdepend.html_output_file)
158
+ Buildr.ant "jdepend" do |ant|
159
+ ant.xslt :in => project.jdepend.xml_output_file,
160
+ :out => project.jdepend.html_output_file,
161
+ :style => project.jdepend.style_file
162
+ end
163
+ end
164
+
165
+ end
166
+ end
57
167
  end
58
168
  end
59
169
  end
60
170
  end
171
+
172
+ class Buildr::Project
173
+ include Buildr::JDepend::ProjectExtension
174
+ end
@@ -13,15 +13,10 @@
13
13
  # License for the specific language governing permissions and limitations under
14
14
  # the License.
15
15
 
16
-
17
16
  require 'uri'
18
17
  require 'net/http'
19
- require 'buildr/core/project'
20
- require 'buildr/java'
21
- require 'buildr/packaging'
22
18
  require 'thread'
23
19
 
24
-
25
20
  module Buildr
26
21
 
27
22
  # Provides a collection of tasks and methods for using Jetty, specifically as a server
@@ -1,86 +1,85 @@
1
- # Licensed to the Apache Software Foundation (ASF) under one or more
2
- # contributor license agreements. See the NOTICE file distributed with this
3
- # work for additional information regarding copyright ownership. The ASF
4
- # licenses this file to you under the Apache License, Version 2.0 (the
5
- # "License"); you may not use this file except in compliance with the License.
6
- # You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- # Unless required by applicable law or agreed to in writing, software
11
- # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
- # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
- # License for the specific language governing permissions and limitations under
14
- # the License.
15
-
16
-
17
- require 'java/java'
18
-
19
-
20
- module Buildr
21
-
22
- # Provides JiBX bytecode enhancement. Require explicitly using <code>require 'buildr/jibx'</code>.
23
- module JiBX
24
-
25
- JIBX_VERSION = '1.1.5'
26
- BCEL_VERSION = '5.2'
27
- STAX_VERSION = '1.0-2'
28
- XPP3_VERSION = '1.1.4c'
29
-
30
- REQUIRES = [ "org.jibx:jibx-bind:jar:#{JIBX_VERSION}",
31
- "org.jibx:jibx-run:jar:#{JIBX_VERSION}",
32
- "org.apache.bcel:bcel:jar:#{BCEL_VERSION}",
33
- "javax.xml.stream:stax-api:jar:#{STAX_VERSION}",
34
- "xpp3:xpp3:jar:#{XPP3_VERSION}" ]
35
-
36
- Java.classpath << REQUIRES
37
-
38
- class << self
39
-
40
- def bind(options)
41
- rake_check_options options, :classpath, :output, :binding, :target, :verbose, :load
42
- artifacts = Buildr.artifacts(options[:classpath]).each { |a| a.invoke }.map(&:to_s) + [options[:output].to_s]
43
- binding = file(options[:binding]).tap { |task| task.invoke }.to_s
44
-
45
- Buildr.ant 'jibx' do |ant|
46
- ant.taskdef :name=>'bind', :classname=>'org.jibx.binding.ant.CompileTask',
47
- :classpath => requires.join(File::PATH_SEPARATOR)
48
- ant.bind :verbose => options[:verbose].to_s, :load => options[:load].to_s, :binding=>options[:binding].to_s do
49
- ant.classpath :path => artifacts.join(File::PATH_SEPARATOR)
50
- end
51
- end
52
- end
53
-
54
- private
55
-
56
- def requires()
57
- @requires ||= Buildr.artifacts(REQUIRES).each { |artifact| artifact.invoke }.map(&:to_s)
58
- end
59
-
60
- end
61
-
62
- def jibx_bind(options = nil)
63
-
64
- # FIXME - add support for :bindingfileset and :classpathset
65
- # Note: either :binding or :bindingfileset should be set, and either
66
- # :classpath or :classpathset should be set, and options passed to
67
- # ant.bind should be adjusted accordingly. At present, only :binding
68
- # and :classpath are supported (which should be fine for most!)
69
- jibx_options = { :output => compile.target,
70
- :classpath => compile.classpath,
71
- :binding => path_to(:source, :main, :resources, 'META-INF/binding.xml'),
72
- :target => compile.target,
73
- :load => false,
74
- :verbose => false
75
- }
76
-
77
- JiBX.bind jibx_options.merge(options || {})
78
- end
79
-
80
- end
81
-
82
- class Project
83
- include JiBX
84
- end
85
- end
86
-
1
+ # Licensed to the Apache Software Foundation (ASF) under one or more
2
+ # contributor license agreements. See the NOTICE file distributed with this
3
+ # work for additional information regarding copyright ownership. The ASF
4
+ # licenses this file to you under the Apache License, Version 2.0 (the
5
+ # "License"); you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13
+ # License for the specific language governing permissions and limitations under
14
+ # the License.
15
+
16
+ require 'java/java'
17
+
18
+ module Buildr
19
+
20
+ # Provides JiBX bytecode enhancement. Require explicitly using <code>require 'buildr/jibx'</code>.
21
+ module JiBX
22
+
23
+ JIBX_VERSION = '1.1.5'
24
+ BCEL_VERSION = '5.2'
25
+ STAX_VERSION = '1.0-2'
26
+ XPP3_VERSION = '1.1.4c'
27
+
28
+ REQUIRES = ["org.jibx:jibx-bind:jar:#{JIBX_VERSION}",
29
+ "org.jibx:jibx-run:jar:#{JIBX_VERSION}",
30
+ "org.apache.bcel:bcel:jar:#{BCEL_VERSION}",
31
+ "javax.xml.stream:stax-api:jar:#{STAX_VERSION}",
32
+ "xpp3:xpp3:jar:#{XPP3_VERSION}"]
33
+
34
+ Java.classpath << REQUIRES
35
+
36
+ class << self
37
+
38
+ def bind(options)
39
+ rake_check_options options, :classpath, :output, :binding, :target, :verbose, :load
40
+ artifacts = Buildr.artifacts(options[:classpath]).each { |a| a.invoke }.map(&:to_s) + [options[:output].to_s]
41
+ binding = file(options[:binding]).tap { |task| task.invoke }.to_s
42
+
43
+ Buildr.ant 'jibx' do |ant|
44
+ ant.taskdef :name=>'bind',
45
+ :classname=>'org.jibx.binding.ant.CompileTask',
46
+ :classpath => requires.join(File::PATH_SEPARATOR)
47
+ ant.bind :verbose => options[:verbose].to_s, :load => options[:load].to_s, :binding=>options[:binding].to_s do
48
+ ant.classpath :path => artifacts.join(File::PATH_SEPARATOR)
49
+ end
50
+ end
51
+ end
52
+
53
+ private
54
+
55
+ def requires()
56
+ @requires ||= Buildr.artifacts(REQUIRES).each { |artifact| artifact.invoke }.map(&:to_s)
57
+ end
58
+
59
+ end
60
+
61
+ def jibx_bind(options = nil)
62
+
63
+ # FIXME - add support for :bindingfileset and :classpathset
64
+ # Note: either :binding or :bindingfileset should be set, and either
65
+ # :classpath or :classpathset should be set, and options passed to
66
+ # ant.bind should be adjusted accordingly. At present, only :binding
67
+ # and :classpath are supported (which should be fine for most!)
68
+ jibx_options = {:output => compile.target,
69
+ :classpath => compile.classpath,
70
+ :binding => path_to(:source, :main, :resources, 'META-INF/binding.xml'),
71
+ :target => compile.target,
72
+ :load => false,
73
+ :verbose => false
74
+ }
75
+
76
+ JiBX.bind jibx_options.merge(options || {})
77
+ end
78
+
79
+ end
80
+
81
+ class Project
82
+ include JiBX
83
+ end
84
+ end
85
+