pompompom 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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>