Commit | Line | Data |
---|---|---|
41125eaf JL |
1 | ;;; GNU Guix --- Functional package management for GNU |
2 | ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu> | |
3 | ;;; | |
4 | ;;; This file is part of GNU Guix. | |
5 | ;;; | |
6 | ;;; GNU Guix is free software; you can redistribute it and/or modify it | |
7 | ;;; under the terms of the GNU General Public License as published by | |
8 | ;;; the Free Software Foundation; either version 3 of the License, or (at | |
9 | ;;; your option) any later version. | |
10 | ;;; | |
11 | ;;; GNU Guix is distributed in the hope that it will be useful, but | |
12 | ;;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | ;;; GNU General Public License for more details. | |
15 | ;;; | |
16 | ;;; You should have received a copy of the GNU General Public License | |
17 | ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
18 | ||
19 | (define-module (gnu packages maven) | |
20 | #:use-module ((guix licenses) #:prefix license:) | |
21 | #:use-module (guix packages) | |
22 | #:use-module (guix download) | |
23 | #:use-module (guix utils) | |
24 | #:use-module (guix build-system ant) | |
25 | #:use-module (gnu packages) | |
b2185040 | 26 | #:use-module (gnu packages compression) |
9f25cba6 | 27 | #:use-module (gnu packages java) |
f216a9f9 | 28 | #:use-module (gnu packages web) |
9f25cba6 JL |
29 | #:use-module (gnu packages xml)) |
30 | ||
31 | (define-public java-plexus-component-metadata | |
32 | (package | |
33 | (inherit java-plexus-container-default) | |
34 | (name "java-plexus-component-metadata") | |
35 | (arguments | |
36 | `(#:jar-name "plexus-component-metadata.jar" | |
37 | #:source-dir "src/main/java" | |
38 | #:test-dir "src/test" | |
39 | #:jdk ,icedtea-8 | |
40 | #:phases | |
41 | (modify-phases %standard-phases | |
42 | (add-before 'configure 'chdir | |
43 | (lambda _ | |
44 | (chdir "plexus-component-metadata") | |
45 | #t)) | |
46 | (add-before 'build 'copy-resources | |
47 | (lambda _ | |
48 | (copy-recursively "src/main/resources" | |
49 | "build/classes/") | |
50 | #t))))) | |
51 | (inputs | |
52 | `(("java-plexus-container-default" ,java-plexus-container-default) | |
53 | ("java-plexu-component-annotations" ,java-plexus-component-annotations) | |
54 | ("java-plexus-utils" ,java-plexus-utils) | |
55 | ("java-plexus-cli" ,java-plexus-cli) | |
56 | ("java-plexus-classworlds" ,java-plexus-classworlds) | |
57 | ("maven-plugin-api" ,maven-plugin-api) | |
58 | ("maven-plugin-annotations" ,maven-plugin-annotations) | |
59 | ("maven-core-bootstrap" ,maven-core-bootstrap) | |
60 | ("maven-model" ,maven-model) | |
61 | ("java-commons-cli" ,java-commons-cli) | |
62 | ("java-qdox" ,java-qdox) | |
63 | ("java-jdom2" ,java-jdom2) | |
64 | ("java-asm" ,java-asm))) | |
65 | (native-inputs | |
66 | `(("java-junit" ,java-junit) | |
67 | ("java-guava" ,java-guava) | |
68 | ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect))) | |
69 | (synopsis "Inversion-of-control container for Maven") | |
70 | (description "The Plexus project provides a full software stack for creating | |
71 | and executing software projects. Based on the Plexus container, the | |
72 | applications can utilise component-oriented programming to build modular, | |
73 | reusable components that can easily be assembled and reused. This package | |
74 | provides the Maven plugin generating the component metadata."))) | |
41125eaf JL |
75 | |
76 | (define-public maven-resolver-api | |
77 | (package | |
78 | (name "maven-resolver-api") | |
79 | (version "1.1.1") | |
80 | (source (origin | |
81 | (method url-fetch) | |
82 | (uri (string-append "https://github.com/apache/maven-resolver/" | |
83 | "archive/maven-resolver-" version ".tar.gz")) | |
84 | (sha256 | |
85 | (base32 | |
86 | "0rpvdg3qr1j88gw0ankf0wnwfyq6238mdlm7s39vf5jrcvhdgwcl")))) | |
87 | (build-system ant-build-system) | |
88 | (arguments | |
89 | `(#:jar-name "maven-resolver-api.jar" | |
90 | #:source-dir "maven-resolver-api/src/main/java" | |
91 | #:test-dir "maven-resolver-api/src/test")) | |
92 | (native-inputs | |
93 | `(("java-junit" ,java-junit) | |
94 | ("java-hamcrest-core" ,java-hamcrest-core))) | |
95 | (home-page "https://github.com/apache/maven-resolver") | |
96 | (synopsis "Maven repository system API") | |
97 | (description "This package contains the API for the maven repository system.") | |
98 | (license license:asl2.0))) | |
d85cb539 JL |
99 | |
100 | (define-public maven-resolver-spi | |
101 | (package | |
102 | (inherit maven-resolver-api) | |
103 | (name "maven-resolver-spi") | |
104 | (arguments | |
105 | `(#:jar-name "maven-resolver-spi.jar" | |
106 | #:source-dir "maven-resolver-spi/src/main/java" | |
107 | #:test-dir "maven-resolver-spi/src/test" | |
108 | #:jdk ,icedtea-8)) | |
109 | (inputs | |
110 | `(("maven-resolver-api" ,maven-resolver-api))) | |
111 | (synopsis "Maven repository system SPI") | |
112 | (description "This package contains the service provider interface (SPI) | |
113 | for repository system implementations and repository connectors."))) | |
36053783 JL |
114 | |
115 | (define-public maven-resolver-test-util | |
116 | (package | |
117 | (inherit maven-resolver-api) | |
118 | (name "maven-resolver-test-util") | |
119 | (arguments | |
120 | `(#:jar-name "maven-resolver-test-util.jar" | |
121 | #:source-dir "maven-resolver-test-util/src/main/java" | |
122 | #:test-dir "maven-resolver-test-util/src/test" | |
123 | #:jdk ,icedtea-8)) | |
124 | (inputs | |
125 | `(("maven-resolver-api" ,maven-resolver-api) | |
126 | ("maven-resolver-spi" ,maven-resolver-spi))) | |
127 | (synopsis "Utility classes for testing the maven repository system") | |
128 | (description "This package contains a collection of utility classes to | |
129 | ease testing of the repository system."))) | |
bca6cf54 JL |
130 | |
131 | (define-public maven-resolver-util | |
132 | (package | |
133 | (inherit maven-resolver-api) | |
134 | (name "maven-resolver-util") | |
135 | (arguments | |
136 | `(#:jar-name "maven-resolver-util.jar" | |
137 | #:source-dir "maven-resolver-util/src/main/java" | |
138 | #:test-dir "maven-resolver-util/src/test" | |
139 | #:jdk ,icedtea-8)) | |
140 | (inputs | |
141 | `(("maven-resolver-api" ,maven-resolver-api))) | |
142 | (native-inputs | |
143 | `(("java-junit" ,java-junit) | |
144 | ("java-hamcrest-core" ,java-hamcrest-core) | |
145 | ("maven-resolver-test-util" ,maven-resolver-test-util))) | |
146 | (synopsis "Utility classes for the maven repository system") | |
147 | (description "This package contains a collection of utility classes to | |
148 | ease usage of the repository system."))) | |
f70666c9 JL |
149 | |
150 | (define-public maven-resolver-connector-basic | |
151 | (package | |
152 | (inherit maven-resolver-api) | |
153 | (name "maven-resolver-connector-basic") | |
154 | (arguments | |
155 | `(#:jar-name "maven-resolver-connector-basic.jar" | |
156 | #:source-dir "maven-resolver-connector-basic/src/main/java" | |
157 | #:test-dir "maven-resolver-connector-basic/src/test" | |
158 | #:jdk ,icedtea-8 | |
159 | #:phases | |
160 | (modify-phases %standard-phases | |
161 | (add-before 'build 'generate-sisu | |
162 | (lambda _ | |
163 | (mkdir-p "build/classes/META-INF/sisu") | |
164 | (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named" | |
165 | (lambda _ | |
166 | (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))))))) | |
167 | (inputs | |
168 | `(("maven-resolver-api" ,maven-resolver-api) | |
169 | ("maven-resolver-spi" ,maven-resolver-spi) | |
170 | ("maven-resolver-util" ,maven-resolver-util) | |
171 | ("java-javax-inject" ,java-javax-inject))) | |
172 | (native-inputs | |
173 | `(("java-junit" ,java-junit) | |
174 | ("java-hamcrest-core" ,java-hamcrest-core) | |
175 | ("maven-resolver-test-util" ,maven-resolver-test-util))) | |
176 | (synopsis "Maven repository connector implementation") | |
177 | (description "This package contains a repository connector implementation | |
178 | for repositories using URI-based layouts."))) | |
458687d5 | 179 | |
90fe8797 JL |
180 | (define-public maven-resolver-impl |
181 | (package | |
182 | (inherit maven-resolver-api) | |
183 | (name "maven-resolver-impl") | |
184 | (arguments | |
185 | `(#:jar-name "maven-resolver-impl.jar" | |
186 | #:source-dir "maven-resolver-impl/src/main/java" | |
187 | #:test-dir "maven-resolver-impl/src/test" | |
188 | #:jdk ,icedtea-8 | |
189 | #:phases | |
190 | (modify-phases %standard-phases | |
191 | (add-before 'build 'generate-sisu | |
192 | (lambda _ | |
193 | (mkdir-p "build/classes/META-INF/sisu") | |
194 | (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named" | |
195 | (lambda _ | |
196 | (display | |
197 | (string-append | |
198 | ;; Build this list by looking for files containing "@Named" | |
199 | "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n" | |
200 | "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n" | |
201 | "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n" | |
202 | "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory\n" | |
203 | "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n" | |
204 | "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n" | |
205 | "org.eclipse.aether.internal.impl.DefaultFileProcessor\n" | |
206 | "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n" | |
207 | "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n" | |
208 | "org.eclipse.aether.internal.impl.DefaultDeployer\n" | |
209 | "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n" | |
210 | "org.eclipse.aether.internal.impl.DefaultInstaller\n" | |
211 | "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n" | |
212 | "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n" | |
213 | "org.eclipse.aether.internal.impl.DefaultOfflineController\n" | |
214 | "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n" | |
215 | "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n" | |
216 | "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n" | |
217 | "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n" | |
218 | "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n" | |
219 | "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n" | |
220 | "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n" | |
221 | "org.eclipse.aether.internal.impl.DefaultDependencyCollector\n")))) | |
222 | #t))))) | |
223 | (inputs | |
224 | `(("maven-resolver-api" ,maven-resolver-api) | |
225 | ("maven-resolver-spi" ,maven-resolver-spi) | |
226 | ("maven-resolver-util" ,maven-resolver-util) | |
227 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
228 | ("java-javax-inject" ,java-javax-inject) | |
229 | ("java-guice" ,java-guice) | |
230 | ("java-guava" ,java-guava) | |
231 | ("java-cglib" ,java-cglib) | |
232 | ("java-asm" ,java-asm) | |
233 | ("jajva-aopalliance" ,java-aopalliance) | |
234 | ("java-slf4j-api" ,java-slf4j-api))) | |
235 | (native-inputs | |
236 | `(("java-junit" ,java-junit) | |
237 | ("java-hamcrest-core" ,java-hamcrest-core) | |
238 | ("maven-resolver-test-util" ,maven-resolver-test-util))))) | |
239 | ||
b2185040 JL |
240 | (define-public maven-shared-utils |
241 | (package | |
242 | (name "maven-shared-utils") | |
243 | (version "3.2.1") | |
244 | (source (origin | |
245 | (method url-fetch) | |
246 | (uri (string-append "https://archive.apache.org/dist/maven/shared/" | |
247 | "maven-shared-utils-" version "-source-release.zip")) | |
248 | (sha256 | |
249 | (base32 | |
250 | "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6")))) | |
251 | (build-system ant-build-system) | |
252 | (arguments | |
253 | `(#:jar-name "maven-shared-utils.jar" | |
254 | #:source-dir "src/main/java" | |
255 | #:jdk ,icedtea-8 | |
256 | #:phases | |
257 | (modify-phases %standard-phases | |
258 | (add-before 'check 'remove-cyclic-dep | |
259 | (lambda _ | |
260 | (delete-file | |
261 | "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java") | |
262 | #t))))) | |
263 | (inputs | |
264 | `(("java-jansi" ,java-jansi) | |
265 | ("java-commons-io" ,java-commons-io) | |
266 | ("java-jsr305" ,java-jsr305) | |
267 | ("java-plexus-container-default" ,java-plexus-container-default))) | |
268 | (native-inputs | |
269 | `(("unzip" ,unzip) | |
270 | ("java-junit" ,java-junit) | |
271 | ("java-hamcrest-core" ,java-hamcrest-core) | |
272 | ("java-commons-lang3" ,java-commons-lang3))) | |
273 | (home-page "https://maven.apache.org/shared/maven-shared-utils/") | |
274 | (synopsis "Plexus-util replacement for maven") | |
275 | (description "This project aims to be a functional replacement for | |
276 | plexus-utils in Maven. It is not a 100% API compatible replacement but a | |
277 | replacement with improvements.") | |
278 | (license license:asl2.0))) | |
279 | ||
a59d5f35 JL |
280 | (define-public maven-plugin-annotations |
281 | (package | |
282 | (name "maven-plugin-annotations") | |
283 | (version "3.5") | |
284 | (source (origin | |
285 | (method url-fetch) | |
286 | (uri (string-append "https://archive.apache.org/dist/maven/" | |
287 | "plugin-tools/maven-plugin-tools-" version | |
288 | "-source-release.zip")) | |
289 | (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2")))) | |
290 | (build-system ant-build-system) | |
291 | (arguments | |
292 | `(#:jar-name "maven-plugin-annotations.jar" | |
293 | #:source-dir "maven-plugin-annotations/src/main/java" | |
294 | #:tests? #f)) | |
295 | (inputs | |
296 | `(("maven-artifact" ,maven-artifact))) | |
297 | (native-inputs | |
298 | `(("unzip" ,unzip))) | |
299 | (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/") | |
300 | (synopsis "Java 5 annotations to use in Mojos") | |
301 | (description "This package contains Java 5 annotations for use in Mojos.") | |
302 | (license license:asl2.0))) | |
303 | ||
ff7a0fcf JL |
304 | (define-public maven-wagon-provider-api |
305 | (package | |
306 | (name "maven-wagon-provider-api") | |
307 | (version "3.0.0") | |
308 | (source (origin | |
309 | (method url-fetch) | |
310 | (uri (string-append "https://archive.apache.org/dist/maven/wagon/" | |
311 | "wagon-" version "-source-release.zip")) | |
312 | (sha256 (base32 "1qb0q4m7vmf290xp3fnfdi3pwl3hkskia5g3z2v82q1ch3y2knqv")))) | |
313 | (build-system ant-build-system) | |
314 | (arguments | |
315 | `(#:jar-name "maven-wagon-provider-api.jar" | |
316 | #:source-dir "wagon-provider-api/src/main/java" | |
317 | #:test-dir "wagon-provider-api/src/test")) | |
318 | (inputs | |
319 | `(("java-plexus-utils" ,java-plexus-utils))) | |
320 | (native-inputs | |
321 | `(("unzip" ,unzip) | |
322 | ("java-junit" ,java-junit) | |
323 | ("java-easymock" ,java-easymock))) | |
324 | (home-page "https://maven.apache.org/wagon") | |
325 | (synopsis "Transport abstraction for Maven") | |
326 | (description "Maven Wagon is a transport abstraction that is used in Maven's | |
327 | artifact and repository handling code.") | |
328 | (license license:asl2.0))) | |
329 | ||
f216a9f9 JL |
330 | (define-public maven-wagon-provider-test |
331 | (package | |
332 | (inherit maven-wagon-provider-api) | |
333 | (name "maven-wagon-provider-test") | |
334 | (arguments | |
335 | `(#:jar-name "maven-wagon-provider-test.jar" | |
336 | #:source-dir "wagon-provider-test/src/main/java" | |
337 | #:tests? #f; no tests | |
338 | #:jdk ,icedtea-8)) | |
339 | (inputs | |
340 | `(("java-plexus-utils" ,java-plexus-utils) | |
341 | ("java-plexus-container-default" ,java-plexus-container-default) | |
342 | ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2) | |
343 | ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2) | |
344 | ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2) | |
345 | ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2) | |
346 | ("java-slf4j-api" ,java-slf4j-api) | |
347 | ("java-tomcat" ,java-tomcat) | |
348 | ("maven-wagon-provider-api" ,maven-wagon-provider-api))) | |
349 | (synopsis "Test classes from maven-wagon") | |
350 | (description "Maven Wagon is a transport abstraction that is used in Maven's | |
351 | artifact and repository handling code. This package contains common test | |
352 | classes used in multiple maven-wagon components."))) | |
353 | ||
0d1b3b39 JL |
354 | (define-public maven-wagon-file |
355 | (package | |
356 | (inherit maven-wagon-provider-api) | |
357 | (name "maven-wagon-file") | |
358 | (arguments | |
359 | `(#:jar-name "maven-wagon-file.jar" | |
360 | #:source-dir "wagon-providers/wagon-file/src/main/java" | |
361 | #:test-dir "wagon-providers/wagon-file/src/test" | |
362 | #:jdk ,icedtea-8 | |
363 | #:phases | |
364 | (modify-phases %standard-phases | |
365 | (add-before 'check 'fix-paths | |
366 | (lambda _ | |
367 | ;; Tests assume they are run by maven, which copies test resources | |
368 | ;; to target. Our ant-build-system does the same, but with the | |
369 | ;; build directory. | |
370 | (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java" | |
371 | (("target") "build")) | |
372 | #t)) | |
373 | (add-after 'build 'generate-metadata | |
374 | (lambda _ | |
375 | (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes") | |
376 | "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli" | |
377 | "--source" "wagon-providers/wagon-file/src/main/java" | |
378 | "--output" "build/classes/META-INF/plexus/components.xml" | |
379 | "--classes" "build/classes" | |
380 | "--descriptors" "build/classes/META-INF") | |
381 | #t)) | |
382 | (add-after 'generate-metadata 'rebuild | |
383 | (lambda _ | |
384 | (invoke "ant" "jar") | |
385 | #t))))) | |
386 | (inputs | |
387 | `(("java-plexus-utils" ,java-plexus-utils) | |
388 | ("maven-wagon-provider-api" ,maven-wagon-provider-api))) | |
389 | (native-inputs | |
390 | `(("maven-wagon-provider-test" ,maven-wagon-provider-test) | |
391 | ("java-plexus-component-metadata" ,java-plexus-component-metadata) | |
392 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
393 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
394 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
395 | ("java-plexus-classworlds" ,java-plexus-classworlds) | |
396 | ("java-guava" ,java-guava) | |
397 | ("java-guice" ,java-guice) | |
398 | ("java-javax-inject" ,java-javax-inject) | |
399 | ("java-cglib" ,java-cglib) | |
400 | ("java-slf4j-api" ,java-slf4j-api) | |
401 | ("java-plexus-utils" ,java-plexus-utils) | |
402 | ("java-plexus-cli" ,java-plexus-cli) | |
403 | ("maven-plugin-api" ,maven-plugin-api) | |
404 | ("maven-plugin-annotations" ,maven-plugin-annotations) | |
405 | ("maven-core" ,maven-core) | |
406 | ("maven-model" ,maven-model) | |
407 | ("java-commons-cli" ,java-commons-cli) | |
408 | ("java-qdox" ,java-qdox) | |
409 | ("java-jdom2" ,java-jdom2) | |
410 | ("java-asm" ,java-asm) | |
411 | ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect) | |
412 | ,@(package-native-inputs maven-wagon-provider-api))) | |
413 | (synopsis "Wagon provider that gets and puts artifacts using the file system") | |
414 | (description "Maven Wagon is a transport abstraction that is used in Maven's | |
415 | artifact and repository handling code. It uses providers, that are tools to | |
416 | manage artifacts and deployment. This package contains the file provider which | |
417 | gets and puts artifacts using the file system."))) | |
418 | ||
458687d5 JL |
419 | (define-public maven-artifact |
420 | (package | |
421 | (name "maven-artifact") | |
422 | (version "3.5.3") | |
423 | (source (origin | |
424 | (method url-fetch) | |
425 | (uri (string-append "https://archive.apache.org/dist/maven/" | |
426 | "maven-3/" version "/source/" | |
427 | "apache-maven-" version "-src.tar.gz")) | |
428 | (sha256 (base32 "06by23fz207lkvsndq883irfcf4p77jzkgf7n2q7hzyw1hs4h5s7")) | |
429 | (modules '((guix build utils))) | |
430 | (snippet | |
431 | '(begin | |
432 | (for-each delete-file (find-files "." "\\.jar$")) | |
433 | #t)) | |
434 | (patches | |
435 | (search-patches "maven-generate-component-xml.patch" | |
436 | "maven-generate-javax-inject-named.patch")))) | |
437 | (build-system ant-build-system) | |
438 | (arguments | |
439 | `(#:jar-name "maven-artifact.jar" | |
440 | #:source-dir "maven-artifact/src/main/java" | |
441 | #:test-dir "maven-artifact/src/test" | |
442 | #:main-class "org.apache.maven.artifact.versioning.ComparableVersion")) | |
443 | (inputs | |
444 | `(("java-plexus-utils" ,java-plexus-utils) | |
445 | ("java-commons-lang3" ,java-commons-lang3))) | |
446 | (native-inputs | |
447 | `(("java-junit" ,java-junit))) | |
448 | (home-page "https://maven.apache.org/") | |
449 | (synopsis "Build system") | |
450 | (description "Apache Maven is a software project management and comprehension | |
451 | tool. This package contains the Maven Artifact classes, providing the | |
452 | @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The | |
453 | jar file is executable and provides a little tool to display how Maven parses | |
454 | and compares versions:") | |
455 | (license license:asl2.0))) | |
d55503a6 JL |
456 | |
457 | (define-public maven-model | |
458 | (package | |
459 | (inherit maven-artifact) | |
460 | (name "maven-model") | |
461 | (arguments | |
462 | `(#:jar-name "maven-model.jar" | |
463 | #:source-dir "maven-model/src/main/java" | |
464 | #:test-dir "maven-model/src/test" | |
465 | #:jdk ,icedtea-8 | |
466 | #:phases | |
467 | (modify-phases %standard-phases | |
468 | (add-before 'build 'generate-models | |
469 | (lambda* (#:key inputs #:allow-other-keys) | |
470 | (define (modello-single-mode file version mode) | |
471 | (invoke "java" "org.codehaus.modello.ModelloCli" | |
472 | file mode "maven-model/src/main/java" version | |
473 | "false" "true")) | |
474 | (let ((file "maven-model/src/main/mdo/maven.mdo")) | |
475 | (modello-single-mode file "4.0.0" "java") | |
476 | (modello-single-mode file "4.0.0" "xpp3-reader") | |
477 | (modello-single-mode file "4.0.0" "xpp3-writer") | |
478 | (modello-single-mode file "4.0.0" "xpp3-extended-reader")) | |
479 | #t))))) | |
480 | (inputs | |
481 | `(("java-commons-lang3" ,java-commons-lang3) | |
482 | ("java-plexus-utils" ,java-plexus-utils))) | |
483 | (native-inputs | |
484 | `(("java-modello-core" ,java-modello-core) | |
485 | ;; for modello: | |
486 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
487 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
488 | ("java-guice" ,java-guice) | |
489 | ("java-cglib" ,java-cglib) | |
490 | ("java-asm" ,java-asm) | |
491 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
492 | ("java-javax-inject" ,java-javax-inject) | |
493 | ("java-plexus-classworlds" ,java-plexus-classworlds) | |
494 | ("java-guava" ,java-guava) | |
495 | ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect) | |
496 | ("java-sisu-build-api" ,java-sisu-build-api) | |
497 | ;; modello plugins: | |
498 | ("java-modello-plugins-java" ,java-modello-plugins-java) | |
499 | ("java-modello-plugins-xml" ,java-modello-plugins-xml) | |
500 | ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3) | |
501 | ;; for tests | |
502 | ("java-junit" ,java-junit))) | |
503 | (description "Apache Maven is a software project management and comprehension | |
504 | tool. This package contains the model for Maven @dfn{POM} (Project Object Model), | |
505 | so really just plain Java objects."))) | |
f084641a JL |
506 | |
507 | (define-public maven-builder-support | |
508 | (package | |
509 | (inherit maven-artifact) | |
510 | (name "maven-builder-support") | |
511 | (arguments | |
512 | `(#:jar-name "maven-builder-support.jar" | |
513 | #:source-dir "maven-builder-support/src/main/java" | |
514 | #:jdk ,icedtea-8 | |
515 | #:test-dir "maven-builder-support/src/test" | |
516 | #:phases | |
517 | (modify-phases %standard-phases | |
518 | (add-before 'check 'fix-paths | |
519 | (lambda _ | |
520 | (with-directory-excursion "maven-builder-support/src/test/java" | |
521 | (substitute* | |
522 | '("org/apache/maven/building/FileSourceTest.java" | |
523 | "org/apache/maven/building/UrlSourceTest.java") | |
524 | (("target/test-classes") "maven-builder-support/src/test/resources"))) | |
525 | #t))))) | |
526 | (inputs | |
527 | `(("java-plexus-utils" ,java-plexus-utils) | |
528 | ("java-commons-lang3" ,java-commons-lang3))) | |
529 | (native-inputs | |
530 | `(("java-junit" ,java-junit) | |
531 | ("java-hamcrest-core" ,java-hamcrest-core))) | |
532 | (description "Apache Maven is a software project management and comprehension | |
533 | tool. This package contains a support library for descriptor builders (model, | |
534 | setting, toolchains)"))) | |
18110e45 JL |
535 | |
536 | (define-public maven-settings | |
537 | (package | |
538 | (inherit maven-artifact) | |
539 | (name "maven-settings") | |
540 | (arguments | |
541 | `(#:jar-name "maven-settings.jar" | |
542 | #:source-dir "maven-settings/src/main/java" | |
543 | #:jdk ,icedtea-8 | |
544 | #:tests? #f; no tests | |
545 | #:phases | |
546 | (modify-phases %standard-phases | |
547 | (add-before 'build 'generate-models | |
548 | (lambda* (#:key inputs #:allow-other-keys) | |
549 | (define (modello-single-mode file version mode) | |
550 | (invoke "java" "org.codehaus.modello.ModelloCli" | |
551 | file mode "maven-settings/src/main/java" version | |
552 | "false" "true")) | |
553 | (let ((file "maven-settings/src/main/mdo/settings.mdo")) | |
554 | (modello-single-mode file "1.1.0" "java") | |
555 | (modello-single-mode file "1.1.0" "xpp3-reader") | |
556 | (modello-single-mode file "1.1.0" "xpp3-writer")) | |
557 | #t))))) | |
558 | (inputs '()) | |
559 | (native-inputs | |
560 | `(("java-modello-core" ,java-modello-core) | |
561 | ;; for modello: | |
562 | ;("container" ,java-plexus-container-default) | |
563 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
564 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
565 | ("java-guice" ,java-guice) | |
566 | ("java-cglib" ,java-cglib) | |
567 | ("java-asm" ,java-asm) | |
568 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
569 | ("java-javax-inject" ,java-javax-inject) | |
570 | ("java-plexus-classworlds" ,java-plexus-classworlds) | |
571 | ("java-plexus-utils" ,java-plexus-utils) | |
572 | ("java-guava" ,java-guava) | |
573 | ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect) | |
574 | ("java-sisu-build-api" ,java-sisu-build-api) | |
575 | ;; modello plugins: | |
576 | ("java-modello-plugins-java" ,java-modello-plugins-java) | |
577 | ("java-modello-plugins-xml" ,java-modello-plugins-xml) | |
578 | ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3))) | |
579 | (description "Apache Maven is a software project management and comprehension | |
580 | tool. This package contains strictly the model for Maven settings, that is | |
581 | simply plain java objects."))) | |
3a5572ae JL |
582 | |
583 | (define-public maven-settings-builder | |
584 | (package | |
585 | (inherit maven-artifact) | |
586 | (name "maven-settings-builder") | |
587 | (arguments | |
588 | `(#:jar-name "maven-settings-builder.jar" | |
589 | #:source-dir "maven-settings-builder/src/main/java" | |
590 | #:jdk ,icedtea-8 | |
591 | #:test-dir "maven-settings-builder/src/test" | |
592 | #:phases | |
593 | (modify-phases %standard-phases | |
594 | (add-before 'build 'generate-components.xml | |
595 | (lambda _ | |
596 | (mkdir-p "build/classes/META-INF/plexus") | |
597 | (chmod "components.sh" #o755) | |
598 | (invoke "./components.sh" "maven-settings-builder/src/main/java" | |
599 | "build/classes/META-INF/plexus/components.xml") | |
600 | #t))))) | |
601 | (inputs | |
602 | `(("java-plexus-utils" ,java-plexus-utils) | |
603 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
604 | ("java-plexus-interpolation" ,java-plexus-interpolation) | |
605 | ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher) | |
606 | ("maven-builder-support" ,maven-builder-support) | |
607 | ("maven-settings" ,maven-settings) | |
608 | ("java-commons-lang3" ,java-commons-lang3))) | |
609 | (native-inputs | |
610 | `(("java-junit" ,java-junit))) | |
611 | (description "Apache Maven is a software project management and comprehension | |
612 | tool. This package contains the effective model builder, with profile activation, | |
613 | inheritance, interpolation, @dots{}"))) | |
516db3b9 JL |
614 | |
615 | (define-public maven-model-builder | |
616 | (package | |
617 | (inherit maven-artifact) | |
618 | (name "maven-model-builder") | |
619 | (arguments | |
620 | `(#:jar-name "maven-model-builder.jar" | |
621 | #:source-dir "maven-model-builder/src/main/java" | |
622 | #:jdk ,icedtea-8 | |
623 | #:test-dir "maven-model-builder/src/test" | |
624 | #:phases | |
625 | (modify-phases %standard-phases | |
626 | (add-before 'build 'copy-resources | |
627 | (lambda _ | |
628 | (copy-recursively "maven-model-builder/src/main/resources" | |
629 | "build/classes") | |
630 | #t)) | |
631 | (add-before 'build 'generate-components.xml | |
632 | (lambda _ | |
633 | (mkdir-p "build/classes/META-INF/plexus") | |
634 | (chmod "components.sh" #o755) | |
635 | (invoke "./components.sh" "maven-model-builder/src/main/java" | |
636 | "build/classes/META-INF/plexus/components.xml") | |
637 | #t)) | |
638 | (add-before 'check 'fix-paths | |
639 | (lambda _ | |
640 | (substitute* (find-files "maven-model-builder/src/test/java" ".*.java") | |
641 | (("src/test") "maven-model-builder/src/test")) | |
642 | #t))))) | |
643 | (inputs | |
644 | `(("model" ,maven-model) | |
645 | ("artifact" ,maven-artifact) | |
646 | ("support" ,maven-builder-support) | |
647 | ("annotations" ,java-plexus-component-annotations) | |
648 | ("utils" ,java-plexus-utils) | |
649 | ("interpolation" ,java-plexus-interpolation) | |
650 | ("lang3" ,java-commons-lang3) | |
651 | ("guava" ,java-guava))) | |
652 | (native-inputs | |
653 | `(("java-junit" ,java-junit) | |
654 | ("java-hamcrest-core" ,java-hamcrest-core) | |
655 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
656 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
657 | ("guice" ,java-guice) | |
658 | ("java-cglib" ,java-cglib) | |
659 | ("java-asm" ,java-asm) | |
660 | ("sisu-inject" ,java-eclipse-sisu-inject) | |
661 | ("javax-inject" ,java-javax-inject) | |
662 | ("xmlunit" ,java-xmlunit) | |
663 | ("xmlunit" ,java-xmlunit-legacy) | |
664 | ("xbean" ,java-geronimo-xbean-reflect) | |
665 | ("classworlds" ,java-plexus-classworlds))) | |
666 | (description "Apache Maven is a software project management and comprehension | |
667 | tool. This package contains the effective model builder, with profile activation, | |
668 | inheritance, interpolation, @dots{}"))) | |
18736663 JL |
669 | |
670 | (define-public maven-repository-metadata | |
671 | (package | |
672 | (inherit maven-artifact) | |
673 | (name "maven-repository-metadata") | |
674 | (arguments | |
675 | `(#:jar-name "maven-repository-metadata.jar" | |
676 | #:source-dir "maven-repository-metadata/src/main/java" | |
677 | #:jdk ,icedtea-8 | |
678 | #:tests? #f; no tests | |
679 | #:phases | |
680 | (modify-phases %standard-phases | |
681 | (add-before 'build 'generate-models | |
682 | (lambda* (#:key inputs #:allow-other-keys) | |
683 | (define (modello-single-mode file version mode) | |
684 | (invoke "java" "org.codehaus.modello.ModelloCli" | |
685 | file mode "maven-repository-metadata/src/main/java" version | |
686 | "false" "true")) | |
687 | (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo")) | |
688 | (modello-single-mode file "1.1.0" "java") | |
689 | (modello-single-mode file "1.1.0" "xpp3-reader") | |
690 | (modello-single-mode file "1.1.0" "xpp3-writer")) | |
691 | #t))))) | |
692 | (inputs '()) | |
693 | (native-inputs | |
694 | `(("modello" ,java-modello-core) | |
695 | ;; for modello: | |
696 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
697 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
698 | ("java-guice" ,java-guice) | |
699 | ("java-cglib" ,java-cglib) | |
700 | ("java-asm" ,java-asm) | |
701 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
702 | ("java-javax-inject" ,java-javax-inject) | |
703 | ("java-plexus-utils" ,java-plexus-utils) | |
704 | ("java-plexus-classworlds" ,java-plexus-classworlds) | |
705 | ("java-guava" ,java-guava) | |
706 | ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect) | |
707 | ("java-sisu-build-api" ,java-sisu-build-api) | |
708 | ;; modello plugins: | |
709 | ("java-modello-plugins-java" ,java-modello-plugins-java) | |
710 | ("java-modello-plugins-xml" ,java-modello-plugins-xml) | |
711 | ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3))) | |
712 | (description "Apache Maven is a software project management and comprehension | |
713 | tool. This package contains strictly the model for Maven Repository Metadata, | |
714 | so really just plain objects."))) | |
5aa4ea6a JL |
715 | |
716 | (define-public maven-resolver-provider | |
717 | (package | |
718 | (inherit maven-artifact) | |
719 | (name "maven-resolver-provider") | |
720 | (arguments | |
721 | `(#:jar-name "maven-resolver-provider.jar" | |
722 | #:source-dir "maven-resolver-provider/src/main/java" | |
723 | #:test-dir "maven-resolver-provider/src/test" | |
724 | #:jdk ,icedtea-8 | |
725 | #:tests? #f; dependency loop on maven-core (@Component RepositorySystem) | |
726 | #:phases | |
727 | (modify-phases %standard-phases | |
728 | (add-before 'build 'generate-sisu-named | |
729 | (lambda _ | |
730 | (mkdir-p "build/classes/META-INF/sisu") | |
731 | (chmod "./sisu.sh" #o755) | |
732 | (invoke "./sisu.sh" "maven-resolver-provider/src/main/java" | |
733 | "build/classes/META-INF/sisu/javax.inject.Named") | |
734 | #t))))) | |
735 | (inputs | |
736 | `(("maven-resolver-spi" ,maven-resolver-spi) | |
737 | ("maven-resolver-api" ,maven-resolver-api) | |
738 | ("maven-resolver-impl" ,maven-resolver-impl) | |
739 | ("maven-resolver-util" ,maven-resolver-util) | |
740 | ("maven-model" ,maven-model) | |
741 | ("maven-model-builder" ,maven-model-builder) | |
742 | ("maven-builder-support" ,maven-builder-support) | |
743 | ("maven-repository-metadata" ,maven-repository-metadata) | |
744 | ("java-plexus-utils" ,java-plexus-utils) | |
745 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
746 | ("java-commons-lang3" ,java-commons-lang3) | |
747 | ("java-guice" ,java-guice) | |
748 | ("java-guava" ,java-guava) | |
749 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
750 | ("java-javax-inject" ,java-javax-inject))))) | |
8f5caf93 JL |
751 | |
752 | (define-public maven-plugin-api | |
753 | (package | |
754 | (inherit maven-artifact) | |
755 | (name "maven-plugin-api") | |
756 | (arguments | |
757 | `(#:jar-name "maven-plugin-api.jar" | |
758 | #:source-dir "maven-plugin-api/src/main/java" | |
759 | #:jdk ,icedtea-8 | |
760 | #:test-dir "maven-plugin-api/src/test" | |
761 | #:phases | |
762 | (modify-phases %standard-phases | |
763 | (add-before 'build 'generate-models | |
764 | (lambda* (#:key inputs #:allow-other-keys) | |
765 | (define (modello-single-mode file version mode) | |
766 | (invoke "java" "org.codehaus.modello.ModelloCli" | |
767 | file mode "maven-plugin-api/src/main/java" version | |
768 | "false" "true")) | |
769 | (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo")) | |
770 | (modello-single-mode file "1.0.0" "java") | |
771 | (modello-single-mode file "1.0.0" "xpp3-reader") | |
772 | (modello-single-mode file "1.0.0" "xpp3-writer")) | |
773 | #t))))) | |
774 | (inputs | |
775 | `(("maven-artifact" ,maven-artifact) | |
776 | ("maven-model" ,maven-model) | |
777 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
778 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
779 | ("guice" ,java-guice) | |
780 | ("java-cglib" ,java-cglib) | |
781 | ("java-asm" ,java-asm) | |
782 | ("sisu-inject" ,java-eclipse-sisu-inject) | |
783 | ("javax-inject" ,java-javax-inject) | |
784 | ("utils" ,java-plexus-utils))) | |
785 | (native-inputs | |
786 | `(("modello" ,java-modello-core) | |
787 | ;; for modello: | |
788 | ("classworlds" ,java-plexus-classworlds) | |
789 | ("guava" ,java-guava) | |
790 | ("xbean" ,java-geronimo-xbean-reflect) | |
791 | ("build-api" ,java-sisu-build-api) | |
792 | ;; modello plugins: | |
793 | ("java" ,java-modello-plugins-java) | |
794 | ("xml" ,java-modello-plugins-xml) | |
795 | ("xpp3" ,java-modello-plugins-xpp3) | |
796 | ;; for tests | |
797 | ("java-junit" ,java-junit))) | |
798 | (description "Apache Maven is a software project management and comprehension | |
799 | tool. This package contains strictly the API for plugins -- composed of goals | |
800 | implemented by Mojos -- development. | |
801 | ||
802 | A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor, | |
803 | generally generated from plugin sources using maven-plugin-plugin."))) | |
7a42f058 JL |
804 | |
805 | (define maven-core-bootstrap | |
806 | (package | |
807 | (inherit maven-artifact) | |
808 | (name "maven-core") | |
809 | (arguments | |
810 | `(#:jar-name "maven-core.jar" | |
811 | #:source-dir "src/main/java" | |
812 | #:jdk ,icedtea-8 | |
813 | ;; Tests need maven-compat, which requires maven-core | |
814 | #:tests? #f | |
815 | #:phases | |
816 | (modify-phases %standard-phases | |
817 | (add-before 'configure 'chdir | |
818 | (lambda _ | |
819 | ;; Required for generating components.xml in maven-core | |
820 | (chdir "maven-core") | |
821 | #t)) | |
822 | (add-before 'build 'copy-resources | |
823 | (lambda _ | |
824 | (mkdir-p "build/classes/") | |
825 | (copy-recursively "src/main/resources" "build/classes") | |
826 | #t)) | |
827 | (add-before 'build 'generate-sisu-named | |
828 | (lambda _ | |
829 | (mkdir-p "build/classes/META-INF/sisu") | |
830 | (chmod "../sisu.sh" #o755) | |
831 | (invoke "../sisu.sh" "src/main/java" | |
832 | "build/classes/META-INF/sisu/javax.inject.Named") | |
833 | #t)) | |
834 | (add-before 'build 'generate-models | |
835 | (lambda* (#:key inputs #:allow-other-keys) | |
836 | (define (modello-single-mode file version mode) | |
837 | (invoke "java" "org.codehaus.modello.ModelloCli" | |
838 | file mode "src/main/java" version | |
839 | "false" "true")) | |
840 | (let ((file "src/main/mdo/toolchains.mdo")) | |
841 | (modello-single-mode file "1.1.0" "java") | |
842 | (modello-single-mode file "1.1.0" "xpp3-reader") | |
843 | (modello-single-mode file "1.1.0" "xpp3-writer")) | |
844 | #t))))) | |
845 | (inputs | |
846 | `(("maven-artifact" ,maven-artifact) | |
847 | ("maven-resolver-provider" ,maven-resolver-provider) | |
848 | ("maven-builder-support" ,maven-builder-support) | |
849 | ("maven-model" ,maven-model) | |
850 | ("maven-model-builder" ,maven-model-builder) | |
851 | ("maven-settings" ,maven-settings) | |
852 | ("maven-settings-builder" ,maven-settings-builder) | |
853 | ("maven-plugin-api" ,maven-plugin-api) | |
854 | ("maven-repository-metadata" ,maven-repository-metadata) | |
855 | ("maven-shared-utils" ,maven-shared-utils) | |
856 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
857 | ("java-plexus-utils" ,java-plexus-utils) | |
858 | ("java-commons-lang3" ,java-commons-lang3) | |
859 | ("java-guava" ,java-guava) | |
860 | ("java-guice" ,java-guice) | |
861 | ("maven-resolver-api" ,maven-resolver-api) | |
862 | ("maven-resolver-spi" ,maven-resolver-spi) | |
863 | ("maven-resolver-util" ,maven-resolver-util) | |
864 | ("maven-resolver-impl" ,maven-resolver-impl) | |
865 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
866 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
867 | ("java-javax-inject" ,java-javax-inject) | |
868 | ("java-plexus-classworld" ,java-plexus-classworlds))) | |
869 | (native-inputs | |
870 | `(("java-modello-core" ,java-modello-core) | |
871 | ("java-cglib" ,java-cglib) | |
872 | ("java-asm" ,java-asm) | |
873 | ("java-plexus-classworlds" ,java-plexus-classworlds) | |
874 | ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect) | |
875 | ("java-sisu-build-api" ,java-sisu-build-api) | |
876 | ("java-modello-plugins-java" ,java-modello-plugins-java) | |
877 | ("java-modello-plugins-xml" ,java-modello-plugins-xml) | |
878 | ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3) | |
879 | ;; tests | |
880 | ("java-junit" ,java-junit) | |
881 | ("java-mockito-1" ,java-mockito-1) | |
882 | ("java-commons-jxpath" ,java-commons-jxpath))) | |
883 | (description "Apache Maven is a software project management and comprehension | |
884 | tool. This package contains the maven core classes managing the whole build | |
885 | process."))) | |
b822544c JL |
886 | |
887 | (define-public maven-core | |
888 | (package | |
889 | (inherit maven-core-bootstrap) | |
890 | (arguments | |
891 | (substitute-keyword-arguments (package-arguments maven-core-bootstrap) | |
892 | ((#:phases phases) | |
893 | `(modify-phases ,phases | |
894 | (add-before 'build 'modify-metainf | |
895 | (lambda _ | |
896 | (substitute* "build.xml" | |
897 | (("message=\"\"") "message=\"Implementation-Version: 3.5.3\n\"")) | |
898 | #t)) | |
899 | (add-before 'build 'add-maven-files | |
900 | (lambda _ | |
901 | (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core") | |
902 | (copy-file "pom.xml" | |
903 | "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml") | |
904 | (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties" | |
905 | (lambda _ | |
906 | (format #t "version=~a~% | |
907 | groupId=org.apache.maven~% | |
908 | artifactId=maven-core" ,(package-version maven-core-bootstrap)))) | |
909 | #t)) | |
910 | (add-after 'build 'generate-metadata | |
911 | (lambda _ | |
912 | (define (components file) | |
913 | (let ((sxml (with-input-from-file file | |
914 | (lambda _ (xml->sxml (current-input-port) | |
915 | #:trim-whitespace? #t))))) | |
916 | ;; Select the list of <component>s inside the <component-set> | |
917 | ;; and <components>. | |
918 | ((@ (ice-9 match) match) sxml | |
919 | (('*TOP* | |
920 | ('*PI* foo ...) | |
921 | ('component-set | |
922 | ('components x ...))) x)))) | |
923 | (use-modules (sxml simple)) | |
924 | (delete-file "build/classes/META-INF/plexus/components.xml") | |
925 | (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes") | |
926 | "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli" | |
927 | "--source" "build/classes/META-INF/plexus" | |
928 | "--output" "build/classes/META-INF/plexus/components.t.xml" | |
929 | "--classes" "build/classes" | |
930 | "--descriptors" "build/classes") | |
931 | ;; Now we merge all other components from hand-written xml | |
932 | (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml")) | |
933 | (components-xml (components "src/main/resources/META-INF/plexus/components.xml")) | |
934 | (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml")) | |
935 | (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml"))) | |
936 | (with-output-to-file "build/classes/META-INF/plexus/components.xml" | |
937 | (lambda _ | |
938 | (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n") | |
939 | (sxml->xml | |
940 | `(component-set | |
941 | (components | |
942 | ,@(append generated-xml components-xml | |
943 | default-bindings-xml | |
944 | artifact-handlers-xml))))))) | |
945 | #t)) | |
946 | (add-after 'generate-metadata 'rebuild | |
947 | (lambda _ | |
948 | (invoke "ant" "jar") | |
949 | #t)))))) | |
950 | (native-inputs | |
951 | `(("java-plexus-component-metadata" ,java-plexus-component-metadata) | |
952 | ("java-commons-cli" ,java-commons-cli) | |
953 | ("java-plexus-cli" ,java-plexus-cli) | |
954 | ("java-jdom2" ,java-jdom2) | |
955 | ("java-qdox" ,java-qdox) | |
956 | ("maven-core-boot" ,maven-core-bootstrap) | |
957 | ,@(package-native-inputs maven-core-bootstrap))))) | |
e2c7d329 JL |
958 | |
959 | (define-public maven-embedder | |
960 | (package | |
961 | (inherit maven-artifact) | |
962 | (name "maven-embedder") | |
963 | (arguments | |
964 | `(#:jar-name "maven-embedder.jar" | |
965 | #:source-dir "maven-embedder/src/main/java" | |
966 | #:test-dir "maven-embedder/src/test" | |
967 | #:test-exclude (list "**/MavenCliTest.java") | |
968 | #:jdk ,icedtea-8 | |
969 | #:phases | |
970 | (modify-phases %standard-phases | |
971 | (add-before 'build 'generate-sisu-named | |
972 | (lambda _ | |
973 | (mkdir-p "build/classes/META-INF/sisu") | |
974 | (chmod "sisu.sh" #o755) | |
975 | (invoke "./sisu.sh" "maven-embedder/src/main/java" | |
976 | "build/classes/META-INF/sisu/javax.inject.Named") | |
977 | #t)) | |
978 | (add-before 'build 'generate-models | |
979 | (lambda* (#:key inputs #:allow-other-keys) | |
980 | (define (modello-single-mode file version mode) | |
981 | (invoke "java" "org.codehaus.modello.ModelloCli" | |
982 | file mode "maven-embedder/src/main/java" version | |
983 | "false" "true")) | |
984 | (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo")) | |
985 | (modello-single-mode file "1.0.0" "java") | |
986 | (modello-single-mode file "1.0.0" "xpp3-reader") | |
987 | (modello-single-mode file "1.0.0" "xpp3-writer")) | |
988 | #t)) | |
989 | (add-before 'check 'fix-test-paths | |
990 | (lambda _ | |
991 | (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java" | |
992 | (("target/test-classes") "build/test-classes")) | |
993 | #t)) | |
994 | (add-before 'check 'fix-test-compilation | |
995 | (lambda _ | |
996 | ;; Tests are in the java/ subdir. Other subdirectories contain | |
997 | ;; additional test plugins, with duplicate classes, so we can't | |
998 | ;; compile them. Also, they are meant to be built with maven, to | |
999 | ;; test its build process. | |
1000 | (substitute* "build.xml" | |
1001 | (("srcdir=\"maven-embedder/src/test\"") | |
1002 | "srcdir=\"maven-embedder/src/test/java\"")) | |
1003 | #t))))) | |
1004 | (inputs | |
1005 | `(("maven-core" ,maven-core) | |
1006 | ("maven-artifact" ,maven-artifact) | |
1007 | ("maven-plugin-api" ,maven-plugin-api) | |
1008 | ("maven-builder-support" ,maven-builder-support) | |
1009 | ("maven-model" ,maven-model) | |
1010 | ("maven-model-builder" ,maven-model-builder) | |
1011 | ("maven-settings" ,maven-settings) | |
1012 | ("maven-settings-builder" ,maven-settings-builder) | |
1013 | ("maven-shared-utils" ,maven-shared-utils) | |
1014 | ("java-plexus-classworlds" ,java-plexus-classworlds) | |
1015 | ("java-plexus-util" ,java-plexus-utils) | |
1016 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
1017 | ("java-plexus-cipher" ,java-plexus-cipher) | |
1018 | ("java-plexus-component-annotations" ,java-plexus-component-annotations) | |
1019 | ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher) | |
1020 | ("maven-resolevr-util" ,maven-resolver-util) | |
1021 | ("maven-resolevr-api" ,maven-resolver-api) | |
1022 | ("java-logback-core" ,java-logback-core) | |
1023 | ("java-logback-classic" ,java-logback-classic) | |
1024 | ("java-commons-cli" ,java-commons-cli) | |
1025 | ("java-commons-io" ,java-commons-io) | |
1026 | ("java-commons-lang3" ,java-commons-lang3) | |
1027 | ("java-guava" ,java-guava) | |
1028 | ("java-guice" ,java-guice) | |
1029 | ("java-javax-inject" ,java-javax-inject) | |
1030 | ("java-slf4j-api" ,java-slf4j-api) | |
1031 | ("java-slf4j-simple" ,java-slf4j-simple))) | |
1032 | (native-inputs | |
1033 | `(("java-modello-core" ,java-modello-core) | |
1034 | ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect) | |
1035 | ("java-sisu-build-api" ,java-sisu-build-api) | |
1036 | ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus) | |
1037 | ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) | |
1038 | ("java-cglib" ,java-cglib) | |
1039 | ("java-asm" ,java-asm) | |
1040 | ("java-modello-plugins-java" ,java-modello-plugins-java) | |
1041 | ("java-modello-plugins-xml" ,java-modello-plugins-xml) | |
1042 | ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3) | |
1043 | ;; tests | |
1044 | ("java-junit" ,java-junit) | |
1045 | ("java-objenesis" ,java-objenesis) | |
1046 | ("java-mockito-1" ,java-mockito-1) | |
1047 | ("java-hamcrest-core" ,java-hamcrest-core))) | |
1048 | (description "Apache Maven is a software project management and comprehension | |
1049 | tool. This package contains a Maven embeddable component, with CLI and | |
1050 | logging support."))) |