pompompom 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. data/.gitignore +5 -0
  2. data/Gemfile +11 -0
  3. data/LICENSE +20 -0
  4. data/README.mdown +32 -0
  5. data/Rakefile +7 -0
  6. data/TODO +0 -0
  7. data/bin/pompompom +17 -0
  8. data/lib/pom_pom_pom.rb +1 -0
  9. data/lib/pompompom/cli.rb +87 -0
  10. data/lib/pompompom/dependency.rb +55 -0
  11. data/lib/pompompom/downloader.rb +15 -0
  12. data/lib/pompompom/metadata.rb +26 -0
  13. data/lib/pompompom/pom.rb +234 -0
  14. data/lib/pompompom/resolver.rb +149 -0
  15. data/lib/pompompom/url_builder.rb +37 -0
  16. data/lib/pompompom.rb +10 -0
  17. data/pompompom.gemspec +116 -0
  18. data/spec/pompompom/cli_spec.rb +93 -0
  19. data/spec/pompompom/dependency_spec.rb +144 -0
  20. data/spec/pompompom/metadata_spec.rb +38 -0
  21. data/spec/pompompom/pom_spec.rb +221 -0
  22. data/spec/pompompom/resolver_spec.rb +205 -0
  23. data/spec/pompompom/url_builders_shared.rb +33 -0
  24. data/spec/resources/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar +0 -0
  25. data/spec/resources/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.pom +15 -0
  26. data/spec/resources/repository/aopalliance/aopalliance/maven-metadata.xml +5 -0
  27. data/spec/resources/repository/com/example/test/8.8/test-8.8.jar +0 -0
  28. data/spec/resources/repository/com/example/test/8.8/test-8.8.pom +11 -0
  29. data/spec/resources/repository/com/example/test/9.9/test-9.9.jar +0 -0
  30. data/spec/resources/repository/com/example/test/9.9/test-9.9.pom +11 -0
  31. data/spec/resources/repository/com/example/test/maven-metadata.xml +11 -0
  32. data/spec/resources/repository/com/example/test-abc/1.0/test-abc-1.0.jar +0 -0
  33. data/spec/resources/repository/com/example/test-abc/1.0/test-abc-1.0.pom +19 -0
  34. data/spec/resources/repository/com/example/test-abc/maven-metadata.xml +13 -0
  35. data/spec/resources/repository/com/example/test-child/1.0/test-child-1.0.pom +16 -0
  36. data/spec/resources/repository/com/example/test-def/1.0/test-def-1.0.jar +0 -0
  37. data/spec/resources/repository/com/example/test-def/1.0/test-def-1.0.pom +19 -0
  38. data/spec/resources/repository/com/example/test-exclusions/1.0/test-exclusions-1.0.jar +1 -0
  39. data/spec/resources/repository/com/example/test-exclusions/1.0/test-exclusions-1.0.pom +25 -0
  40. data/spec/resources/repository/com/example/test-optional/1.0/test-optional-1.0.jar +1 -0
  41. data/spec/resources/repository/com/example/test-optional/1.0/test-optional-1.0.pom +20 -0
  42. data/spec/resources/repository/com/example/test-parent/1.0/test-parent-1.0.pom +16 -0
  43. data/spec/resources/repository/com/google/google/1/google-1.pom +37 -0
  44. data/spec/resources/repository/com/google/inject/guice/2.0/guice-2.0.jar +1 -0
  45. data/spec/resources/repository/com/google/inject/guice/2.0/guice-2.0.pom +20 -0
  46. data/spec/resources/repository/com/google/inject/guice-parent/2.0/guice-parent-2.0.pom +70 -0
  47. data/spec/resources/repository/com/rabbitmq/amqp-client/1.8.0/amqp-client-1.8.0.jar +1 -0
  48. data/spec/resources/repository/com/rabbitmq/amqp-client/1.8.0/amqp-client-1.8.0.pom +98 -0
  49. data/spec/resources/repository/commons-cli/commons-cli/1.1/commons-cli-1.1.jar +1 -0
  50. data/spec/resources/repository/commons-cli/commons-cli/1.1/commons-cli-1.1.pom +165 -0
  51. data/spec/resources/repository/commons-io/commons-io/1.2/commons-io-1.2.jar +1 -0
  52. data/spec/resources/repository/commons-io/commons-io/1.2/commons-io-1.2.pom +235 -0
  53. data/spec/resources/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.jar +0 -0
  54. data/spec/resources/repository/javax/servlet/servlet-api/2.5/servlet-api-2.5.pom +6 -0
  55. data/spec/resources/repository/net/iconara/pompompom/1.0/pompompom-1.0.jar +0 -0
  56. data/spec/resources/repository/net/iconara/pompompom/1.0/pompompom-1.0.pom +11 -0
  57. data/spec/resources/repository/org/eclipse/jetty/jetty-continuation/7.1.4.v20100610/jetty-continuation-7.1.4.v20100610.pom +73 -0
  58. data/spec/resources/repository/org/eclipse/jetty/jetty-http/7.1.4.v20100610/jetty-http-7.1.4.v20100610.pom +73 -0
  59. data/spec/resources/repository/org/eclipse/jetty/jetty-io/7.1.4.v20100610/jetty-io-7.1.4.v20100610.pom +62 -0
  60. data/spec/resources/repository/org/eclipse/jetty/jetty-parent/15/jetty-parent-15.pom +419 -0
  61. data/spec/resources/repository/org/eclipse/jetty/jetty-project/7.1.4.v20100610/jetty-project-7.1.4.v20100610.pom +368 -0
  62. data/spec/resources/repository/org/eclipse/jetty/jetty-server/7.1.4.v20100610/jetty-server-7.1.4.v20100610.jar +0 -0
  63. data/spec/resources/repository/org/eclipse/jetty/jetty-server/7.1.4.v20100610/jetty-server-7.1.4.v20100610.pom +101 -0
  64. data/spec/resources/repository/org/eclipse/jetty/jetty-util/7.1.4.v20100610/jetty-util-7.1.4.v20100610.pom +80 -0
  65. data/spec/spec_helper.rb +5 -0
  66. data/tasks/gem.rake +18 -0
  67. data/tasks/rdoc.rake +13 -0
  68. data/tasks/spec.rake +17 -0
  69. metadata +142 -0
@@ -0,0 +1,205 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+ require 'tmpdir'
3
+ require 'fileutils'
4
+
5
+
6
+ module PomPomPom
7
+ describe Resolver do
8
+ before do
9
+ @repository_path = File.expand_path('../../resources/repository', __FILE__)
10
+ end
11
+
12
+ describe '#download!' do
13
+ before do
14
+ @tmp_dir = File.join(Dir.tmpdir, 'pompompom')
15
+ FileUtils.rm_rf(@tmp_dir)
16
+ end
17
+
18
+ after do
19
+ FileUtils.rm_rf(@tmp_dir)
20
+ end
21
+
22
+ context 'setup' do
23
+ before do
24
+ @dependency = Dependency.new('com.rabbitmq', 'amqp-client', '1.8.0')
25
+ @resolver = Resolver.new([@repository_path], :downloader => FilesystemDownloader.new)
26
+ end
27
+
28
+ it 'creates the target directory' do
29
+ @resolver.download!(@tmp_dir, true, @dependency)
30
+ File.exists?(@tmp_dir).should be_true
31
+ end
32
+
33
+ it 'does not attempt to create the target directory if it already exists' do
34
+ Dir.mkdir(@tmp_dir)
35
+ expect { @resolver.download!(@tmp_dir, true, @dependency) }.to_not raise_error
36
+ end
37
+
38
+ it 'complains if the target directory exists but is not a directory' do
39
+ FileUtils.touch(@tmp_dir)
40
+ expect { @resolver.download!(@tmp_dir, true, @dependency) }.to raise_error('Cannot create target directory because it already exists (but is not a directory)')
41
+ end
42
+ end
43
+
44
+ context 'resolving & downloading' do
45
+ before do
46
+ @dependency = Dependency.new('com.rabbitmq', 'amqp-client', '1.8.0')
47
+ @resolver = Resolver.new([@repository_path], :downloader => FilesystemDownloader.new)
48
+ @resolver.download!(@tmp_dir, true, @dependency)
49
+ end
50
+
51
+ %w(commons-cli-1.1 commons-io-1.2 amqp-client-1.8.0).each do |lib|
52
+ it "downloads #{lib}.jar" do
53
+ file = @tmp_dir + '/' + lib + '.jar'
54
+ IO.read(file).chomp.should == lib
55
+ end
56
+ end
57
+ end
58
+
59
+ context 'with exclusions' do
60
+ before do
61
+ @dependency = Dependency.new('com.example', 'test-exclusions', '1.0')
62
+ @resolver = Resolver.new([@repository_path], :downloader => FilesystemDownloader.new)
63
+ @resolver.download!(@tmp_dir, true, @dependency)
64
+ end
65
+
66
+ it 'honors exclusions' do
67
+ files = Dir[@tmp_dir + '/*.jar'].map { |f| File.basename(f) }.sort
68
+ files.should == %w(amqp-client-1.8.0.jar commons-io-1.2.jar test-exclusions-1.0.jar)
69
+ end
70
+ end
71
+
72
+ context 'with optionals' do
73
+ before do
74
+ @dependency = Dependency.new('com.example', 'test-optional', '1.0')
75
+ @resolver = Resolver.new([@repository_path], :downloader => FilesystemDownloader.new)
76
+ @resolver.download!(@tmp_dir, true, @dependency)
77
+ end
78
+
79
+ it 'doesn\'t download optional dependencies' do
80
+ files = Dir[@tmp_dir + '/*.jar'].map { |f| File.basename(f) }.sort
81
+ files.should == %w(test-optional-1.0.jar)
82
+ end
83
+ end
84
+
85
+ context 'logging' do
86
+ before do
87
+ @dependency = Dependency.new('com.rabbitmq', 'amqp-client', '1.8.0')
88
+ @logger = double()
89
+ @resolver = Resolver.new([@repository_path], :logger => @logger, :downloader => FilesystemDownloader.new)
90
+ end
91
+
92
+ it 'logs each downloaded URL' do
93
+ @logger.should_receive(:debug).with(%(Loading POM from "#{@repository_path}/com/rabbitmq/amqp-client/1.8.0/amqp-client-1.8.0.pom"))
94
+ @logger.should_receive(:debug).with(%(Loading JAR from "#{@repository_path}/com/rabbitmq/amqp-client/1.8.0/amqp-client-1.8.0.jar"))
95
+ @logger.should_receive(:debug).with(%(Loading POM from "#{@repository_path}/commons-cli/commons-cli/1.1/commons-cli-1.1.pom"))
96
+ @logger.should_receive(:debug).with(%(Loading JAR from "#{@repository_path}/commons-cli/commons-cli/1.1/commons-cli-1.1.jar"))
97
+ @logger.should_receive(:debug).with(%(Loading POM from "#{@repository_path}/commons-io/commons-io/1.2/commons-io-1.2.pom"))
98
+ @logger.should_receive(:debug).with(%(Loading JAR from "#{@repository_path}/commons-io/commons-io/1.2/commons-io-1.2.jar"))
99
+ @resolver.download!(@tmp_dir, true, @dependency)
100
+ end
101
+ end
102
+
103
+ it 'raises an error if a dependency cannot be met' do
104
+ r = Resolver.new([@repository_path], :downloader => FilesystemDownloader.new)
105
+ expect { r.download!(@tmp_dir, true, Dependency.new('foo.bar', 'baz', '3.1.4')) }.to raise_error(Resolver::DependencyNotFoundError)
106
+ end
107
+
108
+ it 'raises an error if no repositories are given' do
109
+ expect { Resolver.new([]) }.to raise_error(ArgumentError)
110
+ end
111
+ end
112
+
113
+ describe '#find_transitive_dependencies' do
114
+ before do
115
+ @resolver = Resolver.new([@repository_path])
116
+ end
117
+
118
+ it 'returns a list of transitive dependencies' do
119
+ all = @resolver.find_transitive_dependencies(Dependency.new('com.rabbitmq', 'amqp-client', '1.8.0'))
120
+ all_coordinates = all.map(&:to_dependency).map(&:to_s)
121
+ all_coordinates.should have(3).items
122
+ all_coordinates.should include('com.rabbitmq:amqp-client:1.8.0')
123
+ all_coordinates.should include('commons-io:commons-io:1.2')
124
+ all_coordinates.should include('commons-cli:commons-cli:1.1')
125
+ end
126
+
127
+ it 'returns a unique list of all transitive dependencies' do
128
+ all = @resolver.find_transitive_dependencies(
129
+ Dependency.new('com.rabbitmq', 'amqp-client', '1.8.0'),
130
+ Dependency.new('commons-cli', 'commons-cli', '1.1')
131
+ )
132
+ all_coordinates = all.map(&:to_dependency).map(&:to_s)
133
+ all_coordinates.should have(3).items
134
+ all_coordinates.should include('com.rabbitmq:amqp-client:1.8.0')
135
+ all_coordinates.should include('commons-io:commons-io:1.2')
136
+ all_coordinates.should include('commons-cli:commons-cli:1.1')
137
+ end
138
+
139
+ context 'with multiple versions' do
140
+ before do
141
+ @logger = stub(:debug => nil, :info => nil, :warn => nil)
142
+ @dependencies = %w(com.example:test-abc:1.0 com.example:test-def:1.0).map { |d| Dependency.parse(d) }
143
+ @resolver = Resolver.new([@repository_path], :downloader => FilesystemDownloader.new, :logger => @logger)
144
+ end
145
+
146
+ it 'selects the newest dependency if more than one of the same are found' do
147
+ @all_dependencies = @resolver.find_transitive_dependencies(*@dependencies)
148
+ @all_dependencies.map(&:to_s).should include('com.example:test:9.9')
149
+ @all_dependencies.map(&:to_s).should_not include('com.example:test:8.8')
150
+ end
151
+
152
+ it 'determines the newest if no version was specified' do
153
+ @all_dependencies = @resolver.find_transitive_dependencies(Dependency.parse('com.google.inject:guice:2.0'))
154
+ @all_dependencies.map(&:to_s).should include('aopalliance:aopalliance:1.0')
155
+ end
156
+
157
+ it 'warns if dependencies on multiple versions of an artifact are found' do
158
+ @logger.should_receive(:warn).with('Warning: multiple versions of com.example:test were required, using the newest required version (9.9)')
159
+ @resolver.find_transitive_dependencies(*@dependencies)
160
+ end
161
+ end
162
+
163
+ context 'artifacts with parents and dependency management' do
164
+ before do
165
+ @child = File.join(@repository_path, 'com', 'google', 'inject', 'guice', '2.0', 'guice-2.0.pom')
166
+ @parent = File.join(@repository_path, 'com', 'google', 'inject', 'guice-parent', '2.0', 'guice-parent-2.0.pom')
167
+ @grandparent = File.join(@repository_path, 'com', 'google', 'google', '1', 'google-1.pom')
168
+ @other_dependency = File.join(@repository_path, 'aopalliance', 'aopalliance', '1.0', 'aopalliance-1.0.pom')
169
+
170
+ @downloader = double()
171
+ @downloader.stub(:get).with(@child).and_return(File.read(@child))
172
+ @downloader.stub(:get).with(@parent).and_return(File.read(@parent))
173
+ @downloader.stub(:get).with(@grandparent).and_return(File.read(@grandparent))
174
+ @downloader.stub(:get).with(@other_dependency).and_return(File.read(@other_dependency))
175
+
176
+ @dependency = Dependency.parse('com.google.inject:guice:2.0')
177
+
178
+ @resolver = Resolver.new([@repository_path], :downloader => @downloader)
179
+ end
180
+
181
+ it 'downloads the parent artifact POM and merges it with the child (and thus discovers the required version of a dependency)' do
182
+ @dependencies = @resolver.find_transitive_dependencies(@dependency)
183
+ @dependencies.map(&:to_s).should include('aopalliance:aopalliance:1.0')
184
+ end
185
+
186
+ it 'doesn\'t include parent dependencies in the list of transitive dependencies' do
187
+ @dependencies = @resolver.find_transitive_dependencies(@dependency)
188
+ @dependencies.should have(2).items
189
+ @dependencies.map(&:to_s).should include('aopalliance:aopalliance:1.0')
190
+ @dependencies.map(&:to_s).should include('com.google.inject:guice:2.0')
191
+ end
192
+ end
193
+
194
+ context 'artifacts with properties resolvable only with parent information' do
195
+ it 'resolves all properties' do
196
+ @logger = stub(:debug => nil, :info => nil, :warn => nil)
197
+ @dependency = Dependency.parse('org.eclipse.jetty:jetty-server:7.1.4.v20100610')
198
+ @resolver = Resolver.new([@repository_path], :downloader => FilesystemDownloader.new, :logger => @logger)
199
+ @all_dependencies = @resolver.find_transitive_dependencies(@dependency)
200
+ @all_dependencies.find { |p| p.artifact_id == 'jetty-server' }.url.should == 'http://www.eclipse.org/jetty'
201
+ end
202
+ end
203
+ end
204
+ end
205
+ end
@@ -0,0 +1,33 @@
1
+ shared_examples_for 'an URL builder' do
2
+ describe '#jar_url' do
3
+ it 'returns the URL for a JAR given a repository base URL' do
4
+ url = @url_builder.jar_url('http://example.com')
5
+ url.should == "http://example.com/net/iconara/pompompom/1.0/pompompom-1.0.jar"
6
+ end
7
+
8
+ it 'returns the URL for a JAR given a repository base URL (when repository URL ends with "/")' do
9
+ url = @url_builder.jar_url('http://example.com/')
10
+ url.should == "http://example.com/net/iconara/pompompom/1.0/pompompom-1.0.jar"
11
+ end
12
+ end
13
+
14
+ describe '#pom_url' do
15
+ it 'returns the URL for a POM given a repository base URL' do
16
+ url = @url_builder.pom_url('http://example.com')
17
+ url.should == "http://example.com/net/iconara/pompompom/1.0/pompompom-1.0.pom"
18
+ end
19
+ end
20
+
21
+ describe '#jar_file_name' do
22
+ it 'returns <artifact_id>-<version>.jar' do
23
+ @url_builder.jar_file_name.should == 'pompompom-1.0.jar'
24
+ end
25
+ end
26
+
27
+ describe '#metadata_url' do
28
+ it 'returns the URL for the artifact metadata file' do
29
+ url = @url_builder.metadata_url('http://example.com')
30
+ url.should == "http://example.com/net/iconara/pompompom/maven-metadata.xml"
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,15 @@
1
+ <project>
2
+ <modelVersion>4.0.0</modelVersion>
3
+ <groupId>aopalliance</groupId>
4
+ <artifactId>aopalliance</artifactId>
5
+ <name>AOP alliance</name>
6
+ <version>1.0</version>
7
+ <description>AOP Alliance</description>
8
+ <url>http://aopalliance.sourceforge.net</url>
9
+
10
+ <licenses>
11
+ <license>
12
+ <name>Public Domain</name>
13
+ </license>
14
+ </licenses>
15
+ </project>
@@ -0,0 +1,5 @@
1
+ <metadata>
2
+ <groupId>aopalliance</groupId>
3
+ <artifactId>aopalliance</artifactId>
4
+ <version>1.0</version>
5
+ </metadata>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0"?>
2
+ <project>
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.example</groupId>
5
+ <artifactId>test</artifactId>
6
+ <version>8.8</version>
7
+ <packaging>jar</packaging>
8
+ <name>Test POM</name>
9
+ <description>Test POM</description>
10
+ <url>http://www.example.com</url>
11
+ </project>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0"?>
2
+ <project>
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.example</groupId>
5
+ <artifactId>test</artifactId>
6
+ <version>9.9</version>
7
+ <packaging>jar</packaging>
8
+ <name>Test POM</name>
9
+ <description>Test POM</description>
10
+ <url>http://www.example.com</url>
11
+ </project>
@@ -0,0 +1,11 @@
1
+ <metadata>
2
+ <groupId>com.example</groupId>
3
+ <artifactId>test</artifactId>
4
+ <version>8.8</version>
5
+ <versioning>
6
+ <versions>
7
+ <version>8.8</version>
8
+ <version>9.9</version>
9
+ </versions>
10
+ </versioning>
11
+ </metadata>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0"?>
2
+ <project>
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.example</groupId>
5
+ <artifactId>test-abc</artifactId>
6
+ <version>1.0</version>
7
+ <packaging>jar</packaging>
8
+ <name>Test POM</name>
9
+ <description>Test POM</description>
10
+ <url>http://www.example.com</url>
11
+
12
+ <dependencies>
13
+ <dependency>
14
+ <groupId>com.example</groupId>
15
+ <artifactId>test</artifactId>
16
+ <version>9.9</version>
17
+ </dependency>
18
+ </dependencies>
19
+ </project>
@@ -0,0 +1,13 @@
1
+ <metadata>
2
+ <groupId>com.example</groupId>
3
+ <artifactId>test-abc</artifactId>
4
+ <version>1.1</version>
5
+ <versioning>
6
+ <release>1.0</release>
7
+ <versions>
8
+ <version>0.9</version>
9
+ <version>1.0</version>
10
+ <version>1.1</version>
11
+ </versions>
12
+ </versioning>
13
+ </metadata>
@@ -0,0 +1,16 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2
+ <modelVersion>4.0.0</modelVersion>
3
+ <parent>
4
+ <groupId>com.example</groupId>
5
+ <artifactId>test-parent</artifactId>
6
+ <version>1.0</version>
7
+ </parent>
8
+ <artifactId>test-child</artifactId>
9
+ <packaging>jar</packaging>
10
+ <dependencies>
11
+ <dependency>
12
+ <groupId>com.example</groupId>
13
+ <artifactId>test</artifactId>
14
+ </dependency>
15
+ </dependencies>
16
+ </project>
@@ -0,0 +1,19 @@
1
+ <?xml version="1.0"?>
2
+ <project>
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.example</groupId>
5
+ <artifactId>test-def</artifactId>
6
+ <version>1.0</version>
7
+ <packaging>jar</packaging>
8
+ <name>Test POM</name>
9
+ <description>Test POM</description>
10
+ <url>http://www.example.com</url>
11
+
12
+ <dependencies>
13
+ <dependency>
14
+ <groupId>com.example</groupId>
15
+ <artifactId>test</artifactId>
16
+ <version>8.8</version>
17
+ </dependency>
18
+ </dependencies>
19
+ </project>
@@ -0,0 +1,25 @@
1
+ <?xml version="1.0"?>
2
+ <project>
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.example</groupId>
5
+ <artifactId>test-exclusions</artifactId>
6
+ <version>1.0</version>
7
+ <packaging>jar</packaging>
8
+ <name>Test POM</name>
9
+ <description>Test POM</description>
10
+ <url>http://www.example.com</url>
11
+
12
+ <dependencies>
13
+ <dependency>
14
+ <groupId>com.rabbitmq</groupId>
15
+ <artifactId>amqp-client</artifactId>
16
+ <version>1.8.0</version>
17
+ <exclusions>
18
+ <exclusion>
19
+ <groupId>commons-cli</groupId>
20
+ <artifactId>commons-cli</artifactId>
21
+ </exclusion>
22
+ </exclusions>
23
+ </dependency>
24
+ </dependencies>
25
+ </project>
@@ -0,0 +1,20 @@
1
+ <?xml version="1.0"?>
2
+ <project>
3
+ <modelVersion>4.0.0</modelVersion>
4
+ <groupId>com.example</groupId>
5
+ <artifactId>test-optional</artifactId>
6
+ <version>1.0</version>
7
+ <packaging>jar</packaging>
8
+ <name>Test POM</name>
9
+ <description>Test POM</description>
10
+ <url>http://www.example.com</url>
11
+
12
+ <dependencies>
13
+ <dependency>
14
+ <groupId>com.rabbitmq</groupId>
15
+ <artifactId>amqp-client</artifactId>
16
+ <version>1.8.0</version>
17
+ <optional>true</optional>
18
+ </dependency>
19
+ </dependencies>
20
+ </project>
@@ -0,0 +1,16 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
2
+ <modelVersion>4.0.0</modelVersion>
3
+ <groupId>com.example</groupId>
4
+ <artifactId>test-parent</artifactId>
5
+ <packaging>pom</packaging>
6
+ <version>1.0</version>
7
+ <dependencyManagement>
8
+ <dependencies>
9
+ <dependency>
10
+ <groupId>com.example</groupId>
11
+ <artifactId>test</artifactId>
12
+ <version>8.8</version>
13
+ </dependency>
14
+ </dependencies>
15
+ </dependencyManagement>
16
+ </project>
@@ -0,0 +1,37 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
5
+ <modelVersion>4.0.0</modelVersion>
6
+ <groupId>com.google</groupId>
7
+ <artifactId>google</artifactId>
8
+ <version>1</version>
9
+ <name>Google</name>
10
+ <description>Internally developed code released as open source.</description>
11
+ <packaging>pom</packaging>
12
+ <organization>
13
+ <name>Google</name>
14
+ <url>http://www.google.com/</url>
15
+ </organization>
16
+ <url>http://code.google.com/hosting/projects.html</url>
17
+ <licenses>
18
+ <license>
19
+ <name>The Apache Software License, Version 2.0</name>
20
+ <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
21
+ <distribution>repo</distribution>
22
+ </license>
23
+ </licenses>
24
+ <distributionManagement>
25
+ <repository>
26
+ <id>google-maven-repository</id>
27
+ <name>Google Maven Repository</name>
28
+ <url>dav:https://google-maven-repository.googlecode.com/svn/repository/</url>
29
+ </repository>
30
+ <snapshotRepository>
31
+ <id>google-maven-snapshot-repository</id>
32
+ <name>Google Maven Snapshot Repository</name>
33
+ <url>dav:https://google-maven-repository.googlecode.com/svn/snapshot-repository/</url>
34
+ <uniqueVersion>true</uniqueVersion>
35
+ </snapshotRepository>
36
+ </distributionManagement>
37
+ </project>
@@ -0,0 +1,20 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
2
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4
+ <modelVersion>4.0.0</modelVersion>
5
+ <parent>
6
+ <groupId>com.google.inject</groupId>
7
+ <artifactId>guice-parent</artifactId>
8
+ <version>2.0</version>
9
+ </parent>
10
+ <artifactId>guice</artifactId>
11
+ <packaging>jar</packaging>
12
+ <!-- Note: this pom is for dependency management only. It will not build the project -->
13
+ <dependencies>
14
+ <!-- CGLib is not listed because it has been repackaged with JarJar -->
15
+ <dependency>
16
+ <groupId>aopalliance</groupId>
17
+ <artifactId>aopalliance</artifactId>
18
+ </dependency>
19
+ </dependencies>
20
+ </project>
@@ -0,0 +1,70 @@
1
+ <project xmlns="http://maven.apache.org/POM/4.0.0"
2
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4
+ <modelVersion>4.0.0</modelVersion>
5
+ <parent>
6
+ <groupId>com.google</groupId>
7
+ <artifactId>google</artifactId>
8
+ <version>1</version>
9
+ </parent>
10
+ <groupId>com.google.inject</groupId>
11
+ <artifactId>guice-parent</artifactId>
12
+ <packaging>pom</packaging>
13
+ <version>2.0</version>
14
+ <name>Google Guice</name>
15
+ <description>Guice (pronounced 'juice') is a lightweight dependency injection
16
+ framework for Java 5 and above, brought to you by Google.</description>
17
+ <url>http://code.google.com/p/google-guice/</url>
18
+ <inceptionYear>2006</inceptionYear>
19
+ <issueManagement>
20
+ <system>Google Code</system>
21
+ <url>http://code.google.com/p/google-guice/issues/</url>
22
+ </issueManagement>
23
+ <mailingLists>
24
+ <mailingList>
25
+ <name>google-guice</name>
26
+ <archive>http://groups.google.com/group/google-guice/topics</archive>
27
+ <subscribe>http://groups.google.com/group/google-guice/subscribe</subscribe>
28
+ <unsubscribe>http://groups.google.com/group/google-guice/subscribe</unsubscribe>
29
+ <post>http://groups.google.com/group/google-guice/post</post>
30
+ </mailingList>
31
+ <mailingList>
32
+ <name>google-guice-dev</name>
33
+ <archive>http://groups.google.com/group/google-guice-dev/topics</archive>
34
+ <subscribe>http://groups.google.com/group/google-guice-dev/subscribe</subscribe>
35
+ <unsubscribe>http://groups.google.com/group/google-guice-dev/subscribe</unsubscribe>
36
+ <post>http://groups.google.com/group/google-guice-dev/post</post>
37
+ </mailingList>
38
+ </mailingLists>
39
+ <dependencyManagement>
40
+ <dependencies>
41
+ <dependency>
42
+ <groupId>com.google.inject</groupId>
43
+ <artifactId>guice</artifactId>
44
+ <version>${version}</version>
45
+ </dependency>
46
+ <dependency>
47
+ <groupId>aopalliance</groupId>
48
+ <artifactId>aopalliance</artifactId>
49
+ <version>1.0</version>
50
+ </dependency>
51
+ </dependencies>
52
+ </dependencyManagement>
53
+ <scm>
54
+ <url>http://code.google.com/p/google-guice/source/browse/</url>
55
+ </scm>
56
+ <build>
57
+ <pluginManagement>
58
+ <plugins>
59
+ <plugin>
60
+ <artifactId>maven-compiler-plugin</artifactId>
61
+ <configuration>
62
+ <source>1.5</source>
63
+ <target>1.5</target>
64
+ </configuration>
65
+ <inherited>true</inherited>
66
+ </plugin>
67
+ </plugins>
68
+ </pluginManagement>
69
+ </build>
70
+ </project>