buildr 1.3.5-java → 1.4.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +153 -8
- data/README.rdoc +1 -1
- data/addon/buildr/antlr.rb +5 -5
- data/addon/buildr/drb.rb +18 -18
- data/addon/buildr/hibernate.rb +18 -14
- data/addon/buildr/javacc.rb +4 -4
- data/addon/buildr/jetty.rb +5 -5
- data/addon/buildr/nailgun.rb +23 -23
- data/addon/buildr/openjpa.rb +1 -1
- data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
- data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
- data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
- data/addon/buildr/protobuf.rb +75 -0
- data/addon/buildr/xmlbeans.rb +5 -5
- data/buildr.buildfile +2 -2
- data/buildr.gemspec +8 -7
- data/doc/_layouts/default.html +2 -2
- data/doc/artifacts.textile +4 -4
- data/doc/building.textile +35 -3
- data/doc/contributing.textile +5 -0
- data/doc/download.textile +16 -5
- data/doc/extending.textile +38 -12
- data/doc/installing.textile +6 -5
- data/doc/languages.textile +182 -42
- data/doc/more_stuff.textile +2 -2
- data/doc/packaging.textile +14 -15
- data/doc/projects.textile +7 -2
- data/doc/quick_start.textile +4 -4
- data/doc/scripts/buildr-git.rb +63 -63
- data/doc/scripts/gitflow.rb +21 -21
- data/doc/settings_profiles.textile +9 -2
- data/doc/testing.textile +16 -5
- data/etc/KEYS +38 -0
- data/lib/buildr.rb +1 -1
- data/lib/buildr/core.rb +1 -0
- data/lib/buildr/core/application.rb +33 -27
- data/lib/buildr/core/build.rb +41 -28
- data/lib/buildr/core/cc.rb +172 -0
- data/lib/buildr/core/checks.rb +1 -1
- data/lib/buildr/core/common.rb +7 -6
- data/lib/buildr/core/compile.rb +7 -8
- data/lib/buildr/core/doc.rb +263 -0
- data/lib/buildr/core/environment.rb +6 -6
- data/lib/buildr/core/filter.rb +77 -35
- data/lib/buildr/core/generate.rb +7 -7
- data/lib/buildr/core/help.rb +1 -1
- data/lib/buildr/core/osx.rb +6 -6
- data/lib/buildr/core/progressbar.rb +4 -4
- data/lib/buildr/core/project.rb +144 -36
- data/lib/buildr/core/shell.rb +34 -34
- data/lib/buildr/core/test.rb +89 -20
- data/lib/buildr/core/transports.rb +8 -7
- data/lib/buildr/core/util.rb +77 -23
- data/lib/buildr/groovy/bdd.rb +5 -5
- data/lib/buildr/groovy/compiler.rb +19 -15
- data/lib/buildr/groovy/shell.rb +6 -6
- data/lib/buildr/ide/eclipse.rb +148 -75
- data/lib/buildr/ide/eclipse/java.rb +3 -3
- data/lib/buildr/ide/eclipse/plugin.rb +8 -5
- data/lib/buildr/ide/eclipse/scala.rb +4 -2
- data/lib/buildr/ide/idea.rb +2 -2
- data/lib/buildr/ide/idea7x.rb +23 -4
- data/lib/buildr/java.rb +1 -0
- data/lib/buildr/java/ant.rb +4 -4
- data/lib/buildr/java/bdd.rb +51 -54
- data/lib/buildr/java/cobertura.rb +57 -35
- data/lib/buildr/java/commands.rb +14 -5
- data/lib/buildr/java/compiler.rb +3 -217
- data/lib/buildr/java/deprecated.rb +4 -4
- data/lib/buildr/java/doc.rb +70 -0
- data/lib/buildr/java/emma.rb +22 -22
- data/lib/buildr/java/jruby.rb +4 -4
- data/lib/buildr/java/jtestr_runner.rb.erb +27 -25
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
- data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +8 -3
- data/lib/buildr/java/packaging.rb +30 -29
- data/lib/buildr/java/pom.rb +4 -4
- data/lib/buildr/java/rjb.rb +6 -6
- data/lib/buildr/java/test_result.rb +61 -85
- data/lib/buildr/java/tests.rb +44 -27
- data/lib/buildr/java/version_requirement.rb +8 -8
- data/lib/buildr/packaging/archive.rb +55 -22
- data/lib/buildr/packaging/artifact.rb +75 -36
- data/lib/buildr/packaging/artifact_namespace.rb +90 -78
- data/lib/buildr/packaging/artifact_search.rb +5 -5
- data/lib/buildr/packaging/gems.rb +11 -7
- data/lib/buildr/packaging/package.rb +10 -7
- data/lib/buildr/packaging/tar.rb +14 -14
- data/lib/buildr/packaging/version_requirement.rb +30 -10
- data/lib/buildr/packaging/ziptask.rb +51 -13
- data/lib/buildr/scala.rb +1 -0
- data/lib/buildr/scala/bdd.rb +25 -20
- data/lib/buildr/scala/compiler.rb +87 -40
- data/lib/buildr/scala/doc.rb +106 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
- data/lib/buildr/scala/shell.rb +14 -9
- data/lib/buildr/scala/tests.rb +33 -26
- data/lib/buildr/shell.rb +33 -33
- data/rakelib/all-in-one.rake +113 -0
- data/rakelib/checks.rake +1 -1
- data/rakelib/doc.rake +7 -0
- data/rakelib/package.rake +1 -1
- data/rakelib/release.rake +9 -6
- data/rakelib/rspec.rake +26 -7
- data/rakelib/setup.rake +15 -3
- data/rakelib/stage.rake +18 -11
- data/spec/addon/drb_spec.rb +25 -25
- data/spec/core/application_spec.rb +111 -21
- data/spec/core/build_spec.rb +16 -15
- data/spec/core/cc_spec.rb +174 -0
- data/spec/core/checks_spec.rb +34 -34
- data/spec/core/common_spec.rb +51 -5
- data/spec/core/compile_spec.rb +89 -14
- data/spec/core/extension_spec.rb +127 -19
- data/spec/core/generate_spec.rb +2 -2
- data/spec/core/project_spec.rb +10 -10
- data/spec/core/test_spec.rb +144 -35
- data/spec/core/transport_spec.rb +8 -8
- data/spec/core/util_spec.rb +63 -5
- data/spec/groovy/bdd_spec.rb +5 -5
- data/spec/groovy/compiler_spec.rb +29 -18
- data/spec/ide/eclipse_spec.rb +185 -9
- data/spec/ide/idea7x_spec.rb +22 -10
- data/spec/java/ant_spec.rb +9 -5
- data/spec/java/bdd_spec.rb +29 -37
- data/spec/java/cobertura_spec.rb +12 -12
- data/spec/java/commands_spec.rb +34 -0
- data/spec/java/compiler_spec.rb +53 -53
- data/spec/java/emma_spec.rb +11 -11
- data/spec/java/java_spec.rb +10 -10
- data/spec/java/packaging_spec.rb +67 -20
- data/spec/java/test_coverage_helper.rb +18 -18
- data/spec/java/tests_spec.rb +13 -9
- data/spec/packaging/archive_spec.rb +187 -20
- data/spec/packaging/artifact_namespace_spec.rb +172 -83
- data/spec/packaging/artifact_spec.rb +83 -18
- data/spec/packaging/packaging_spec.rb +41 -14
- data/spec/sandbox.rb +23 -12
- data/spec/scala/bdd_spec.rb +13 -8
- data/spec/scala/compiler_spec.rb +18 -13
- data/spec/scala/scala.rb +3 -3
- data/spec/scala/tests_spec.rb +46 -24
- data/spec/spec_helpers.rb +28 -10
- data/spec/version_requirement_spec.rb +25 -11
- metadata +148 -132
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner$.class +0 -0
- data/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.scala +0 -35
- data/rakelib/stage.rake~ +0 -213
data/lib/buildr/java/commands.rb
CHANGED
@@ -27,6 +27,12 @@ module Java
|
|
27
27
|
#
|
28
28
|
# Runs Java with the specified arguments.
|
29
29
|
#
|
30
|
+
# Each argument should be provided as separate array value, e.g.
|
31
|
+
#
|
32
|
+
# java("-jar", "yuicompressor-2.4.2.jar", "--type","css",
|
33
|
+
# "src/main/webapp/styles/styles-all.css",
|
34
|
+
# "-o", "src/main/webapp/styles/styles-all-min.css")
|
35
|
+
#
|
30
36
|
# The last argument may be a Hash with additional options:
|
31
37
|
# * :classpath -- One or more file names, tasks or artifact specifications.
|
32
38
|
# These are all expanded into artifacts, and all tasks are invoked.
|
@@ -39,7 +45,11 @@ module Java
|
|
39
45
|
options[:verbose] ||= Buildr.application.options.trace || false
|
40
46
|
rake_check_options options, :classpath, :java_args, :properties, :name, :verbose
|
41
47
|
|
42
|
-
name = options[:name]
|
48
|
+
name = options[:name]
|
49
|
+
if name.nil?
|
50
|
+
name = "java #{args.first}"
|
51
|
+
end
|
52
|
+
|
43
53
|
cmd_args = [path_to_bin('java')]
|
44
54
|
classpath = classpath_from(options)
|
45
55
|
cmd_args << '-classpath' << classpath.join(File::PATH_SEPARATOR) unless classpath.empty?
|
@@ -47,16 +57,15 @@ module Java
|
|
47
57
|
cmd_args += (options[:java_args] || (ENV['JAVA_OPTS'] || ENV['JAVA_OPTIONS']).to_s.split).flatten
|
48
58
|
cmd_args += args.flatten.compact
|
49
59
|
unless Buildr.application.options.dryrun
|
50
|
-
info "Running #{name}"
|
60
|
+
info "Running #{name}" if name && options[:verbose]
|
51
61
|
block = lambda { |ok, res| fail "Failed to execute #{name}, see errors above" unless ok } unless block
|
52
|
-
puts cmd_args.join(' ') if Buildr.application.options.trace
|
53
62
|
cmd_args = cmd_args.map(&:inspect).join(' ') if Util.win_os?
|
54
63
|
sh(*cmd_args) do |ok, ps|
|
55
64
|
block.call ok, ps
|
56
65
|
end
|
57
66
|
end
|
58
67
|
end
|
59
|
-
|
68
|
+
|
60
69
|
# :call-seq:
|
61
70
|
# apt(*files, options)
|
62
71
|
#
|
@@ -127,7 +136,7 @@ module Java
|
|
127
136
|
info "Compiling #{files.size} source files in #{name}"
|
128
137
|
trace (['javac'] + cmd_args).join(' ')
|
129
138
|
Java.load
|
130
|
-
Java.com.sun.tools.javac.Main.compile(cmd_args.to_java(Java.java.lang.String)) == 0 or
|
139
|
+
Java.com.sun.tools.javac.Main.compile(cmd_args.to_java(Java.java.lang.String)) == 0 or
|
131
140
|
fail 'Failed to compile, see errors above'
|
132
141
|
end
|
133
142
|
end
|
data/lib/buildr/java/compiler.rb
CHANGED
@@ -36,7 +36,7 @@ module Buildr
|
|
36
36
|
# * :source -- Source code compatibility.
|
37
37
|
# * :target -- Bytecode compatibility.
|
38
38
|
# * :lint -- Lint option is one of true, false (default), name (e.g. 'cast') or array.
|
39
|
-
# * :other -- Array of options passed to the compiler
|
39
|
+
# * :other -- Array of options passed to the compiler
|
40
40
|
# (e.g. ['-implicit:none', '-encoding', 'iso-8859-1'])
|
41
41
|
class Javac < Base
|
42
42
|
|
@@ -47,7 +47,7 @@ module Buildr
|
|
47
47
|
def initialize(project, options) #:nodoc:
|
48
48
|
super
|
49
49
|
options[:debug] = Buildr.options.debug if options[:debug].nil?
|
50
|
-
options[:warnings]
|
50
|
+
options[:warnings] ||= false
|
51
51
|
options[:deprecation] ||= false
|
52
52
|
options[:lint] ||= false
|
53
53
|
end
|
@@ -74,7 +74,7 @@ module Buildr
|
|
74
74
|
private
|
75
75
|
|
76
76
|
def javac_args #:nodoc:
|
77
|
-
args = []
|
77
|
+
args = []
|
78
78
|
args << '-nowarn' unless options[:warnings]
|
79
79
|
args << '-verbose' if Buildr.application.options.trace
|
80
80
|
args << '-g' if options[:debug]
|
@@ -90,219 +90,6 @@ module Buildr
|
|
90
90
|
end
|
91
91
|
|
92
92
|
end
|
93
|
-
|
94
|
-
end
|
95
|
-
|
96
|
-
|
97
|
-
# Methods added to Project for creating JavaDoc documentation.
|
98
|
-
module Javadoc
|
99
|
-
|
100
|
-
# A convenient task for creating Javadocs from the project's compile task. Minimizes all
|
101
|
-
# the hard work to calling #from and #using.
|
102
|
-
#
|
103
|
-
# For example:
|
104
|
-
# javadoc.from(projects('myapp:foo', 'myapp:bar')).using(:windowtitle=>'My App')
|
105
|
-
# Or, short and sweet:
|
106
|
-
# desc 'My App'
|
107
|
-
# define 'myapp' do
|
108
|
-
# . . .
|
109
|
-
# javadoc projects('myapp:foo', 'myapp:bar')
|
110
|
-
# end
|
111
|
-
class JavadocTask < Rake::Task
|
112
|
-
|
113
|
-
def initialize(*args) #:nodoc:
|
114
|
-
super
|
115
|
-
@options = {}
|
116
|
-
@classpath = []
|
117
|
-
@sourcepath = []
|
118
|
-
@files = FileList[]
|
119
|
-
enhance do |task|
|
120
|
-
rm_rf target.to_s
|
121
|
-
generate source_files, File.expand_path(target.to_s), options.merge(:classpath=>classpath, :sourcepath=>sourcepath)
|
122
|
-
touch target.to_s
|
123
|
-
end
|
124
|
-
end
|
125
|
-
|
126
|
-
# The target directory for the generated Javadoc files.
|
127
|
-
attr_reader :target
|
128
|
-
|
129
|
-
# :call-seq:
|
130
|
-
# into(path) => self
|
131
|
-
#
|
132
|
-
# Sets the target directory and returns self. This will also set the Javadoc task
|
133
|
-
# as a prerequisite to a file task on the target directory.
|
134
|
-
#
|
135
|
-
# For example:
|
136
|
-
# package :zip, :classifier=>'docs', :include=>javadoc.target
|
137
|
-
def into(path)
|
138
|
-
@target = file(path.to_s).enhance([self]) unless @target && @target.to_s == path.to_s
|
139
|
-
self
|
140
|
-
end
|
141
|
-
|
142
|
-
# :call-seq:
|
143
|
-
# include(*files) => self
|
144
|
-
#
|
145
|
-
# Includes additional source files and directories when generating the documentation
|
146
|
-
# and returns self. When specifying a directory, includes all .java files in that directory.
|
147
|
-
def include(*files)
|
148
|
-
@files.include *files.flatten.compact
|
149
|
-
self
|
150
|
-
end
|
151
|
-
|
152
|
-
# :call-seq:
|
153
|
-
# exclude(*files) => self
|
154
|
-
#
|
155
|
-
# Excludes source files and directories from generating the documentation.
|
156
|
-
def exclude(*files)
|
157
|
-
@files.exclude *files
|
158
|
-
self
|
159
|
-
end
|
160
|
-
|
161
|
-
# Classpath dependencies.
|
162
|
-
attr_accessor :classpath
|
163
|
-
|
164
|
-
# :call-seq:
|
165
|
-
# with(*artifacts) => self
|
166
|
-
#
|
167
|
-
# Adds files and artifacts as classpath dependencies, and returns self.
|
168
|
-
def with(*specs)
|
169
|
-
@classpath |= Buildr.artifacts(specs.flatten).uniq
|
170
|
-
self
|
171
|
-
end
|
172
|
-
|
173
|
-
# Additional sourcepaths that are not part of the documented files.
|
174
|
-
attr_accessor :sourcepath
|
175
|
-
|
176
|
-
# Returns the Javadoc options.
|
177
|
-
attr_reader :options
|
178
|
-
|
179
|
-
# :call-seq:
|
180
|
-
# using(options) => self
|
181
|
-
#
|
182
|
-
# Sets the Javadoc options from a hash and returns self.
|
183
|
-
#
|
184
|
-
# For example:
|
185
|
-
# javadoc.using :windowtitle=>'My application'
|
186
|
-
def using(*args)
|
187
|
-
args.pop.each { |key, value| @options[key.to_sym] = value } if Hash === args.last
|
188
|
-
args.each { |key| @options[key.to_sym] = true }
|
189
|
-
self
|
190
|
-
end
|
191
|
-
|
192
|
-
# :call-seq:
|
193
|
-
# from(*sources) => self
|
194
|
-
#
|
195
|
-
# Includes files, directories and projects in the Javadoc documentation and returns self.
|
196
|
-
#
|
197
|
-
# You can call this method with Java source files and directories containing Java source files
|
198
|
-
# to include these files in the Javadoc documentation, similar to #include. You can also call
|
199
|
-
# this method with projects. When called with a project, it includes all the source files compiled
|
200
|
-
# by that project and classpath dependencies used when compiling.
|
201
|
-
#
|
202
|
-
# For example:
|
203
|
-
# javadoc.from projects('myapp:foo', 'myapp:bar')
|
204
|
-
def from(*sources)
|
205
|
-
sources.flatten.each do |source|
|
206
|
-
case source
|
207
|
-
when Project
|
208
|
-
self.enhance source.prerequisites
|
209
|
-
self.include source.compile.sources
|
210
|
-
self.with source.compile.dependencies
|
211
|
-
when Rake::Task, String
|
212
|
-
self.include source
|
213
|
-
else
|
214
|
-
fail "Don't know how to generate Javadocs from #{source || 'nil'}"
|
215
|
-
end
|
216
|
-
end
|
217
|
-
self
|
218
|
-
end
|
219
|
-
|
220
|
-
def prerequisites() #:nodoc:
|
221
|
-
super + @files + classpath + sourcepath
|
222
|
-
end
|
223
|
-
|
224
|
-
def source_files() #:nodoc:
|
225
|
-
@source_files ||= @files.map(&:to_s).
|
226
|
-
map { |file| File.directory?(file) ? FileList[File.join(file, "**/*.java")] : file }.
|
227
|
-
flatten.reject { |file| @files.exclude?(file) }
|
228
|
-
end
|
229
|
-
|
230
|
-
def needed?() #:nodoc:
|
231
|
-
return false if source_files.empty?
|
232
|
-
return true unless File.exist?(target.to_s)
|
233
|
-
source_files.map { |src| File.stat(src.to_s).mtime }.max > File.stat(target.to_s).mtime
|
234
|
-
end
|
235
|
-
|
236
|
-
private
|
237
|
-
|
238
|
-
def generate(sources, target, options = {})
|
239
|
-
cmd_args = [ '-d', target, Buildr.application.options.trace ? '-verbose' : '-quiet' ]
|
240
|
-
options.reject { |key, value| [:sourcepath, :classpath].include?(key) }.
|
241
|
-
each { |key, value| value.invoke if value.respond_to?(:invoke) }.
|
242
|
-
each do |key, value|
|
243
|
-
case value
|
244
|
-
when true, nil
|
245
|
-
cmd_args << "-#{key}"
|
246
|
-
when false
|
247
|
-
cmd_args << "-no#{key}"
|
248
|
-
when Hash
|
249
|
-
value.each { |k,v| cmd_args << "-#{key}" << k.to_s << v.to_s }
|
250
|
-
else
|
251
|
-
cmd_args += Array(value).map { |item| ["-#{key}", item.to_s] }.flatten
|
252
|
-
end
|
253
|
-
end
|
254
|
-
[:sourcepath, :classpath].each do |option|
|
255
|
-
Array(options[option]).flatten.tap do |paths|
|
256
|
-
cmd_args << "-#{option}" << paths.flatten.map(&:to_s).join(File::PATH_SEPARATOR) unless paths.empty?
|
257
|
-
end
|
258
|
-
end
|
259
|
-
cmd_args += sources.flatten.uniq
|
260
|
-
unless Buildr.application.options.dryrun
|
261
|
-
info "Generating Javadoc for #{name}"
|
262
|
-
trace (['javadoc'] + cmd_args).join(' ')
|
263
|
-
Java.load
|
264
|
-
Java.com.sun.tools.javadoc.Main.execute(cmd_args.to_java(Java.java.lang.String)) == 0 or
|
265
|
-
fail 'Failed to generate Javadocs, see errors above'
|
266
|
-
end
|
267
|
-
end
|
268
|
-
|
269
|
-
end
|
270
|
-
|
271
|
-
|
272
|
-
include Extension
|
273
|
-
|
274
|
-
first_time do
|
275
|
-
desc 'Create the Javadocs for this project'
|
276
|
-
Project.local_task('javadoc')
|
277
|
-
end
|
278
|
-
|
279
|
-
before_define do |project|
|
280
|
-
JavadocTask.define_task('javadoc').tap do |javadoc|
|
281
|
-
javadoc.into project.path_to(:target, :javadoc)
|
282
|
-
javadoc.using :windowtitle=>project.comment || project.name
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
after_define do |project|
|
287
|
-
project.javadoc.from project
|
288
|
-
end
|
289
|
-
|
290
|
-
# :call-seq:
|
291
|
-
# javadoc(*sources) => JavadocTask
|
292
|
-
#
|
293
|
-
# This method returns the project's Javadoc task. It also accepts a list of source files,
|
294
|
-
# directories and projects to include when generating the Javadocs.
|
295
|
-
#
|
296
|
-
# By default the Javadoc task uses all the source directories from compile.sources and generates
|
297
|
-
# Javadocs in the target/javadoc directory. This method accepts sources and adds them by calling
|
298
|
-
# JavadocsTask#from.
|
299
|
-
#
|
300
|
-
# For example, if you want to generate Javadocs for a given project that includes all source files
|
301
|
-
# in two of its sub-projects:
|
302
|
-
# javadoc projects('myapp:foo', 'myapp:bar').using(:windowtitle=>'Docs for foo and bar')
|
303
|
-
def javadoc(*sources, &block)
|
304
|
-
task('javadoc').from(*sources).enhance &block
|
305
|
-
end
|
306
93
|
|
307
94
|
end
|
308
95
|
|
@@ -344,6 +131,5 @@ end
|
|
344
131
|
|
345
132
|
Buildr::Compiler << Buildr::Compiler::Javac
|
346
133
|
class Buildr::Project
|
347
|
-
include Buildr::Javadoc
|
348
134
|
include Buildr::Apt
|
349
135
|
end
|
@@ -44,7 +44,7 @@ module Java
|
|
44
44
|
Buildr.application.deprecated 'See documentation for new way to access Java code.'
|
45
45
|
yield self if block_given?
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
# *Deprecated:* Use Java.load instead.
|
49
49
|
def load
|
50
50
|
Buildr.application.deprecated 'Use Java.load instead.'
|
@@ -66,19 +66,19 @@ module Java
|
|
66
66
|
# *Deprecated*: Use Java::Commands.java instead.
|
67
67
|
def java(*args, &block)
|
68
68
|
return send(:method_missing, :java) if args.empty?
|
69
|
-
Buildr.application.deprecated 'Use Java::Commands.
|
69
|
+
Buildr.application.deprecated 'Use Java::Commands.java instead.'
|
70
70
|
Commands.java(*args, &block)
|
71
71
|
end
|
72
72
|
|
73
73
|
# *Deprecated*: Use Java::Commands.apt instead.
|
74
74
|
def apt(*args)
|
75
|
-
Buildr.application.deprecated 'Use Java::Commands.
|
75
|
+
Buildr.application.deprecated 'Use Java::Commands.apt instead.'
|
76
76
|
Commands.apt(*args)
|
77
77
|
end
|
78
78
|
|
79
79
|
# *Deprecated*: Use Java::Commands.javac instead.
|
80
80
|
def javac(*args)
|
81
|
-
Buildr.application.deprecated 'Use Java::Commands.
|
81
|
+
Buildr.application.deprecated 'Use Java::Commands.javac instead.'
|
82
82
|
Commands.javac(*args)
|
83
83
|
end
|
84
84
|
|
@@ -0,0 +1,70 @@
|
|
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 'buildr/core/doc'
|
17
|
+
|
18
|
+
module Buildr
|
19
|
+
module Doc
|
20
|
+
|
21
|
+
# A convenient task for creating Javadocs from the project's compile task. Minimizes all
|
22
|
+
# the hard work to calling #from and #using.
|
23
|
+
#
|
24
|
+
# For example:
|
25
|
+
# doc.from(projects('myapp:foo', 'myapp:bar')).using(:windowtitle=>'My App')
|
26
|
+
# Or, short and sweet:
|
27
|
+
# desc 'My App'
|
28
|
+
# define 'myapp' do
|
29
|
+
# . . .
|
30
|
+
# doc projects('myapp:foo', 'myapp:bar')
|
31
|
+
# end
|
32
|
+
class Javadoc < Base
|
33
|
+
|
34
|
+
specify :language => :java, :source_ext => 'java'
|
35
|
+
|
36
|
+
def generate(sources, target, options = {})
|
37
|
+
cmd_args = [ '-d', target, Buildr.application.options.trace ? '-verbose' : '-quiet' ]
|
38
|
+
options.reject { |key, value| [:sourcepath, :classpath].include?(key) }.
|
39
|
+
each { |key, value| value.invoke if value.respond_to?(:invoke) }.
|
40
|
+
each do |key, value|
|
41
|
+
case value
|
42
|
+
when true, nil
|
43
|
+
cmd_args << "-#{key}"
|
44
|
+
when false
|
45
|
+
cmd_args << "-no#{key}"
|
46
|
+
when Hash
|
47
|
+
value.each { |k,v| cmd_args << "-#{key}" << k.to_s << v.to_s }
|
48
|
+
else
|
49
|
+
cmd_args += Array(value).map { |item| ["-#{key}", item.to_s] }.flatten
|
50
|
+
end
|
51
|
+
end
|
52
|
+
[:sourcepath, :classpath].each do |option|
|
53
|
+
Array(options[option]).flatten.tap do |paths|
|
54
|
+
cmd_args << "-#{option}" << paths.flatten.map(&:to_s).join(File::PATH_SEPARATOR) unless paths.empty?
|
55
|
+
end
|
56
|
+
end
|
57
|
+
cmd_args += sources.flatten.uniq
|
58
|
+
unless Buildr.application.options.dryrun
|
59
|
+
info "Generating Javadoc for #{project.name}"
|
60
|
+
trace (['javadoc'] + cmd_args).join(' ')
|
61
|
+
Java.load
|
62
|
+
Java.com.sun.tools.javadoc.Main.execute(cmd_args.to_java(Java.java.lang.String)) == 0 or
|
63
|
+
fail 'Failed to generate Javadocs, see errors above'
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
Buildr::Doc.engines << Buildr::Doc::Javadoc
|
data/lib/buildr/java/emma.rb
CHANGED
@@ -22,16 +22,16 @@ module Buildr
|
|
22
22
|
# Provides the <code>emma:html</code> and <code>emma:xml</code> tasks.
|
23
23
|
# Require explicitly using <code>require "buildr/emma"</code>.
|
24
24
|
#
|
25
|
-
# You can generate emma reports for a single project
|
25
|
+
# You can generate emma reports for a single project
|
26
26
|
# using the project name as prefix:
|
27
27
|
#
|
28
28
|
# project_name:emma:html
|
29
29
|
#
|
30
|
-
# You can also specify which classes to include/exclude from instrumentation by
|
31
|
-
# passing a class name regexp to the <code>emma.include</code> or
|
32
|
-
# <code>emma.exclude</code> methods.
|
33
|
-
#
|
34
|
-
# define 'someModule' do
|
30
|
+
# You can also specify which classes to include/exclude from instrumentation by
|
31
|
+
# passing a class name regexp to the <code>emma.include</code> or
|
32
|
+
# <code>emma.exclude</code> methods.
|
33
|
+
#
|
34
|
+
# define 'someModule' do
|
35
35
|
# emma.include 'some.package.*'
|
36
36
|
# emma.exclude 'some.foo.util.SimpleUtil'
|
37
37
|
# end
|
@@ -58,7 +58,7 @@ module Buildr
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def ant
|
61
|
-
|
61
|
+
|
62
62
|
Buildr.ant 'emma' do |ant|
|
63
63
|
ant.taskdef :resource=>'emma_ant.properties',
|
64
64
|
:classpath=>Buildr.artifacts(dependencies).each(&:invoke).map(&:to_s).join(File::PATH_SEPARATOR)
|
@@ -68,18 +68,18 @@ module Buildr
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
class EmmaConfig # :nodoc:
|
73
|
-
|
73
|
+
|
74
74
|
def initialize(project)
|
75
75
|
@project = project
|
76
76
|
end
|
77
|
-
|
77
|
+
|
78
78
|
attr_reader :project
|
79
79
|
private :project
|
80
80
|
|
81
81
|
attr_writer :metadata_file, :coverage_file, :instrumented_dir, :report_dir
|
82
|
-
|
82
|
+
|
83
83
|
def coverage_file
|
84
84
|
@coverage_file ||= File.join(report_dir, 'coverage.ec')
|
85
85
|
end
|
@@ -95,7 +95,7 @@ module Buildr
|
|
95
95
|
def report_dir
|
96
96
|
@report_dir ||= project.path_to(:reports, :emma)
|
97
97
|
end
|
98
|
-
|
98
|
+
|
99
99
|
def report_to format
|
100
100
|
report_dir
|
101
101
|
end
|
@@ -107,7 +107,7 @@ module Buildr
|
|
107
107
|
includes.push(*classPatterns)
|
108
108
|
self
|
109
109
|
end
|
110
|
-
|
110
|
+
|
111
111
|
def includes
|
112
112
|
@includeClasses ||= []
|
113
113
|
end
|
@@ -138,7 +138,7 @@ module Buildr
|
|
138
138
|
|
139
139
|
after_define do |project|
|
140
140
|
emma = project.emma
|
141
|
-
|
141
|
+
|
142
142
|
namespace 'emma' do
|
143
143
|
unless project.compile.target.nil?
|
144
144
|
# Instrumented bytecode goes in a different directory. This task creates before running the test
|
@@ -155,14 +155,14 @@ module Buildr
|
|
155
155
|
touch task.to_s
|
156
156
|
end
|
157
157
|
end
|
158
|
-
|
158
|
+
|
159
159
|
task 'instrument' => instrumented
|
160
|
-
|
160
|
+
|
161
161
|
# We now have two target directories with bytecode.
|
162
162
|
project.test.dependencies.unshift emma.instrumented_dir
|
163
163
|
project.test.with Emma.dependencies
|
164
164
|
project.test.options[:properties]["emma.coverage.out.file"] = emma.coverage_file
|
165
|
-
|
165
|
+
|
166
166
|
[:xml, :html].each do |format|
|
167
167
|
task format => ['instrument', 'test'] do
|
168
168
|
missing_required_files = [emma.metadata_file, emma.coverage_file].reject { |f| File.exist?(f) }
|
@@ -192,9 +192,9 @@ module Buildr
|
|
192
192
|
project.clean do
|
193
193
|
rm_rf [emma.report_dir, emma.coverage_file, emma.metadata_file, emma.instrumented_dir]
|
194
194
|
end
|
195
|
-
|
195
|
+
|
196
196
|
end
|
197
|
-
|
197
|
+
|
198
198
|
end
|
199
199
|
|
200
200
|
class Buildr::Project
|
@@ -204,7 +204,7 @@ module Buildr
|
|
204
204
|
namespace "emma" do
|
205
205
|
|
206
206
|
Project.local_task('instrument') { |name| "Instrumenting #{name}" }
|
207
|
-
|
207
|
+
|
208
208
|
[:xml, :html].each do |format|
|
209
209
|
desc "Run the test cases and produce code coverage reports in #{format}"
|
210
210
|
task format => ['instrument', 'test'] do
|
@@ -224,13 +224,13 @@ module Buildr
|
|
224
224
|
ant.sourcepath do
|
225
225
|
Buildr.projects.map(&:emma).map(&:sources).flatten.map(&:to_s).each do |src|
|
226
226
|
ant.dirset :dir=>src if File.exist?(src)
|
227
|
-
end
|
227
|
+
end
|
228
228
|
end
|
229
229
|
end
|
230
230
|
end
|
231
231
|
end
|
232
232
|
end
|
233
|
-
|
233
|
+
|
234
234
|
task :clean do
|
235
235
|
rm_rf [report_to, data_file]
|
236
236
|
end
|