pepijnve-ivy4r 0.12.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/.autotest +14 -0
  2. data/.gitignore +7 -0
  3. data/.project +17 -0
  4. data/.rspec +2 -0
  5. data/CHANGELOG +280 -0
  6. data/Gemfile +5 -0
  7. data/README.txt +124 -0
  8. data/Rakefile +36 -0
  9. data/autotest/discover.rb +1 -0
  10. data/ivy4r.gemspec +30 -0
  11. data/lib/buildr/ivy_extension.rb +808 -0
  12. data/lib/ivy/artifactproperty.rb +34 -0
  13. data/lib/ivy/artifactreport.rb +24 -0
  14. data/lib/ivy/buildlist.rb +37 -0
  15. data/lib/ivy/buildnumber.rb +34 -0
  16. data/lib/ivy/cachepath.rb +30 -0
  17. data/lib/ivy/cleancache.rb +20 -0
  18. data/lib/ivy/configure.rb +29 -0
  19. data/lib/ivy/findrevision.rb +34 -0
  20. data/lib/ivy/info.rb +36 -0
  21. data/lib/ivy/install.rb +33 -0
  22. data/lib/ivy/java/all_version_matcher.rb +31 -0
  23. data/lib/ivy/java/java_object_wrapper.rb +160 -0
  24. data/lib/ivy/listmodules.rb +35 -0
  25. data/lib/ivy/makepom.rb +30 -0
  26. data/lib/ivy/publish.rb +37 -0
  27. data/lib/ivy/report.rb +33 -0
  28. data/lib/ivy/resolve.rb +44 -0
  29. data/lib/ivy/retrieve.rb +27 -0
  30. data/lib/ivy/settings.rb +15 -0
  31. data/lib/ivy/target.rb +162 -0
  32. data/lib/ivy/targets.rb +50 -0
  33. data/lib/ivy4r.rb +252 -0
  34. data/lib/ivy4r/version.rb +3 -0
  35. data/lib/ivy4r_java_extensions.rb +42 -0
  36. data/lib/rake/ivy_extension.rb +349 -0
  37. data/spec/ivy/target_spec.rb +86 -0
  38. data/spec/ivy/targets_spec.rb +27 -0
  39. data/spec/ivy4r_spec.rb +50 -0
  40. data/spec/spec_helper.rb +10 -0
  41. data/spec_files/buildlist/p1/buildfile +0 -0
  42. data/spec_files/buildlist/p1/ivy.xml +7 -0
  43. data/spec_files/buildlist/sub/p2/buildfile +0 -0
  44. data/spec_files/buildlist/sub/p2/ivy.xml +11 -0
  45. data/spec_files/buildlist/sub/p3/buildfile +0 -0
  46. data/spec_files/buildlist/sub/p3/ivy.xml +11 -0
  47. data/spec_files/ivy.xml +18 -0
  48. data/spec_files/ivysettings.xml +11 -0
  49. data/spec_functional/ivy4r_spec.rb +131 -0
  50. metadata +214 -0
data/.autotest ADDED
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ Bundler.require(:default, :development)
3
+
4
+ # see https://github.com/rspec/rspec/wiki/autotest
5
+
6
+ Autotest.add_hook(:initialize) {|at|
7
+ at.add_exception %r{^\.git} # ignore Version Control System
8
+ at.add_exception %r{^./tmp} # ignore temp files, lest autotest will run again, and again...
9
+ at.clear_mappings # take out the default (test/test*rb)
10
+ at.add_mapping(%r{^lib/.*\.rb$}) {|f, _|
11
+ Dir['spec*/**/*.rb']
12
+ }
13
+ nil
14
+ }
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ .bundle
2
+ doc
3
+ *~
4
+ nbproject
5
+ pkg
6
+ Gemfile.lock
7
+ ivy4r-*.gem
data/.project ADDED
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <projectDescription>
3
+ <name>ivy4r</name>
4
+ <comment></comment>
5
+ <projects>
6
+ </projects>
7
+ <buildSpec>
8
+ <buildCommand>
9
+ <name>org.rubypeople.rdt.core.rubybuilder</name>
10
+ <arguments>
11
+ </arguments>
12
+ </buildCommand>
13
+ </buildSpec>
14
+ <natures>
15
+ <nature>org.rubypeople.rdt.core.rubynature</nature>
16
+ </natures>
17
+ </projectDescription>
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format nested
2
+ --color
data/CHANGELOG ADDED
@@ -0,0 +1,280 @@
1
+ === 0.12.11 / 2014-11-21
2
+ * Fix compatibility with MRI Ruby 2.x+
3
+ * Buildr: Use doc instead of javadoc to silence deprecation warnings
4
+
5
+ === 0.12.10 / 2011-01-21
6
+ * Default folder for settings file changed to '@extension_dir/iyvsettings.xml'
7
+ * Default ivy.home property is left empty to use default '${user.home}/.ivy2'
8
+
9
+ === 0.12.9 / 2011-01-17
10
+ * Added missing 'install' target, use it as defined in Ivy documentation
11
+
12
+ === 0.12.8 / 2011-01-14
13
+ * Converted all tests to RSpec2 specs and grouped them according to functional and normal spec
14
+ * Started adding more specs to get a descent test coverage
15
+ * Fixed regression error on Ivy status for buildr, now the proc is used if given
16
+
17
+ === 0.12.7 / 2011-01-06
18
+ * Fixed error in manifest: module was organisation name.
19
+ * info task uses the same ivy config as the other ivy tasks
20
+
21
+ === 0.12.6 / 2010-10-20
22
+ * Fixed copy & paste error
23
+
24
+ === 0.12.5 / 2010-10-20
25
+ * Fixed typo preventing compile to work properly
26
+
27
+ === 0.12.4 / 2010-10-19
28
+ * Fixed next problem regarding removal of "facets/blank": must be able to handle Regexps and Strings so needed to check both for beeing blank
29
+
30
+ === 0.12.3 / 2010-10-19
31
+ * Missed to fix the rake extension: Removed use of "facets/blank" using now "empty?" did not find the use when removing the require
32
+
33
+ === 0.12.2 / 2010-10-19
34
+ * Removed use of "facets/blank" using now "empty?" did not find the use when removing the require
35
+ * Add fix for error while merging additional infos into manifest files. Some jars, ears or wars do not have a manifest no just do nothing.
36
+
37
+ === 0.12.1 / 2010-10-13
38
+ * Use [project target dir]/pom.xml as default name for generated POM files.
39
+ * Works with MRI and JRuby
40
+ * remove unused and old import of 'facets/blank' that does not exists in new facets gem anymore
41
+
42
+ === 0.12.0 / 2010-10-12
43
+ * Use new version of ivy4r-jars. The new version is based on the last release of Ivy 2.2.0 with better support for POMs and a few bugfixes.
44
+ * Added global and per project Buildr task ivy:makepom. It generates a simple Maven POM file in target folder of project with the same name as project and pom file extension. Right now no additional features of the makepom target are supported by using this task. If you need to use the nested elements use the the makepom target directly. I.e.: ivy.ivy4r.makepom :ivyfile => 'pathtofile' [, ...] [, :nested => [:mapping => [:conf => 'conf', :scope => 'scope']], [...] ] I am planning to provide a makepom task with descent support for the makepom target after figuring out a nice syntax for it.
45
+
46
+ === 0.11.1 / 2010-06-09
47
+ * Fixed a bug reported by Rhett Sutphin that prevented the use of MRI.
48
+ * Added mapping from java to ruby via RJB and source example from
49
+ Stanford Parser Ruby Wrapper by William Patrick McNeill.
50
+
51
+ === 0.11.0 / 2010-05-31
52
+ * Fixed a few bugs and issues reported by Rhett Sutphin. See issues on github 3-6.
53
+ * Ivy4r should work with MRI and JRuby, previously only JRuby was supported.
54
+ * The multi ivy.xml file support should work now.
55
+
56
+ === 0.10.5 / 2010-04-26
57
+ * Fix a bug where artifacts for sub-projects have not been copied correctly to the publish directory
58
+ defined for ivy.
59
+
60
+ === 0.10.4 / 2010-04-22
61
+ * Changes to from version 0.9.14 working preventing a circular dependency error. Buildr.projects
62
+ is not used anymore but the ivy.publish task works as expected. See 0.9.14 for more details.
63
+
64
+ === 0.10.3 / 2010-03-30
65
+ * gem yank did not work so needed a new version :(
66
+
67
+ === 0.10.2 / 2010-03-30
68
+ * Fixed nil access exception for undefined user settings of type 'ivy'
69
+
70
+ === 0.10.1 / 2010-03-30
71
+ * Some fixes for the rake ivy result caching.
72
+ * Renamed the targets from ivy:enableresultcache, ivy:disableresultcache and ivy:cleanresultcache
73
+ into ivy:enable_result_cache, ivy:disable_result_cache and ivy:clean_result_cache for better
74
+ readability
75
+
76
+ === 0.10.0 / 2010-03-30
77
+
78
+ * Add caching support to ivy4r. Ivy4r has now an optional parameter to a caching directory where it
79
+ stores results from calls to the tasks for each parameter set. If caching is enabled and a call
80
+ with the same parameters is done the cached result is used instead of executing the task again. This
81
+ should speed up local development because long running tasks like "ivy:resolve" are cached.
82
+ Caching can be enabled in buildr with:
83
+ * add this to your build.yaml or the [home]/.buildr/settings.yaml:
84
+ ivy:
85
+ caching.enabled: true
86
+ * add a marker file to your project under the path project.path_to('use_ivy_caching') Note that this is
87
+ a marker file only the existence of the file is checked not the content!! If the file exists caching
88
+ will be used!
89
+
90
+ === 0.9.15 / 2010-03-20
91
+
92
+ * Revert changes from 0.9.14 because the fix does not work in all environments. Use the old code again
93
+ till a fix is found that circumvents the circular dependency issue and keeps the functionality of the tasks.
94
+
95
+ === 0.9.14 / 2010-03-14
96
+
97
+ * Do not use Buildr.projects because of a circular dependency issue with the new buildr thanks to
98
+ Pepijn Van Eeckhoudt: He has bumped into an issue in the ivy4r buildr extension that triggers
99
+ circular dependency exceptions. The culprit is the call to Buildr.projects in add_copy_tasks_for_publish.
100
+ This can cause a call to project.invoke on the project being defined itself. He has checked with the
101
+ buildr devs and they told me that Buildr.projects should probably not be called from before/after
102
+ define callbacks.
103
+
104
+ === 0.9.13 / 2010-02-16
105
+
106
+ * Fix problems with Facets and ActiveSupport. We now only include the required core extensions,
107
+ not all of them.
108
+
109
+ === 0.9.12 / 2010-01-21
110
+
111
+ * Fix the problem with creation of packages where the additional ivy information has not been added
112
+ if "package :file 'x.type'" was used instead of "package :type".
113
+
114
+ === 0.9.11 / 2009-12-22
115
+
116
+ * Fix of the ivy:clean target to clean the ivy cache via the cleancache task.
117
+
118
+ === 0.9.10 / 2009-12-21
119
+
120
+ * Better support for Rake targets using the deps mechanism from buildr support.
121
+
122
+ === 0.9.9 / 2009-12-10
123
+
124
+ * Fixed setting of ant properties, properties are really sets and cannot be overwritten afterwards.
125
+
126
+ === 0.9.7 / 2009-12-10
127
+
128
+ * Fixed missing files in gem.
129
+
130
+ === 0.9.6 / 2009-12-09
131
+
132
+ * Support for JRuby access to underlying java objects of ivy. Require 'ivy4r_java_extensions'
133
+ instead of 'ivy4r'. The Ivy4r#ivy_instance returns a new ivy instance configured with the same
134
+ settings file as used in the underlying ant process. Note that configuration via URL is not
135
+ supported.
136
+
137
+ === 0.9.5 / 2009-12-01
138
+
139
+ * Bugfix for manifest handling in packages. The custom set manifest informations are not lost,
140
+ ivy informations for manifest are merged into the configured manifest.
141
+
142
+ === 0.9.4 / 2009-12-01
143
+
144
+ * ivy.deps for buildr supports three argument types:
145
+ 1. if an Hash is given :conf is used for confs and :type is used for types
146
+ 2. if exactly two arrays are given args[0] is used for confs and args[1] is used for types
147
+ 3. if not exactly two arrays all args are used as confs
148
+
149
+ === 0.9.3 / 2009-11-18
150
+
151
+ * Sorting of compile and test dependencies to prevent problems with old jars that are added by
152
+ buildr automatically, i.e. log4j-1.2.9 for cobertura or JUnit 4.4 if tests are using a newer version.
153
+ The sort order:
154
+ 1. all project dependencies as classes, resources and this like in the order the are contained in path
155
+ 2. all ivy dependencies
156
+ 3. all dependencies added by buildr to the targets
157
+ * Deleted 'to_ivy_file' functionality because it was not working as expected. The function used the
158
+ wrong ivy context and was not able to resolve all variables within the file from the correct ivy context.
159
+
160
+ === 0.9.2 / 2009-11-16
161
+
162
+ * Added new method to generate an ivy file from a resolved module descriptor, via the java
163
+ method ModuleDescriptor.toIvyFile(java.io.File). This is only working in jruby, because
164
+ the method is not called via Antwrap!
165
+ * Added support for buildr configuration to call 'to_ivy_file' to generate ivy file from resolved
166
+ module descriptor, i.e. using 'ivy.to_ivy_file :file => 'output.file', :overwrite => true'
167
+
168
+ === 0.9.1 / 2009-11-16
169
+
170
+ * Fixed bug that 'type' was not working for EAR
171
+
172
+ === 0.9.0 / 2009-11-16
173
+
174
+ * Add a new configuration option for compile, test and package with name 'type'. The type can
175
+ be used as defined in ivy to only get artifacts of given type(s). One or more types can be
176
+ set as an array to this option. If no type is given all artifacts are retrieved.
177
+
178
+ === 0.8.1 / 2009-11-12
179
+
180
+ * the project version is NOT set anymore by the the 'before_define' of the extension. The reason
181
+ for this are problems with ivy files that contain external references (i.e. include within the conf
182
+ block). The info task used for this needs more configuration information to work properly so this
183
+ feature is removed and the user must do it herself.
184
+ * In our projects we just moved the defintion to a different extension that configures more stuff
185
+ before setting the version and group:
186
+ before_define do |project|
187
+ if project.parent.nil? && project.ivy.enabled?
188
+ # do more configuration here prior setting the versions
189
+ info = project.ivy.info
190
+ project.version = info['ivy.revision']
191
+ project.group = "#{info['ivy.organisation']}.#{info['ivy.module']}"
192
+ end
193
+ end
194
+ * As an alternative you can set the group and version manually in the build file as it is usally done
195
+ in buildr.
196
+
197
+ === 0.8.0 / 2009-10-19
198
+
199
+ * Moved to gemcutter for hosting of gems 'gem install gemcutter' add it as primary location and you
200
+ can install gems as before
201
+
202
+ === 0.7.3 / 2009-09-15
203
+
204
+ * Renamed +ant+ to +ivy4r+ in buildr extension to make more clear what this object does. It is accesible
205
+ via call to +project.ivy.ivy4r+, use it in post_resolve or other places where the low level
206
+ ivy functions are needed in any way.
207
+ * Added access to buildr_extension to get the configured mappings for artifacts to ivy publish names.
208
+ I.e. configured +ivy.publish package(:jar) => 'name.jar'
209
+ access this hash via +ivy.publish_mappings+
210
+
211
+ === 0.7.2 / 2009-09-08
212
+
213
+ * Fix bug for creating EARs. The package dependencies are added into the root directory
214
+ of the EAR.
215
+
216
+ === 0.7.1 / 2009-08-24
217
+
218
+ * Fix bug that manual added dependencies are overwritten for package task
219
+ issue 1: http://github.com/klaas1979/ivy4r/issues#issue/1
220
+ * possible to add manual dependencies for compile and test as for package
221
+
222
+ === 0.7.0 / 2009-07-20
223
+
224
+ * It is possible to register +post_resolve+ actions via blocks:
225
+ ivy.post_resolve {...}
226
+ * support for generic configuration syntax via +method_missing+:
227
+ Any method combination of TARGETS [:compile, :test, :package] and TYPES [:conf, :include, :exclude] is valid.
228
+ It is possible to set all confs at once:
229
+ +ivy.conf :compile => 'conf', :package => 'other', :test => ['still', 'other']
230
+ Or to set the complete package options:
231
+ +ivy.package :conf => 'prod', :include => /includepattern/, :exclude => /excludepattern/+
232
+ Or to set a specific value via a complete call like:
233
+ +ivy.compile_conf [...] or ivy.conf_test [...] or ivy.package.include [...]
234
+ * more include/exclude possibilities, support to include and exclude for compile and test targets using
235
+ +ivy.include :compile => [pattern list]+ or +ivy.exclude+
236
+ * small refactorings
237
+
238
+ === 0.6.0 / 2009-07-08
239
+
240
+ * added support for the +ide+ targets +eclipse+, +idea+ and +idea7x+
241
+ * gem needs +facets+
242
+
243
+ === 0.5.3 / 2009-06-24
244
+
245
+ * bugfixes
246
+
247
+ === 0.5.2 / 2009-06-24
248
+
249
+ * bugfixes
250
+
251
+ === 0.5.1 / 2009-06-24
252
+
253
+ * small improvements in rakefile (execute test for some targets)
254
+ * publish to rubyforge "hamburg.rb"
255
+
256
+ === 0.5.0 / 2009-06-23
257
+
258
+ * use ivy4r-jars to get needed jars from to separate the ruby source from the dependencies
259
+ and make the gem smaller.
260
+
261
+ === 0.4.0 / 2009-06-23
262
+
263
+ * added rake/ivy_extension similar to buildr/ivy_extension to help use ivy4r in rake
264
+
265
+ === 0.3.0 / 2009-06-20
266
+
267
+ * added ant*.jar to gem so that user does not need to have a local ant installation
268
+
269
+ === 0.2.0 / 2009-06-18
270
+
271
+ * added the Buildr ivy_extension to include ivy in buildr for dependency managment
272
+ * small improvements in documentation
273
+
274
+
275
+ === 0.1.0 / 2009-06-17
276
+
277
+ * initial release
278
+ * support for nearly all basic IVY Ant targets
279
+ * basic validation of parameters
280
+
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # All in gemspec
4
+ gemspec
5
+
data/README.txt ADDED
@@ -0,0 +1,124 @@
1
+ = ivy4r
2
+
3
+ * http://github.com/pepijnve/ivy4r/tree/master
4
+
5
+ == DESCRIPTION:
6
+
7
+ Apache Ivy dependency manager wrapper for ruby (see {Apache Ivy}[http://ant.apache.org/ivy/index.html] for more information).
8
+ Use {Apache Ivy}[http://ant.apache.org/ivy/index.html] via a ruby wrapper without the need to use Apache Ant.
9
+ The wrapper uses Antwrap[http://antwrap.rubyforge.org/] to interface with Ivy.
10
+
11
+ Includes a Extension for Buildr[http://buildr.apache.org/] and Rake[http://rake.rubyforge.org] to use
12
+ {Apache Ivy}[http://ant.apache.org/ivy/index.html] for dependency management.
13
+
14
+ == FEATURES/PROBLEMS:
15
+
16
+ Supports most standard Ivy Ant targets via Antwrap. Provides a caching feature so that long running ivy tasks
17
+ like resolve can be cached and are not rerun for local builds. For more information about caching see the History.txt
18
+ and checkout the source of buildr/ivy_extension.rb and rake/ivy_extension.rb.
19
+
20
+ === Supported Ivy targets:
21
+ * info
22
+ * settings
23
+ * configure
24
+ * cleancache
25
+ * buildnumber
26
+ * findrevision
27
+ * cachepath
28
+ * artifactreport
29
+ * resolve
30
+ * makepom
31
+ * retrieve
32
+ * publish
33
+ * artifactproperty
34
+ * report
35
+ * buildlist
36
+ * deliver
37
+ * install
38
+ * repreport
39
+
40
+ === Currently not working Ivy targets:
41
+ * listmodules
42
+
43
+ === Ivy targets that need to be implemented:
44
+ * deliver
45
+ * install
46
+ * repreport
47
+
48
+ === Unsupported Ivy Targets (they make no sense for the wrapper):
49
+ * cachefileset
50
+ * var
51
+
52
+ === Caching of Ivy results:
53
+ For Buildr the targets ivy:enable_result_cache, ivy:disable_result_cache and ivy:clean_result_cache have been added.
54
+ Additionally the result cache can be enabled via the build.yaml or the global buildr settings.yaml by setting
55
+ the variable "ivy: caching.enabled: true".
56
+
57
+ For Rake the targets ivy:enable_result_cache, ivy:disable_result_cache and ivy:clean_result_cache have been added as
58
+ well. For Rake there is no other way to enable the caching beside this targets.
59
+
60
+ == Notes about usage and testing:
61
+ A few information how this project is used and what parts are well tested and what parts are nearly never used.
62
+
63
+ === Buildr extension:
64
+ The buildr extension is tested only on projects with a single ivy.xml, the multi ivy.xml file support was added
65
+ but was never tested extensively!
66
+
67
+ === Rake extension:
68
+ Note that the rake extension is only test in JRuby Rails projects to publish a java WAR file into the repository.
69
+ It does not offer as many features as the buildr extension.
70
+
71
+ == SYNOPSIS:
72
+
73
+ ivy4r plain:
74
+ To init a new Ivy4r instance set the ANT_HOME and the Ivy lib dir
75
+ ivy4r = Ivy4r.new
76
+ ivy4r.ant_home = 'PATH TO YOUR ANTHOME'
77
+ ivy4r.lib_dir = 'PATH TO IVY LIB DIR'
78
+ as an alternative to setting the ANT_HOME you can set an +Antwrap+ instance directly:
79
+ ivy4r.ant = Buildr.ant('ivy')
80
+
81
+ buildr:
82
+ TODO add buildr example
83
+
84
+ rake:
85
+ TODO add rake example
86
+
87
+ == REQUIREMENTS:
88
+
89
+ Plain ivy4r:
90
+ * Installed Apache Ant, to call Ivy via Antwrap
91
+ * Ivy and dependencies in a single directory. Dependencies depends on used features, see the ivy homepage for more information.
92
+ * JRuby is well tested, MRI support has been added with version 0.11.0 so use it at your own risk.
93
+ * Rake to use the rake extension
94
+ * Buildr to use the buildr extension
95
+
96
+ == INSTALL:
97
+
98
+ You can use gemcutter to install
99
+ sudo gem install ivy4r
100
+
101
+ == LICENSE:
102
+
103
+ (The MIT License)
104
+
105
+ Copyright (c) 2009 blau Mobilfunk GmbH
106
+
107
+ Permission is hereby granted, free of charge, to any person obtaining
108
+ a copy of this software and associated documentation files (the
109
+ 'Software'), to deal in the Software without restriction, including
110
+ without limitation the rights to use, copy, modify, merge, publish,
111
+ distribute, sublicense, and/or sell copies of the Software, and to
112
+ permit persons to whom the Software is furnished to do so, subject to
113
+ the following conditions:
114
+
115
+ The above copyright notice and this permission notice shall be
116
+ included in all copies or substantial portions of the Software.
117
+
118
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
119
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
120
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
121
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
122
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
123
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
124
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.