ittayd-buildr 1.3.4 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. data/CHANGELOG +62 -9
  2. data/NOTICE +1 -1
  3. data/README.rdoc +9 -21
  4. data/Rakefile +20 -39
  5. data/_buildr +1 -0
  6. data/{spec/java/ant.rb → _jbuildr} +11 -15
  7. metadata +30 -210
  8. data/DISCLAIMER +0 -7
  9. data/addon/buildr/antlr.rb +0 -65
  10. data/addon/buildr/cobertura.rb +0 -22
  11. data/addon/buildr/drb.rb +0 -281
  12. data/addon/buildr/emma.rb +0 -22
  13. data/addon/buildr/hibernate.rb +0 -142
  14. data/addon/buildr/javacc.rb +0 -85
  15. data/addon/buildr/jdepend.rb +0 -60
  16. data/addon/buildr/jetty.rb +0 -248
  17. data/addon/buildr/jibx.rb +0 -86
  18. data/addon/buildr/nailgun.rb +0 -221
  19. data/addon/buildr/openjpa.rb +0 -90
  20. data/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  21. data/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  22. data/addon/buildr/org/apache/buildr/BuildrNail.java +0 -41
  23. data/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  24. data/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  25. data/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  26. data/addon/buildr/org/apache/buildr/JettyWrapper.java +0 -144
  27. data/addon/buildr/path.rb +0 -136
  28. data/addon/buildr/xmlbeans.rb +0 -93
  29. data/buildr.buildfile +0 -53
  30. data/buildr.gemspec +0 -58
  31. data/doc/css/default.css +0 -228
  32. data/doc/css/print.css +0 -100
  33. data/doc/css/syntax.css +0 -52
  34. data/doc/images/apache-incubator-logo.png +0 -0
  35. data/doc/images/buildr-hires.png +0 -0
  36. data/doc/images/buildr.png +0 -0
  37. data/doc/images/favicon.png +0 -0
  38. data/doc/images/growl-icon.tiff +0 -0
  39. data/doc/images/note.png +0 -0
  40. data/doc/images/project-structure.png +0 -0
  41. data/doc/images/tip.png +0 -0
  42. data/doc/images/zbuildr.tif +0 -0
  43. data/doc/pages/artifacts.textile +0 -207
  44. data/doc/pages/building.textile +0 -240
  45. data/doc/pages/contributing.textile +0 -208
  46. data/doc/pages/download.textile +0 -62
  47. data/doc/pages/extending.textile +0 -175
  48. data/doc/pages/getting_started.textile +0 -273
  49. data/doc/pages/index.textile +0 -42
  50. data/doc/pages/languages.textile +0 -407
  51. data/doc/pages/mailing_lists.textile +0 -17
  52. data/doc/pages/more_stuff.textile +0 -314
  53. data/doc/pages/packaging.textile +0 -427
  54. data/doc/pages/projects.textile +0 -274
  55. data/doc/pages/recipes.textile +0 -103
  56. data/doc/pages/settings_profiles.textile +0 -274
  57. data/doc/pages/testing.textile +0 -212
  58. data/doc/pages/troubleshooting.textile +0 -103
  59. data/doc/pages/whats_new.textile +0 -323
  60. data/doc/print.haml +0 -51
  61. data/doc/print.toc.yaml +0 -29
  62. data/doc/scripts/buildr-git.rb +0 -412
  63. data/doc/scripts/install-jruby.sh +0 -44
  64. data/doc/scripts/install-linux.sh +0 -64
  65. data/doc/scripts/install-osx.sh +0 -52
  66. data/doc/site.haml +0 -56
  67. data/doc/site.toc.yaml +0 -47
  68. data/etc/KEYS +0 -151
  69. data/etc/git-svn-authors +0 -16
  70. data/lib/buildr.rb +0 -33
  71. data/lib/buildr/core.rb +0 -29
  72. data/lib/buildr/core/application.rb +0 -665
  73. data/lib/buildr/core/build.rb +0 -311
  74. data/lib/buildr/core/checks.rb +0 -254
  75. data/lib/buildr/core/common.rb +0 -150
  76. data/lib/buildr/core/compile.rb +0 -590
  77. data/lib/buildr/core/environment.rb +0 -117
  78. data/lib/buildr/core/filter.rb +0 -366
  79. data/lib/buildr/core/generate.rb +0 -195
  80. data/lib/buildr/core/help.rb +0 -119
  81. data/lib/buildr/core/osx.rb +0 -49
  82. data/lib/buildr/core/progressbar.rb +0 -156
  83. data/lib/buildr/core/project.rb +0 -923
  84. data/lib/buildr/core/test.rb +0 -715
  85. data/lib/buildr/core/transports.rb +0 -560
  86. data/lib/buildr/core/util.rb +0 -294
  87. data/lib/buildr/groovy.rb +0 -18
  88. data/lib/buildr/groovy/bdd.rb +0 -106
  89. data/lib/buildr/groovy/compiler.rb +0 -138
  90. data/lib/buildr/ide.rb +0 -19
  91. data/lib/buildr/ide/eclipse.rb +0 -222
  92. data/lib/buildr/ide/idea.ipr.template +0 -300
  93. data/lib/buildr/ide/idea.rb +0 -190
  94. data/lib/buildr/ide/idea7x.ipr.template +0 -290
  95. data/lib/buildr/ide/idea7x.rb +0 -212
  96. data/lib/buildr/java.rb +0 -23
  97. data/lib/buildr/java/ant.rb +0 -92
  98. data/lib/buildr/java/bdd.rb +0 -451
  99. data/lib/buildr/java/cobertura.rb +0 -236
  100. data/lib/buildr/java/commands.rb +0 -211
  101. data/lib/buildr/java/compiler.rb +0 -348
  102. data/lib/buildr/java/deprecated.rb +0 -141
  103. data/lib/buildr/java/emma.rb +0 -238
  104. data/lib/buildr/java/jruby.rb +0 -117
  105. data/lib/buildr/java/jtestr_runner.rb.erb +0 -116
  106. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  107. data/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +0 -119
  108. data/lib/buildr/java/packaging.rb +0 -717
  109. data/lib/buildr/java/pom.rb +0 -174
  110. data/lib/buildr/java/rjb.rb +0 -155
  111. data/lib/buildr/java/test_result.rb +0 -307
  112. data/lib/buildr/java/tests.rb +0 -329
  113. data/lib/buildr/java/version_requirement.rb +0 -172
  114. data/lib/buildr/packaging.rb +0 -24
  115. data/lib/buildr/packaging/archive.rb +0 -488
  116. data/lib/buildr/packaging/artifact.rb +0 -759
  117. data/lib/buildr/packaging/artifact_namespace.rb +0 -972
  118. data/lib/buildr/packaging/artifact_search.rb +0 -140
  119. data/lib/buildr/packaging/gems.rb +0 -102
  120. data/lib/buildr/packaging/package.rb +0 -233
  121. data/lib/buildr/packaging/tar.rb +0 -186
  122. data/lib/buildr/packaging/version_requirement.rb +0 -172
  123. data/lib/buildr/packaging/zip.rb +0 -64
  124. data/lib/buildr/packaging/ziptask.rb +0 -313
  125. data/lib/buildr/resources/buildr.icns +0 -0
  126. data/lib/buildr/scala.rb +0 -19
  127. data/lib/buildr/scala/compiler.rb +0 -109
  128. data/lib/buildr/scala/tests.rb +0 -203
  129. data/rakelib/apache.rake +0 -191
  130. data/rakelib/changelog.rake +0 -57
  131. data/rakelib/doc.rake +0 -103
  132. data/rakelib/package.rake +0 -76
  133. data/rakelib/release.rake +0 -65
  134. data/rakelib/rspec.rake +0 -83
  135. data/rakelib/rubyforge.rake +0 -56
  136. data/rakelib/scm.rake +0 -49
  137. data/rakelib/setup.rake +0 -81
  138. data/rakelib/stage.rake +0 -48
  139. data/spec/addon/drb_spec.rb +0 -328
  140. data/spec/core/application_spec.rb +0 -419
  141. data/spec/core/build_spec.rb +0 -423
  142. data/spec/core/checks_spec.rb +0 -519
  143. data/spec/core/common_spec.rb +0 -670
  144. data/spec/core/compile_spec.rb +0 -582
  145. data/spec/core/generate_spec.rb +0 -33
  146. data/spec/core/project_spec.rb +0 -776
  147. data/spec/core/test_spec.rb +0 -1098
  148. data/spec/core/transport_spec.rb +0 -500
  149. data/spec/groovy/bdd_spec.rb +0 -80
  150. data/spec/groovy/compiler_spec.rb +0 -239
  151. data/spec/ide/eclipse_spec.rb +0 -311
  152. data/spec/java/bdd_spec.rb +0 -358
  153. data/spec/java/cobertura_spec.rb +0 -77
  154. data/spec/java/compiler_spec.rb +0 -446
  155. data/spec/java/emma_spec.rb +0 -120
  156. data/spec/java/java_spec.rb +0 -96
  157. data/spec/java/packaging_spec.rb +0 -1120
  158. data/spec/java/test_coverage_spec.rb +0 -255
  159. data/spec/java/tests_spec.rb +0 -471
  160. data/spec/packaging/archive_spec.rb +0 -503
  161. data/spec/packaging/artifact_namespace_spec.rb +0 -646
  162. data/spec/packaging/artifact_spec.rb +0 -795
  163. data/spec/packaging/packaging_helper.rb +0 -63
  164. data/spec/packaging/packaging_spec.rb +0 -589
  165. data/spec/sandbox.rb +0 -139
  166. data/spec/scala/compiler_spec.rb +0 -228
  167. data/spec/scala/tests_spec.rb +0 -215
  168. data/spec/spec_helpers.rb +0 -327
  169. data/spec/version_requirement_spec.rb +0 -123
data/DISCLAIMER DELETED
@@ -1,7 +0,0 @@
1
- Apache Buildr is an effort undergoing incubation at The Apache Software
2
- Foundation (ASF), sponsored by the Apache Incubator. Incubation is required of
3
- all newly accepted projects until a further review indicates that the
4
- infrastructure, communications, and decision making process have stabilized in
5
- a manner consistent with other successful ASF projects. While incubation status
6
- is not necessarily a reflection of the completeness or stability of the code,
7
- it does indicate that the project has yet to be fully endorsed by the ASF.
@@ -1,65 +0,0 @@
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 'buildr/java'
18
-
19
-
20
- module Buildr
21
- # Provides ANTLR grammar generation tasks. Require explicitly using <code>require "buildr/antlr"</code>.
22
- module ANTLR
23
- REQUIRES = [ "org.antlr:antlr:jar:3.0", "antlr:antlr:jar:2.7.7", "org.antlr:stringtemplate:jar:3.0" ]
24
-
25
- Java.classpath << REQUIRES
26
-
27
- class << self
28
- def antlr(*args)
29
- options = Hash === args.last ? args.pop : {}
30
- rake_check_options options, :output, :token
31
-
32
- args = args.flatten.map(&:to_s).collect { |f| File.directory?(f) ? FileList[f + "/**/*.g"] : f }.flatten
33
- args = ["-o", options[:output]] + args if options[:output]
34
- if options[:token]
35
- # antlr expects the token directory to exist when it starts
36
- mkdir_p options[:token]
37
- args = ["-lib", options[:token]] + args
38
- end
39
- Java.load
40
- #Java.org.antlr.Tool.new_with_sig("[Ljava.lang.String;", args).process
41
- Java.org.antlr.Tool.new(args.to_java(Java.java.lang.String)).process
42
- end
43
- end
44
-
45
- def antlr(*args)
46
- if Hash === args.last
47
- options = args.pop
48
- in_package = options[:in_package].split(".")
49
- token = options[:token].split(".") if options[:token]
50
- else
51
- in_package = []; token = nil
52
- end
53
- file(path_to(:target, :generated, :antlr)=>args.flatten) do |task|
54
- args = {:output=>File.join(task.name, in_package)}
55
- args.merge!({:token=>File.join(task.name, token)}) if token
56
- ANTLR.antlr task.prerequisites, args
57
- end
58
- end
59
-
60
- end
61
-
62
- class Project
63
- include ANTLR
64
- end
65
- end
@@ -1,22 +0,0 @@
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
- if Buildr::VERSION < '1.5'
18
- Buildr.application.deprecated "'buildr/cobertura', use 'buildr/java/cobertura' instead"
19
- require 'buildr/java/cobertura'
20
- else
21
- raise "#{__FILE__} should be removed since its use is deprecated since version 1.3.4"
22
- end
@@ -1,281 +0,0 @@
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 'delegate'
18
- require 'drb/drb'
19
-
20
-
21
- module Buildr
22
-
23
- # This addon allows you start a DRb server hosting a buildfile, so that
24
- # you can later invoke tasks on it without having to load
25
- # the complete buildr runtime again.
26
- #
27
- # Usage:
28
- #
29
- # buildr -r buildr/drb drb:start
30
- #
31
- # Once the server has been started you can invoke tasks using a simple script:
32
- #
33
- # #!/usr/bin/env ruby
34
- # require 'rubygems'
35
- # require 'buildr/drb'
36
- # Buildr::DRbApplication.run
37
- #
38
- # Save this script as 'dbuildr', make it executable and use it to invoke tasks.
39
- #
40
- # dbuildr clean compile
41
- #
42
- # The dbuildr script will run as the server if there isn't one already running.
43
- # Subsequent calls to dbuildr will act as the client and invoke the tasks you
44
- # provide in the server.
45
- # If the buildfile has been modified it will be reloaded on the BuildrServer.
46
- #
47
- # JRuby users can use a nailgun client to invoke tasks as fast as possible
48
- # without having to incur JVM startup time.
49
- # See the documentation for buildr/nailgun.
50
- module DRbApplication
51
-
52
- port = ENV['DRB_PORT'] || 2111
53
- PORT = port.to_i
54
-
55
- class SavedTask #:nodoc:
56
-
57
- def initialize(original)
58
- @original = original.clone
59
- @prerequisites = original.prerequisites.clone if original.respond_to?(:prerequisites)
60
- @actions = original.actions.clone if original.respond_to?(:actions)
61
- end
62
-
63
- def name
64
- @original.name
65
- end
66
-
67
- def actions
68
- @actions ||= []
69
- end
70
-
71
- def prerequisites
72
- @prerequisites ||= []
73
- end
74
-
75
- def define!
76
- @original.class.send(:define_task, @original.name => prerequisites).tap do |task|
77
- task.comment = @original.comment
78
- actions.each { |action| task.enhance &action }
79
- end
80
- end
81
- end # SavedTask
82
-
83
- class Snapshot #:nodoc:
84
-
85
- attr_accessor :projects, :tasks, :rules, :layout, :options
86
-
87
- # save the tasks,rules,layout defined by buildr
88
- def initialize
89
- @rules = Buildr.application.instance_eval { @rules || [] }.clone
90
- @options = Buildr.application.options.clone
91
- @options.rakelib ||= ['tasks']
92
- @layout = Layout.default.clone
93
- @projects = Project.instance_eval { @projects || {} }.clone
94
- @tasks = Buildr.application.tasks.inject({}) do |hash, original|
95
- unless projects.key? original.name # don't save project definitions
96
- hash.update original.name => SavedTask.new(original)
97
- end
98
- hash
99
- end
100
- end
101
-
102
- end # Snapshot
103
-
104
- class << self
105
-
106
- attr_accessor :original, :snapshot
107
-
108
- def run
109
- begin
110
- client = connect
111
- rescue DRb::DRbConnError => e
112
- run_server!
113
- else
114
- run_client(client)
115
- end
116
- end
117
-
118
- def client_uri
119
- "druby://:#{PORT + 1}"
120
- end
121
-
122
- def remote_run(cfg)
123
- with_config(cfg) { Buildr.application.remote_run(self) }
124
- rescue => e
125
- cfg[:err].puts e.message
126
- e.backtrace.each { |b| cfg[:err].puts "\tfrom #{b}" }
127
- raise e
128
- end
129
-
130
- def save_snapshot(app)
131
- if app.instance_eval { @rakefile }
132
- @snapshot = self::Snapshot.new
133
- app.buildfile_reloaded!
134
- end
135
- end
136
-
137
- private
138
-
139
- def server_uri
140
- "druby://:#{PORT}"
141
- end
142
-
143
- def connect
144
- buildr = DRbObject.new(nil, server_uri)
145
- uri = buildr.client_uri # obtain our uri from the server
146
- DRb.start_service(uri)
147
- buildr
148
- end
149
-
150
- def run_client(client)
151
- client.remote_run :dir => Dir.pwd, :argv => ARGV,
152
- :in => $stdin, :out => $stdout, :err => $stderr
153
- end
154
-
155
- def setup
156
- unless original
157
- # Create the stdio delegator that can be cached (eg by fileutils)
158
- delegate_stdio
159
-
160
- # Lazily load buildr the first time it's needed
161
- require 'buildr'
162
-
163
- # Save the tasks,rules,layout defined by buildr
164
- # before loading any project
165
- @original = self::Snapshot.new
166
-
167
- Buildr.application.extend self
168
- save_snapshot(Buildr.application)
169
- end
170
- end
171
-
172
- def run_server
173
- setup
174
- DRb.start_service(server_uri, self)
175
- puts "#{self} waiting on #{server_uri}"
176
- end
177
-
178
- def run_server!
179
- setup
180
- if RUBY_PLATFORM[/java/]
181
- require 'buildr/nailgun'
182
- Buildr.application['nailgun:drb'].invoke
183
- else
184
- run_server
185
- DRb.thread.join
186
- end
187
- end
188
-
189
- def delegate_stdio
190
- $stdin = SimpleDelegator.new($stdin)
191
- $stdout = SimpleDelegator.new($stdout)
192
- $stderr = SimpleDelegator.new($stderr)
193
- end
194
-
195
- def with_config(remote)
196
- @invoked = true
197
- set = lambda do |env|
198
- ARGV.replace env[:argv]
199
- $stdin.__setobj__(env[:in])
200
- $stdout.__setobj__(env[:out])
201
- $stderr.__setobj__(env[:err])
202
- Buildr.application.instance_variable_set :@original_dir, env[:dir]
203
- end
204
- original = {
205
- :dir => Buildr.application.instance_variable_get(:@original_dir),
206
- :argv => ARGV,
207
- :in => $stdin.__getobj__,
208
- :out => $stdout.__getobj__,
209
- :err => $stderr.__getobj__
210
- }
211
- begin
212
- set[remote]
213
- yield
214
- ensure
215
- set[original]
216
- end
217
- end
218
-
219
- end # class << DRbApplication
220
-
221
- def remote_run(server)
222
- @options = server.original.options.clone
223
- init 'Distributed Buildr'
224
- if @rakefile
225
- if buildfile_needs_reload?
226
- reload_buildfile(server, server.original)
227
- else
228
- clear_invoked_tasks(server.snapshot || server.original)
229
- end
230
- else
231
- reload_buildfile(server, server.original)
232
- end
233
- top_level
234
- end
235
-
236
- def buildfile_reloaded!
237
- @last_loaded = buildfile.timestamp if @rakefile
238
- end
239
-
240
- private
241
-
242
- def buildfile_needs_reload?
243
- !@last_loaded || @last_loaded < buildfile.timestamp
244
- end
245
-
246
- def reload_buildfile(server, snapshot)
247
- clear_for_reload(snapshot)
248
- load_buildfile
249
- server.save_snapshot(self)
250
- end
251
-
252
- def clear_for_reload(snapshot)
253
- Project.clear
254
- @tasks = {}
255
- @rules = snapshot.rules.clone
256
- snapshot.tasks.each_pair { |name, saved| saved.define! }
257
- Layout.default = snapshot.layout.clone
258
- end
259
-
260
- def clear_invoked_tasks(snapshot)
261
- @rules = snapshot.rules.clone
262
- (@tasks.keys - snapshot.projects.keys).each do |name|
263
- if saved = snapshot.tasks[name]
264
- # reenable this task, restoring its actions/prereqs
265
- task = @tasks[name]
266
- task.reenable
267
- task.prerequisites.replace saved.prerequisites.clone
268
- task.actions.replace saved.actions.clone
269
- else
270
- # tasks generated at runtime, drop it
271
- @tasks.delete(name)
272
- end
273
- end
274
- end
275
-
276
- task('drb:start') { run_server! } if Buildr.respond_to?(:application)
277
-
278
- end # DRbApplication
279
-
280
- end
281
-
@@ -1,22 +0,0 @@
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
- if Buildr::VERSION < '1.5'
18
- Buildr.application.deprecated "'buildr/emma', use 'buildr/java/emma' instead"
19
- require 'buildr/java/emma'
20
- else
21
- raise "#{__FILE__} should be removed since its use is deprecated since version 1.3.4"
22
- end
@@ -1,142 +0,0 @@
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 'buildr/java'
18
-
19
-
20
- module Buildr
21
-
22
- # Provides Hibernate Doclet and schema export tasks. Require explicitly using <code>require "buildr/hibernate"</code>.
23
- module Hibernate
24
-
25
- REQUIRES = Buildr.struct(
26
- :collections => "commons-collections:commons-collections:jar:3.1",
27
- :logging => "commons-logging:commons-logging:jar:1.0.3",
28
- :dom4j => "dom4j:dom4j:jar:1.6.1",
29
- :hibernate => "org.hibernate:hibernate:jar:3.1.2",
30
- :xdoclet => Buildr.group("xdoclet", "xdoclet-xdoclet-module", "xdoclet-hibernate-module",
31
- # :under=>"xdoclet", :version=>"1.2.3") + ["xdoclet:xjavadoc:jar:1.1-j5"]
32
- :under=>"xdoclet", :version=>"1.2.3") + ["xdoclet:xjavadoc:jar:1.1"]
33
- )
34
-
35
- class << self
36
- include Buildr::Ant
37
-
38
- # :call-seq:
39
- # doclet(options) => AntProject
40
- #
41
- # Uses XDoclet to generate HBM files form annotated source files.
42
- # Options include:
43
- # * :sources -- Directory (or directories) containing source files.
44
- # * :target -- The target directory.
45
- # * :excludetags -- Tags to exclude (see HibernateDocletTask)
46
- #
47
- # For example:
48
- # doclet :sources=>compile.sources, :target=>compile.target, :excludedtags=>"@version,@author,@todo"
49
- def doclet(options)
50
- options[:sources].each { |src| file(src).invoke }
51
- ant "hibernatedoclet" do |ant|
52
- ant.taskdef :name=>"hibernatedoclet", :classname=>"xdoclet.modules.hibernate.HibernateDocletTask", :classpath=>requires
53
- ant.hibernatedoclet :destdir=>options[:target].to_s, :excludedtags=>options[:excludedtags], :force=>"true" do
54
- ant.hibernate :version=>"3.0"
55
- options[:sources].map(&:to_s).each do |source|
56
- ant.fileset :dir=>source.to_s, :includes=>"**/*.java"
57
- end
58
- end
59
- end
60
- end
61
-
62
- # :call-seq:
63
- # schemaexport(properties) { ... } => AntProject
64
- #
65
- # Runs the Hibernate SchemaExportTask with the specified properties. For example:
66
- # Buildr::Hibernate.schemaexport(:properties=>properties.to_s, :quiet=>"yes", :text=>"yes", :delimiter=>";",
67
- # :drop=>"no", :create=>"yes", :output=>target) do
68
- # fileset :dir=>source.to_s, :includes=>"**/*.hbm.xml"
69
- # end
70
- def schemaexport(options = nil)
71
- ant "schemaexport" do |ant|
72
- ant.taskdef :name=>"schemaexport", :classname=>"org.hibernate.tool.hbm2ddl.SchemaExportTask", :classpath=>requires
73
- ant.schemaexport(options) { yield ant if block_given? } if options
74
- end
75
- end
76
-
77
- protected
78
-
79
- # This will download all the required artifacts before returning a classpath, and we want to do this only once.
80
- def requires()
81
- @requires ||= Buildr.artifacts(REQUIRES.to_a).each(&:invoke).map(&:to_s).join(File::PATH_SEPARATOR)
82
- end
83
-
84
- end
85
-
86
- # :call-seq:
87
- # hibernate_doclet(options?) => task
88
- #
89
- # Runs the hibernate doclet on the source files and creates HBM files in the target directory.
90
- # By default runs on all source files, but you can limit it to a given package using the :package
91
- # options. You can also pass other options to the doclet task.
92
- #
93
- # For example:
94
- # resources hibernate_doclet(:package=>"org.apache.ode.store.hib", :excludedtags=>"@version,@author,@todo")
95
- def hibernate_doclet(options = {})
96
- if options[:package]
97
- depends = compile.sources.map { |src| FileList[File.join(src.to_s, options[:package].gsub(".", "/"), "*.java")] }.flatten
98
- else
99
- depends = compile.sources.map { |src| FileList[File.join(src.to_s, "**/*.java")] }.flatten
100
- end
101
- file("target/hbm.timestamp"=>depends) do |task|
102
- Hibernate.doclet({ :sources=>compile.sources, :target=>compile.target }.merge(options))
103
- write task.name
104
- end
105
- end
106
-
107
- # :call-seq:
108
- # hibernate_schemaexport(path) => task
109
- # hibernate_schemaexport(path) { |task, ant| .. } => task
110
- #
111
- # Returns an new file task with an accessor (ant) to an AntProject that defines the schemaexport task.
112
- # If called with a block, the task will yield to the block passing both itself and the Ant project.
113
- #
114
- # See #schemaexport.
115
- #
116
- # For example:
117
- # hibernate_schemaexport "derby.sql" do |task, ant|
118
- # ant.schemaexport :properties=>"derby.properties", :output=>task.name,
119
- # :delimiter=>";", :drop=>"no", :create=>"yes" do
120
- # fileset(:dir=>compile.sources.first) { include :name=>"**/*.hbm.xml" } }
121
- # end
122
- # end
123
- def hibernate_schemaexport(args, &block)
124
- path, arg_names, deps = Rake.application.resolve_args([args])
125
- unless Rake::Task.task_defined?(path)
126
- class << file(path) ; attr_accessor :ant ; end
127
- file(path).enhance { |task| task.ant = Hibernate.schemaexport }
128
- end
129
- if block
130
- file(path).enhance(deps) { |task| block.call task, task.ant }
131
- else
132
- file(path).enhance deps
133
- end
134
- end
135
-
136
- end
137
-
138
- class Project
139
- include Hibernate
140
- end
141
-
142
- end