buildr-gemjar 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (252) hide show
  1. data/.braids +8 -0
  2. data/.gitignore +5 -0
  3. data/.rvmrc +1 -0
  4. data/CHANGELOG.md +4 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +20 -0
  7. data/README.md +98 -0
  8. data/Rakefile +8 -0
  9. data/buildr-gemjar.gemspec +42 -0
  10. data/lib/buildr-gemjar.rb +162 -0
  11. data/lib/buildr-gemjar/version.rb +3 -0
  12. data/meta.rakefile +30 -0
  13. data/spec/buildr-gemjar/version_spec.rb +11 -0
  14. data/spec/buildr-gemjar_spec.rb +179 -0
  15. data/spec/repo_builder.rb +59 -0
  16. data/spec/spec_helper.rb +44 -0
  17. data/vendor/buildr/.gitignore +17 -0
  18. data/vendor/buildr/CHANGELOG +1283 -0
  19. data/vendor/buildr/Gemfile +4 -0
  20. data/vendor/buildr/LICENSE +176 -0
  21. data/vendor/buildr/NOTICE +26 -0
  22. data/vendor/buildr/README.rdoc +134 -0
  23. data/vendor/buildr/Rakefile +44 -0
  24. data/vendor/buildr/_buildr +35 -0
  25. data/vendor/buildr/_jbuildr +35 -0
  26. data/vendor/buildr/addon/buildr/antlr.rb +65 -0
  27. data/vendor/buildr/addon/buildr/bnd.rb +147 -0
  28. data/vendor/buildr/addon/buildr/cobertura.rb +22 -0
  29. data/vendor/buildr/addon/buildr/drb.rb +281 -0
  30. data/vendor/buildr/addon/buildr/emma.rb +22 -0
  31. data/vendor/buildr/addon/buildr/hibernate.rb +149 -0
  32. data/vendor/buildr/addon/buildr/javacc.rb +85 -0
  33. data/vendor/buildr/addon/buildr/jaxb_xjc.rb +72 -0
  34. data/vendor/buildr/addon/buildr/jdepend.rb +60 -0
  35. data/vendor/buildr/addon/buildr/jetty.rb +248 -0
  36. data/vendor/buildr/addon/buildr/jibx.rb +86 -0
  37. data/vendor/buildr/addon/buildr/nailgun.rb +221 -0
  38. data/vendor/buildr/addon/buildr/openjpa.rb +88 -0
  39. data/vendor/buildr/addon/buildr/org/apache/buildr/BuildrNail$Main.class +0 -0
  40. data/vendor/buildr/addon/buildr/org/apache/buildr/BuildrNail.class +0 -0
  41. data/vendor/buildr/addon/buildr/org/apache/buildr/BuildrNail.java +41 -0
  42. data/vendor/buildr/addon/buildr/org/apache/buildr/JettyWrapper$1.class +0 -0
  43. data/vendor/buildr/addon/buildr/org/apache/buildr/JettyWrapper$BuildrHandler.class +0 -0
  44. data/vendor/buildr/addon/buildr/org/apache/buildr/JettyWrapper.class +0 -0
  45. data/vendor/buildr/addon/buildr/org/apache/buildr/JettyWrapper.java +144 -0
  46. data/vendor/buildr/addon/buildr/protobuf.rb +88 -0
  47. data/vendor/buildr/addon/buildr/xmlbeans.rb +93 -0
  48. data/vendor/buildr/all-in-one/_buildr +19 -0
  49. data/vendor/buildr/all-in-one/buildr +368 -0
  50. data/vendor/buildr/all-in-one/buildr.cmd +1 -0
  51. data/vendor/buildr/bin/buildr +19 -0
  52. data/vendor/buildr/buildr.buildfile +58 -0
  53. data/vendor/buildr/buildr.gemspec +74 -0
  54. data/vendor/buildr/doc/_config.yml +1 -0
  55. data/vendor/buildr/doc/_layouts/default.html +90 -0
  56. data/vendor/buildr/doc/_layouts/preface.html +22 -0
  57. data/vendor/buildr/doc/artifacts.textile +217 -0
  58. data/vendor/buildr/doc/building.textile +276 -0
  59. data/vendor/buildr/doc/contributing.textile +268 -0
  60. data/vendor/buildr/doc/css/default.css +236 -0
  61. data/vendor/buildr/doc/css/print.css +101 -0
  62. data/vendor/buildr/doc/css/syntax.css +23 -0
  63. data/vendor/buildr/doc/download.textile +138 -0
  64. data/vendor/buildr/doc/extending.textile +212 -0
  65. data/vendor/buildr/doc/images/1442160941-frontcover.jpg +0 -0
  66. data/vendor/buildr/doc/images/asf-logo.gif +0 -0
  67. data/vendor/buildr/doc/images/asf-logo.png +0 -0
  68. data/vendor/buildr/doc/images/buildr-hires.png +0 -0
  69. data/vendor/buildr/doc/images/buildr.png +0 -0
  70. data/vendor/buildr/doc/images/favicon.png +0 -0
  71. data/vendor/buildr/doc/images/growl-icon.tiff +0 -0
  72. data/vendor/buildr/doc/images/note.png +0 -0
  73. data/vendor/buildr/doc/images/project-structure.png +0 -0
  74. data/vendor/buildr/doc/images/tip.png +0 -0
  75. data/vendor/buildr/doc/images/zbuildr.png +0 -0
  76. data/vendor/buildr/doc/images/zbuildr.tif +0 -0
  77. data/vendor/buildr/doc/index.textile +69 -0
  78. data/vendor/buildr/doc/installing.textile +284 -0
  79. data/vendor/buildr/doc/languages.textile +599 -0
  80. data/vendor/buildr/doc/mailing_lists.textile +29 -0
  81. data/vendor/buildr/doc/more_stuff.textile +845 -0
  82. data/vendor/buildr/doc/packaging.textile +618 -0
  83. data/vendor/buildr/doc/preface.textile +54 -0
  84. data/vendor/buildr/doc/projects.textile +276 -0
  85. data/vendor/buildr/doc/quick_start.textile +210 -0
  86. data/vendor/buildr/doc/releasing.textile +117 -0
  87. data/vendor/buildr/doc/scripts/buildr-git.rb +512 -0
  88. data/vendor/buildr/doc/scripts/gitflow.rb +296 -0
  89. data/vendor/buildr/doc/scripts/install-jruby.sh +44 -0
  90. data/vendor/buildr/doc/scripts/install-linux.sh +73 -0
  91. data/vendor/buildr/doc/scripts/install-osx.sh +52 -0
  92. data/vendor/buildr/doc/settings_profiles.textile +287 -0
  93. data/vendor/buildr/doc/testing.textile +247 -0
  94. data/vendor/buildr/etc/KEYS +189 -0
  95. data/vendor/buildr/lib/buildr.rb +44 -0
  96. data/vendor/buildr/lib/buildr/clojure.rb +34 -0
  97. data/vendor/buildr/lib/buildr/clojure/shell.rb +52 -0
  98. data/vendor/buildr/lib/buildr/core.rb +34 -0
  99. data/vendor/buildr/lib/buildr/core/application.rb +700 -0
  100. data/vendor/buildr/lib/buildr/core/build.rb +516 -0
  101. data/vendor/buildr/lib/buildr/core/cc.rb +166 -0
  102. data/vendor/buildr/lib/buildr/core/checks.rb +253 -0
  103. data/vendor/buildr/lib/buildr/core/common.rb +151 -0
  104. data/vendor/buildr/lib/buildr/core/compile.rb +622 -0
  105. data/vendor/buildr/lib/buildr/core/doc.rb +276 -0
  106. data/vendor/buildr/lib/buildr/core/environment.rb +129 -0
  107. data/vendor/buildr/lib/buildr/core/filter.rb +404 -0
  108. data/vendor/buildr/lib/buildr/core/generate.rb +197 -0
  109. data/vendor/buildr/lib/buildr/core/help.rb +119 -0
  110. data/vendor/buildr/lib/buildr/core/jrebel.rb +42 -0
  111. data/vendor/buildr/lib/buildr/core/linux.rb +30 -0
  112. data/vendor/buildr/lib/buildr/core/osx.rb +46 -0
  113. data/vendor/buildr/lib/buildr/core/progressbar.rb +161 -0
  114. data/vendor/buildr/lib/buildr/core/project.rb +975 -0
  115. data/vendor/buildr/lib/buildr/core/run.rb +43 -0
  116. data/vendor/buildr/lib/buildr/core/shell.rb +137 -0
  117. data/vendor/buildr/lib/buildr/core/test.rb +843 -0
  118. data/vendor/buildr/lib/buildr/core/transports.rb +565 -0
  119. data/vendor/buildr/lib/buildr/core/util.rb +537 -0
  120. data/vendor/buildr/lib/buildr/groovy.rb +20 -0
  121. data/vendor/buildr/lib/buildr/groovy/bdd.rb +106 -0
  122. data/vendor/buildr/lib/buildr/groovy/compiler.rb +153 -0
  123. data/vendor/buildr/lib/buildr/groovy/doc.rb +76 -0
  124. data/vendor/buildr/lib/buildr/groovy/shell.rb +57 -0
  125. data/vendor/buildr/lib/buildr/ide.rb +19 -0
  126. data/vendor/buildr/lib/buildr/ide/eclipse.rb +427 -0
  127. data/vendor/buildr/lib/buildr/ide/eclipse/java.rb +53 -0
  128. data/vendor/buildr/lib/buildr/ide/eclipse/plugin.rb +71 -0
  129. data/vendor/buildr/lib/buildr/ide/eclipse/scala.rb +68 -0
  130. data/vendor/buildr/lib/buildr/ide/idea.rb +576 -0
  131. data/vendor/buildr/lib/buildr/java.rb +25 -0
  132. data/vendor/buildr/lib/buildr/java/ant.rb +94 -0
  133. data/vendor/buildr/lib/buildr/java/bdd.rb +460 -0
  134. data/vendor/buildr/lib/buildr/java/cobertura.rb +297 -0
  135. data/vendor/buildr/lib/buildr/java/commands.rb +223 -0
  136. data/vendor/buildr/lib/buildr/java/compiler.rb +135 -0
  137. data/vendor/buildr/lib/buildr/java/deprecated.rb +141 -0
  138. data/vendor/buildr/lib/buildr/java/doc.rb +86 -0
  139. data/vendor/buildr/lib/buildr/java/ecj.rb +69 -0
  140. data/vendor/buildr/lib/buildr/java/emma.rb +244 -0
  141. data/vendor/buildr/lib/buildr/java/external.rb +73 -0
  142. data/vendor/buildr/lib/buildr/java/jruby.rb +122 -0
  143. data/vendor/buildr/lib/buildr/java/jtestr_result.rb +295 -0
  144. data/vendor/buildr/lib/buildr/java/jtestr_runner.rb.erb +116 -0
  145. data/vendor/buildr/lib/buildr/java/org/apache/buildr/JavaTestFilter.class +0 -0
  146. data/vendor/buildr/lib/buildr/java/org/apache/buildr/JavaTestFilter.java +142 -0
  147. data/vendor/buildr/lib/buildr/java/packaging.rb +734 -0
  148. data/vendor/buildr/lib/buildr/java/pom.rb +178 -0
  149. data/vendor/buildr/lib/buildr/java/rjb.rb +154 -0
  150. data/vendor/buildr/lib/buildr/java/test_result.rb +101 -0
  151. data/vendor/buildr/lib/buildr/java/tests.rb +362 -0
  152. data/vendor/buildr/lib/buildr/java/version_requirement.rb +172 -0
  153. data/vendor/buildr/lib/buildr/packaging.rb +25 -0
  154. data/vendor/buildr/lib/buildr/packaging/archive.rb +535 -0
  155. data/vendor/buildr/lib/buildr/packaging/artifact.rb +903 -0
  156. data/vendor/buildr/lib/buildr/packaging/artifact_namespace.rb +984 -0
  157. data/vendor/buildr/lib/buildr/packaging/artifact_search.rb +140 -0
  158. data/vendor/buildr/lib/buildr/packaging/gems.rb +105 -0
  159. data/vendor/buildr/lib/buildr/packaging/package.rb +249 -0
  160. data/vendor/buildr/lib/buildr/packaging/tar.rb +189 -0
  161. data/vendor/buildr/lib/buildr/packaging/version_requirement.rb +192 -0
  162. data/vendor/buildr/lib/buildr/packaging/zip.rb +178 -0
  163. data/vendor/buildr/lib/buildr/packaging/ziptask.rb +356 -0
  164. data/vendor/buildr/lib/buildr/resources/buildr.icns +0 -0
  165. data/vendor/buildr/lib/buildr/resources/completed.png +0 -0
  166. data/vendor/buildr/lib/buildr/resources/failed.png +0 -0
  167. data/vendor/buildr/lib/buildr/resources/icons-license.txt +17 -0
  168. data/vendor/buildr/lib/buildr/run.rb +195 -0
  169. data/vendor/buildr/lib/buildr/scala.rb +26 -0
  170. data/vendor/buildr/lib/buildr/scala/bdd.rb +118 -0
  171. data/vendor/buildr/lib/buildr/scala/compiler.rb +242 -0
  172. data/vendor/buildr/lib/buildr/scala/doc.rb +142 -0
  173. data/vendor/buildr/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.class +0 -0
  174. data/vendor/buildr/lib/buildr/scala/org/apache/buildr/SpecsSingletonRunner.java +57 -0
  175. data/vendor/buildr/lib/buildr/scala/shell.rb +52 -0
  176. data/vendor/buildr/lib/buildr/scala/tests.rb +171 -0
  177. data/vendor/buildr/lib/buildr/shell.rb +185 -0
  178. data/vendor/buildr/lib/buildr/version.rb +18 -0
  179. data/vendor/buildr/rakelib/all-in-one.rake +113 -0
  180. data/vendor/buildr/rakelib/checks.rake +57 -0
  181. data/vendor/buildr/rakelib/doc.rake +137 -0
  182. data/vendor/buildr/rakelib/metrics.rake +39 -0
  183. data/vendor/buildr/rakelib/package.rake +73 -0
  184. data/vendor/buildr/rakelib/release.rake +161 -0
  185. data/vendor/buildr/rakelib/rspec.rake +101 -0
  186. data/vendor/buildr/rakelib/setup.rake +66 -0
  187. data/vendor/buildr/rakelib/stage.rake +220 -0
  188. data/vendor/buildr/spec/addon/bnd_spec.rb +330 -0
  189. data/vendor/buildr/spec/addon/drb_spec.rb +328 -0
  190. data/vendor/buildr/spec/addon/jaxb_xjc_spec.rb +125 -0
  191. data/vendor/buildr/spec/core/application_spec.rb +631 -0
  192. data/vendor/buildr/spec/core/build_spec.rb +837 -0
  193. data/vendor/buildr/spec/core/cc_spec.rb +224 -0
  194. data/vendor/buildr/spec/core/checks_spec.rb +519 -0
  195. data/vendor/buildr/spec/core/common_spec.rb +725 -0
  196. data/vendor/buildr/spec/core/compile_spec.rb +658 -0
  197. data/vendor/buildr/spec/core/doc_spec.rb +195 -0
  198. data/vendor/buildr/spec/core/extension_spec.rb +201 -0
  199. data/vendor/buildr/spec/core/generate_spec.rb +33 -0
  200. data/vendor/buildr/spec/core/project_spec.rb +772 -0
  201. data/vendor/buildr/spec/core/run_spec.rb +93 -0
  202. data/vendor/buildr/spec/core/shell_spec.rb +146 -0
  203. data/vendor/buildr/spec/core/test_spec.rb +1320 -0
  204. data/vendor/buildr/spec/core/transport_spec.rb +544 -0
  205. data/vendor/buildr/spec/core/util_spec.rb +141 -0
  206. data/vendor/buildr/spec/groovy/bdd_spec.rb +80 -0
  207. data/vendor/buildr/spec/groovy/compiler_spec.rb +251 -0
  208. data/vendor/buildr/spec/groovy/doc_spec.rb +65 -0
  209. data/vendor/buildr/spec/ide/eclipse_spec.rb +739 -0
  210. data/vendor/buildr/spec/ide/idea_spec.rb +1144 -0
  211. data/vendor/buildr/spec/java/ant_spec.rb +37 -0
  212. data/vendor/buildr/spec/java/bdd_spec.rb +374 -0
  213. data/vendor/buildr/spec/java/cobertura_spec.rb +112 -0
  214. data/vendor/buildr/spec/java/commands_spec.rb +93 -0
  215. data/vendor/buildr/spec/java/compiler_spec.rb +252 -0
  216. data/vendor/buildr/spec/java/doc_spec.rb +56 -0
  217. data/vendor/buildr/spec/java/ecj_spec.rb +115 -0
  218. data/vendor/buildr/spec/java/emma_spec.rb +121 -0
  219. data/vendor/buildr/spec/java/external_spec.rb +56 -0
  220. data/vendor/buildr/spec/java/java_spec.rb +132 -0
  221. data/vendor/buildr/spec/java/packaging_spec.rb +1270 -0
  222. data/vendor/buildr/spec/java/run_spec.rb +78 -0
  223. data/vendor/buildr/spec/java/test_coverage_helper.rb +257 -0
  224. data/vendor/buildr/spec/java/tests_spec.rb +497 -0
  225. data/vendor/buildr/spec/packaging/archive_spec.rb +775 -0
  226. data/vendor/buildr/spec/packaging/artifact_namespace_spec.rb +743 -0
  227. data/vendor/buildr/spec/packaging/artifact_spec.rb +1066 -0
  228. data/vendor/buildr/spec/packaging/packaging_helper.rb +63 -0
  229. data/vendor/buildr/spec/packaging/packaging_spec.rb +719 -0
  230. data/vendor/buildr/spec/sandbox.rb +165 -0
  231. data/vendor/buildr/spec/scala/bdd_spec.rb +124 -0
  232. data/vendor/buildr/spec/scala/compiler_spec.rb +289 -0
  233. data/vendor/buildr/spec/scala/doc_spec.rb +88 -0
  234. data/vendor/buildr/spec/scala/scala.rb +38 -0
  235. data/vendor/buildr/spec/scala/tests_spec.rb +283 -0
  236. data/vendor/buildr/spec/spec_helpers.rb +369 -0
  237. data/vendor/buildr/spec/version_requirement_spec.rb +143 -0
  238. data/vendor/buildr/spec/xpath_matchers.rb +121 -0
  239. data/vendor/buildr/tests/BUILDR-320/Buildfile +29 -0
  240. data/vendor/buildr/tests/JavaSystemProperty/Buildfile +18 -0
  241. data/vendor/buildr/tests/JavaSystemProperty/src/test/java/FooTest.java +24 -0
  242. data/vendor/buildr/tests/compile_with_parent/Buildfile +18 -0
  243. data/vendor/buildr/tests/compile_with_parent/child/src/main/java/Foo.java +23 -0
  244. data/vendor/buildr/tests/helloWorld/Buildfile +20 -0
  245. data/vendor/buildr/tests/helloWorld/src/main/java/HelloWorld.java +23 -0
  246. data/vendor/buildr/tests/integration_testing.rb +56 -0
  247. data/vendor/buildr/tests/junit3/Buildfile +9 -0
  248. data/vendor/buildr/tests/junit3/src/main/java/Foo.java +23 -0
  249. data/vendor/buildr/tests/junit3/src/test/java/FooTest.java +28 -0
  250. data/vendor/buildr/tests/package_war_as_jar/Buildfile +15 -0
  251. data/vendor/buildr/tests/package_war_as_jar/src/main/java/Foo.java +19 -0
  252. metadata +524 -0
data/.braids ADDED
@@ -0,0 +1,8 @@
1
+ ---
2
+ vendor/buildr:
3
+ branch: trunk
4
+ remote: braid/vendor/buildr
5
+ revision: 5c643a311d181f06e6c09b33b98a5a24c546d6b7
6
+ squashed: true
7
+ type: git
8
+ url: git://git.apache.org/buildr.git
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ tmp/*
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm_gemset_create_on_use_flag=1; rvm gemset use buildr-gemjar
data/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ 1.0.0
2
+ =====
3
+
4
+ - Initial version
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in buildr-gemjar/.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2011 Rhett Sutphin
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,98 @@
1
+ buildr-gemjar
2
+ =============
3
+
4
+ `buildr-gemjar` is an extension for [buildr][] that makes it easy to
5
+ package gems and their dependencies into a jar so that [JRuby can
6
+ detect them on the classpath][gemjar].
7
+
8
+ [buildr]: http://buildr.apache.org/
9
+ [gemjar]: http://blog.nicksieger.com/articles/2009/01/10/jruby-1-1-6-gems-in-a-jar
10
+
11
+ Installing
12
+ ----------
13
+
14
+ `buildr-gemjar` is distributed as a rubygem on
15
+ [rubygems.org][as-gem]. Install it as you would any other gem:
16
+
17
+ $ gem install buildr-gemjar
18
+
19
+ [as-gem]: https://rubygems.org/gems/buildr-gemjar
20
+
21
+ Using
22
+ -----
23
+
24
+ `buildr-gemjar` provides a [package type][buildr-package] called
25
+ `:gemjar`. Sample use:
26
+
27
+ # buildfile
28
+ require 'buildr-gemjar'
29
+
30
+ define 'sinatra-gems' do
31
+ project.version = '1.1.2'
32
+
33
+ package(:gemjar).with_gem('sinatra', project.version)
34
+ end
35
+
36
+ When you run `buildr package`, the result will be a JAR which contains
37
+ sinatra 1.1.2 and all its dependencies.
38
+
39
+ You can specify multiple gems:
40
+
41
+ package(:gemjar).
42
+ with_gem('activesupport', '2.3.10').
43
+ with_gem('facets, '2.4.5')
44
+
45
+ You can specify additional sources on top of rubygems.org:
46
+
47
+ package(:gemjar).
48
+ add_source('http://myrepo.local/gems').
49
+ with_gem('my-orm', '1.0.3')
50
+
51
+ You can also include a gem for which you have a `.gem` package:
52
+
53
+ package(:gemjar).with_gem(:file => _('snapshot-gem-2.0.7.pre.gem'))
54
+
55
+ [buildr-package]: http://buildr.apache.org/packaging.html
56
+
57
+ Caveats
58
+ -------
59
+
60
+ It's important that the name of your JAR not be the same as anything
61
+ you will `require` from it. E.g., in the sample above, if the JAR
62
+ were named `sinatra.jar`, it would not be possible to `require
63
+ "sinatra"` from it. (This is a general JRuby requirement, not
64
+ something that's specific to this tool.)
65
+
66
+ Compatibility
67
+ -------------
68
+
69
+ `buildr-gemjar` has been tested with buildr 1.4.4 on ruby 1.8.7,
70
+ 1.9.2, and JRuby* 1.5.6. It's expected that it will work with any
71
+ fairly recent version of buildr. It's been tested on OS X and Linux;
72
+ it may or may not work on Windows.
73
+
74
+ (*The spec suite does not execute on JRuby for no reason I've yet
75
+ been able to track down, but manual testing indicates that the
76
+ extension works fine on that platform.)
77
+
78
+ Future work
79
+ -----------
80
+
81
+ * Use [bundler][] to get a coherent list of dependencies across
82
+ several gems. (It would already do this, except that bundler
83
+ doesn't support sourcing a gem from a `.gem` file, which is a more
84
+ important feature.)
85
+ * Improve performance. Currently a new JVM is spun up to do each gem
86
+ install, which can be slow if there are a lot of gems.
87
+ * Support Windows.
88
+
89
+ [bundler]: http://gembundler.com/
90
+
91
+ About
92
+ -----
93
+
94
+ Copyright 2011, Rhett Sutphin.
95
+
96
+ `buildr-gemjar` was built at [NUBIC][].
97
+
98
+ [NUBIC]: http://www.nucats.northwestern.edu/centers/nubic
data/Rakefile ADDED
@@ -0,0 +1,8 @@
1
+ require 'bundler'
2
+ require 'rspec/core/rake_task'
3
+
4
+ Bundler::GemHelper.install_tasks
5
+
6
+ RSpec::Core::RakeTask.new do |t|
7
+ t.pattern = "spec/**/*_spec.rb"
8
+ end
@@ -0,0 +1,42 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "buildr-gemjar/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "buildr-gemjar"
7
+ s.version = BuildrGemjar::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = ["Rhett Sutphin"]
10
+ s.email = ["rhett@detailedbalance.net"]
11
+ s.homepage = ""
12
+ s.summary = %q{Provides buildr support for packaging gems in a JAR for JRuby}
13
+
14
+ s.rubyforge_project = "buildr-gemjar"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # Have to use buildr's version for its spec helper to work
22
+ # s.add_development_dependency 'rspec', '~> 2.4'
23
+ s.add_development_dependency 'braid', '~> 0.6'
24
+
25
+ # Deps for the vendored buildr that's used in testing
26
+ s.add_development_dependency 'rake', '0.8.7'
27
+ s.add_development_dependency 'builder', '2.1.2'
28
+ s.add_development_dependency 'net-ssh', '2.0.23'
29
+ s.add_development_dependency 'net-sftp', '2.0.4'
30
+ s.add_development_dependency 'rubyzip', '0.9.4'
31
+ s.add_development_dependency 'highline', '1.5.1'
32
+ s.add_development_dependency 'json_pure', '1.4.3'
33
+ s.add_development_dependency 'rubyforge', '2.0.3'
34
+ s.add_development_dependency 'hoe', '2.3.3'
35
+ s.add_development_dependency 'rjb', '1.3.3' if s.platform.to_s == 'ruby'
36
+ s.add_development_dependency 'rjb', '1.3.2' if s.platform.to_s == 'x86-mswin32'
37
+ s.add_development_dependency 'atoulme-Antwrap', '0.7.1'
38
+ s.add_development_dependency 'rspec', '~> 2.1.0'
39
+ s.add_development_dependency 'xml-simple', '1.0.12'
40
+ s.add_development_dependency 'minitar', '0.5.3'
41
+ s.add_development_dependency 'jruby-openssl', '>= 0.7' if s.platform.to_s == 'java'
42
+ end
@@ -0,0 +1,162 @@
1
+ require 'buildr/java/packaging'
2
+
3
+ module BuildrGemjar
4
+ class GemjarTask < Buildr::Packaging::Java::JarTask
5
+ def initialize(*args)
6
+ super
7
+ @target = File.expand_path("../gem_home", self.to_s)
8
+ mkdir_p @target
9
+
10
+ clean
11
+ include(@target, :as => '.')
12
+ enhance do
13
+ install_gems
14
+ end
15
+ end
16
+
17
+ def with_gem(*args)
18
+ new_gem =
19
+ if args.first.respond_to?(:has_key?)
20
+ FileSourcedGem.new(args.first[:file])
21
+ else
22
+ NamedGem.new(args[0], args[1])
23
+ end
24
+ gems << new_gem
25
+ enhance new_gem.dependencies
26
+ self
27
+ end
28
+
29
+ def clear_sources
30
+ sources.clear
31
+ self
32
+ end
33
+
34
+ def add_source(source)
35
+ sources << source
36
+ self
37
+ end
38
+
39
+ def gems
40
+ @gems ||= []
41
+ end
42
+
43
+ def sources
44
+ @sources ||= ['http://rubygems.org']
45
+ end
46
+
47
+ private
48
+
49
+ def install_gems
50
+ fail "No gems specified. Did you call #with_gem?" if gems.empty?
51
+ gems.each do |gem|
52
+ cmd = [
53
+ "GEM_HOME='#{@target}'",
54
+ "java",
55
+ "-jar",
56
+ BuildrGemjar.jruby_complete_jar,
57
+ "-S",
58
+ "gem",
59
+ "install",
60
+ # The behavior of --source changed between rubygems 1.3.6
61
+ # and 1.5.0. Previously, specifying source(s) overrode the
62
+ # default source(s). After, specifying source(s) adds onto
63
+ # the default list. To get the old behavior, you have to
64
+ # include "--clear-sources". This code wants the old
65
+ # behavior, but no version of jruby-complete contains a
66
+ # version of rubygems > 1.3.6, so it's not an issue today.
67
+ # Later we'll probably have to do version sniffing or
68
+ # something.
69
+ # "--clear-sources",
70
+ sources.collect { |s| ["--source", "'#{s}'"] },
71
+ "--no-ri",
72
+ "--no-rdoc",
73
+ gem.install_command_elements
74
+ ].flatten.join(" ")
75
+
76
+ trace cmd
77
+ out = %x[#{cmd} 2>&1]
78
+ trace out
79
+ if out =~ /ERROR/
80
+ fail out.split("\n").grep(/ERROR/).join("\n")
81
+ end
82
+ end
83
+ end
84
+
85
+ class FileSourcedGem
86
+ attr_accessor :filename
87
+
88
+ def initialize(filename)
89
+ @filename = filename
90
+ end
91
+
92
+ def kind; :file; end
93
+
94
+ def install_command_elements
95
+ [filename]
96
+ end
97
+
98
+ def dependencies
99
+ [(filename if File.exist?(filename))].compact
100
+ end
101
+ end
102
+
103
+ class NamedGem
104
+ attr_accessor :name, :version
105
+
106
+ def initialize(name, version)
107
+ @name = name
108
+ @version = version
109
+ end
110
+
111
+ def kind; :named; end
112
+
113
+ def install_command_elements
114
+ [name].tap do |elts|
115
+ elts << "-v '#{version}'" if version
116
+ end
117
+ end
118
+
119
+ def dependencies
120
+ []
121
+ end
122
+ end
123
+ end
124
+
125
+ include Buildr::Extension
126
+
127
+ def package_as_gemjar(filename)
128
+ GemjarTask.define_task(filename)
129
+ end
130
+
131
+ def package_as_gemjar_spec(spec)
132
+ spec.merge(:type => 'jar')
133
+ end
134
+
135
+ def self.jruby_version
136
+ version = Buildr.settings.build['jruby'] ||
137
+ (JRUBY_VERSION if Kernel.const_defined?(:JRUBY_VERSION)) ||
138
+ "1.5.6"
139
+ end
140
+
141
+ def self.jruby_artifact
142
+ "org.jruby:jruby-complete:jar:#{jruby_version}"
143
+ end
144
+
145
+ class << self
146
+ attr_accessor :jruby_complete_jar
147
+ end
148
+
149
+ after_define do |project|
150
+ jruby = project.artifact(BuildrGemjar.jruby_artifact)
151
+ project.packages.each do |pkg|
152
+ if pkg.is_a?(GemjarTask)
153
+ pkg.enhance [jruby]
154
+ BuildrGemjar.jruby_complete_jar = jruby.to_s
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+ class Buildr::Project
161
+ include BuildrGemjar
162
+ end
@@ -0,0 +1,3 @@
1
+ module BuildrGemjar
2
+ VERSION = "1.0.0"
3
+ end
data/meta.rakefile ADDED
@@ -0,0 +1,30 @@
1
+ PLATFORMS = {
2
+ :ruby18 => 'ruby-1.8.7-p330',
3
+ :jruby => 'jruby-1.5.6',
4
+ :ruby19 => 'ruby-1.9.2-p136'
5
+ }
6
+
7
+ BUNDLER_VERSION = '1.0.10'
8
+
9
+ def ci_env
10
+ (ENV["GEMJAR_ENV"] || :ruby18).to_sym
11
+ end
12
+
13
+ namespace :ci do
14
+ task :rvmrc do
15
+ puts "#{PLATFORMS[ci_env]}@buildr-gemjar"
16
+ end
17
+
18
+ task :ensure_bundler_available do
19
+ unless Gem.available?('bundler', BUNDLER_VERSION)
20
+ puts "Installing bundler"
21
+ system "gem install bundler -v '#{BUNDLER_VERSION}'"
22
+ end
23
+ end
24
+
25
+ task :setup => [:ensure_bundler_available] do
26
+ system "bundle _#{BUNDLER_VERSION}_ install"
27
+ end
28
+ end
29
+
30
+ task :default => 'ci:setup'
@@ -0,0 +1,11 @@
1
+ require File.expand_path("../../spec_helper.rb", __FILE__)
2
+
3
+ describe BuildrGemjar, "::VERSION" do
4
+ it "exists" do
5
+ lambda { BuildrGemjar::VERSION }.should_not raise_error
6
+ end
7
+
8
+ it "has 3 or 4 dot separated parts" do
9
+ BuildrGemjar::VERSION.split('.').size.should be_between(3, 4)
10
+ end
11
+ end
@@ -0,0 +1,179 @@
1
+ require File.expand_path("../spec_helper.rb", __FILE__)
2
+
3
+ describe ":gemjar packaging" do
4
+ describe "#with_gem" do
5
+ def actual_gems
6
+ projects.first.packages.first.gems
7
+ end
8
+
9
+ it "accepts a gem name" do
10
+ define('foo', :version => '1.0') {
11
+ package(:gemjar).with_gem('shenandoah', '~> 0.1.0')
12
+ }
13
+
14
+ actual_gems.first.kind.should == :named
15
+ actual_gems.first.name.should == 'shenandoah'
16
+ actual_gems.first.version.should == '~> 0.1.0'
17
+ end
18
+
19
+ it "defaults the version to nil" do
20
+ define('foo', :version => '1.0') {
21
+ package(:gemjar).with_gem('shenandoah')
22
+ }
23
+
24
+ actual_gems.first.kind.should == :named
25
+ actual_gems.first.name.should == 'shenandoah'
26
+ actual_gems.first.version.should be_nil
27
+ end
28
+
29
+ it "accepts a filename" do
30
+ define('foo', :version => '1.0') {
31
+ package(:gemjar).with_gem(:file => 'foo/bcdatabase-1.0.3.pre.gem')
32
+ }
33
+
34
+ actual_gems.first.kind.should == :file
35
+ actual_gems.first.filename.should == 'foo/bcdatabase-1.0.3.pre.gem'
36
+ end
37
+
38
+ it "can be invoked multiple times" do
39
+ define('foo', :version => '1.0') {
40
+ package(:gemjar).
41
+ with_gem('ladle', '~> 0.2.0').
42
+ with_gem(:file => 'target/just-built.gem').
43
+ with_gem('schema_qualified_tables', '~> 1.0.0')
44
+ }
45
+
46
+ actual_gems.collect { |g| g.kind }.should == [:named, :file, :named]
47
+ end
48
+ end
49
+
50
+ describe "sources" do
51
+ def actual_sources
52
+ projects.first.packages.first.sources
53
+ end
54
+
55
+ it "defaults to rubygems.org" do
56
+ define('foo', :version => '1.0') {
57
+ package(:gemjar)
58
+ }
59
+
60
+ actual_sources.should == %w(http://rubygems.org)
61
+ end
62
+
63
+ it "appends new sources while preserving the default" do
64
+ define('foo', :version => '1.0') {
65
+ package(:gemjar).
66
+ add_source('http://archive.local/gems').
67
+ with_gem('private-stuff')
68
+ }
69
+
70
+ actual_sources.should == %w(http://rubygems.org http://archive.local/gems)
71
+ end
72
+
73
+ it "can clear the default source" do
74
+ define('foo', :version => '1.0') {
75
+ package(:gemjar).clear_sources.add_source('http://archive.local/gems')
76
+ }
77
+
78
+ actual_sources.should == %w(http://archive.local/gems)
79
+ end
80
+ end
81
+
82
+ describe "name" do
83
+ it "uses 'jar' as the extension" do
84
+ define('foo', :version => '1.0') { package(:gemjar) }
85
+ project('foo').package(:gemjar).to_s.should =~ /\.jar/
86
+ end
87
+ end
88
+
89
+ describe "execution" do
90
+ before(:all) do
91
+ create_repo
92
+ end
93
+
94
+ after(:all) do
95
+ rm_repo
96
+ end
97
+
98
+ def test_package(invoke=true)
99
+ r = repo_path
100
+ define('foo', :version => '2.0') { |project|
101
+ yield package(:gemjar).clear_sources.add_source("file://#{r}")
102
+ }
103
+ @pkg = projects.first.packages.first
104
+ @pkg.invoke if invoke
105
+ @pkg.to_s
106
+ end
107
+
108
+ it "includes the explicitly requested gem" do
109
+ test_package { |p| p.with_gem("c") }.
110
+ should be_a_jar_containing("specifications/c-2.3.2.gemspec")
111
+ end
112
+
113
+ it "fails if the gem isn't available" do
114
+ lambda {
115
+ test_package { |p| p.with_gem("y") }
116
+ }.should raise_error(/could not find gem y/)
117
+ end
118
+
119
+ it "includes the specific version requested" do
120
+ test_package { |p| p.with_gem("b", "1.1") }.
121
+ should be_a_jar_containing("specifications/b-1.1.gemspec")
122
+ end
123
+
124
+ it "fails if the version requested isn't available" do
125
+ lambda {
126
+ test_package { |p| p.with_gem("b", "> 2") }
127
+ }.should raise_error(/could not find gem b/)
128
+ end
129
+
130
+ it "includes dependencies of the requested gem" do
131
+ test_package { |p| p.with_gem("c") }.
132
+ should be_a_jar_containing("specifications/a-1.0.gemspec")
133
+ end
134
+
135
+ it "includes the java variant of the gem when applicable" do
136
+ test_package { |p| p.with_gem("jr") }.
137
+ should be_a_jar_containing("specifications/jr-1.0-java.gemspec")
138
+ end
139
+
140
+ it "includes more than one explicitly prequested gem" do
141
+ test_package { |p| p.with_gem("b").with_gem("c") }.
142
+ should be_a_jar_containing("specifications/b-1.2.gemspec", "specifications/c-2.3.2.gemspec")
143
+ end
144
+
145
+ it "includes a gem from a file" do
146
+ create_gem "f", "2.3", :path => tmp("other")
147
+ test_package { |p| p.with_gem(:file => tmp("other", "f-2.3.gem")) }.
148
+ should be_a_jar_containing("specifications/f-2.3.gemspec")
149
+ end
150
+
151
+ it "fails usefully when a specified file isn't available" do
152
+ lambda {
153
+ test_package { |p| p.with_gem(:file => "z-4.5.gem") }
154
+ }.should raise_error(/could not find gem z-4.5.gem/)
155
+ end
156
+
157
+ it "usually only builds the jar once" do
158
+ create_gem "f", "2.3", :path => tmp("other")
159
+ path = test_package(false) { |p| p.with_gem(:file => tmp("other", "f-2.3.gem")) }
160
+ touch path
161
+ stat = File.stat(path)
162
+ sleep 5
163
+ @pkg.invoke
164
+ stat.mtime.should == File.stat(path).mtime
165
+ end
166
+
167
+ it "rebuilds the jar if the source file changes" do
168
+ create_gem "f", "2.3", :path => tmp("other")
169
+ path = test_package(false) { |p| p.with_gem(:file => tmp("other", "f-2.3.gem")) }
170
+ touch path
171
+ stat = File.stat(path)
172
+ sleep 4
173
+ touch tmp("other", "f-2.3.gem")
174
+ @pkg.invoke
175
+ stat.mtime.should_not == File.stat(path).mtime
176
+ end
177
+ end
178
+ end
179
+