gnu: Add maven-resources-plugin.
[jackhill/guix/guix.git] / gnu / packages / maven.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
3 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
4 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
5 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
6 ;;;
7 ;;; This file is part of GNU Guix.
8 ;;;
9 ;;; GNU Guix is free software; you can redistribute it and/or modify it
10 ;;; under the terms of the GNU General Public License as published by
11 ;;; the Free Software Foundation; either version 3 of the License, or (at
12 ;;; your option) any later version.
13 ;;;
14 ;;; GNU Guix is distributed in the hope that it will be useful, but
15 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;;; GNU General Public License for more details.
18 ;;;
19 ;;; You should have received a copy of the GNU General Public License
20 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
21
22 (define-module (gnu packages maven)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix git-download)
27 #:use-module (guix utils)
28 #:use-module (guix build-system ant)
29 #:use-module (gnu packages)
30 #:use-module (gnu packages base)
31 #:use-module (gnu packages compression)
32 #:use-module (gnu packages java)
33 #:use-module (gnu packages maven-parent-pom)
34 #:use-module (gnu packages web)
35 #:use-module (gnu packages xml)
36 #:use-module (ice-9 match))
37
38 (define-public java-plexus-component-metadata
39 (package
40 (inherit java-plexus-container-default)
41 (name "java-plexus-component-metadata")
42 (arguments
43 `(#:jar-name "plexus-component-metadata.jar"
44 #:source-dir "src/main/java"
45 #:test-dir "src/test"
46 #:jdk ,icedtea-8
47 #:phases
48 (modify-phases %standard-phases
49 (add-before 'configure 'chdir
50 (lambda _
51 (chdir "plexus-component-metadata")
52 #t))
53 (add-before 'build 'copy-resources
54 (lambda _
55 (copy-recursively "src/main/resources"
56 "build/classes/")
57 #t)))))
58 (propagated-inputs
59 `(("java-plexus-container-default" ,java-plexus-container-default)
60 ("java-plexu-component-annotations" ,java-plexus-component-annotations)
61 ("java-plexus-utils" ,java-plexus-utils)
62 ("java-plexus-cli" ,java-plexus-cli)
63 ("java-plexus-classworlds" ,java-plexus-classworlds)
64 ("maven-plugin-api" ,maven-plugin-api)
65 ("maven-plugin-annotations" ,maven-plugin-annotations)
66 ("maven-core-bootstrap" ,maven-core-bootstrap)
67 ("maven-model" ,maven-model)
68 ("java-commons-cli" ,java-commons-cli)
69 ("java-qdox" ,java-qdox)
70 ("java-jdom2" ,java-jdom2)
71 ("java-asm" ,java-asm)))
72 (native-inputs
73 `(("java-junit" ,java-junit)
74 ("java-guava" ,java-guava)
75 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
76 (synopsis "Inversion-of-control container for Maven")
77 (description "The Plexus project provides a full software stack for creating
78 and executing software projects. Based on the Plexus container, the
79 applications can utilise component-oriented programming to build modular,
80 reusable components that can easily be assembled and reused. This package
81 provides the Maven plugin generating the component metadata.")))
82
83 (define-public maven-resolver-api
84 (package
85 (name "maven-resolver-api")
86 (version "1.3.1")
87 (source (origin
88 (method git-fetch)
89 (uri (git-reference
90 (url "https://github.com/apache/maven-resolver")
91 (commit (string-append "maven-resolver-" version))))
92 (file-name (git-file-name name version))
93 (sha256
94 (base32
95 "1x1gll8nkfl6zgnab78fxxvvhg42b2grxgdh1wp2h4qxsjkxg93d"))))
96 (build-system ant-build-system)
97 (arguments
98 `(#:jar-name "maven-resolver-api.jar"
99 #:source-dir "maven-resolver-api/src/main/java"
100 #:test-dir "maven-resolver-api/src/test"
101 #:phases
102 (modify-phases %standard-phases
103 (replace 'install
104 (install-from-pom "maven-resolver-api/pom.xml")))))
105 (native-inputs
106 `(("java-asm" ,java-asm)
107 ("java-cglib" ,java-cglib)
108 ("java-hamcrest-core" ,java-hamcrest-core)
109 ("java-junit" ,java-junit)
110 ("java-mockito-1" ,java-mockito-1)
111 ("java-objenesis" ,java-objenesis)))
112 (propagated-inputs
113 `(("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
114 (home-page "https://github.com/apache/maven-resolver")
115 (synopsis "Maven repository system API")
116 (description "This package contains the API for the maven repository system.")
117 (license license:asl2.0)))
118
119 (define maven-resolver-parent-pom
120 (package
121 (inherit maven-resolver-api)
122 (name "maven-resolver-parent-pom")
123 (arguments
124 `(#:tests? #f
125 #:phases
126 (modify-phases %standard-phases
127 (delete 'configure)
128 (delete 'build)
129 (add-before 'install 'fix-pom
130 (lambda _
131 (substitute* "pom.xml"
132 (("<classifier>no_aop</classifier>") ""))
133 #t))
134 (replace 'install
135 (install-pom-file "pom.xml")))))
136 (propagated-inputs '())))
137
138 (define-public maven-resolver-spi
139 (package
140 (inherit maven-resolver-api)
141 (name "maven-resolver-spi")
142 (arguments
143 `(#:jar-name "maven-resolver-spi.jar"
144 #:source-dir "maven-resolver-spi/src/main/java"
145 #:test-dir "maven-resolver-spi/src/test"
146 #:phases
147 (modify-phases %standard-phases
148 (replace 'install
149 (install-from-pom "maven-resolver-spi/pom.xml")))))
150 (propagated-inputs
151 `(("maven-resolver-api" ,maven-resolver-api)))
152 (synopsis "Maven repository system SPI")
153 (description "This package contains the service provider interface (SPI)
154 for repository system implementations and repository connectors.")))
155
156 (define-public maven-resolver-test-util
157 (package
158 (inherit maven-resolver-api)
159 (name "maven-resolver-test-util")
160 (arguments
161 `(#:jar-name "maven-resolver-test-util.jar"
162 #:source-dir "maven-resolver-test-util/src/main/java"
163 #:test-dir "maven-resolver-test-util/src/test"
164 #:jdk ,icedtea-8))
165 (inputs
166 `(("maven-resolver-api" ,maven-resolver-api)
167 ("maven-resolver-spi" ,maven-resolver-spi)))
168 (synopsis "Utility classes for testing the maven repository system")
169 (description "This package contains a collection of utility classes to
170 ease testing of the repository system.")))
171
172 (define-public maven-resolver-util
173 (package
174 (inherit maven-resolver-api)
175 (name "maven-resolver-util")
176 (arguments
177 `(#:jar-name "maven-resolver-util.jar"
178 #:source-dir "maven-resolver-util/src/main/java"
179 #:test-dir "maven-resolver-util/src/test"
180 #:phases
181 (modify-phases %standard-phases
182 (replace 'install
183 (install-from-pom "maven-resolver-util/pom.xml")))))
184 (propagated-inputs
185 `(("maven-resolver-api" ,maven-resolver-api)))
186 (native-inputs
187 `(("java-junit" ,java-junit)
188 ("java-hamcrest-core" ,java-hamcrest-core)
189 ("maven-resolver-test-util" ,maven-resolver-test-util)))
190 (synopsis "Utility classes for the maven repository system")
191 (description "This package contains a collection of utility classes to
192 ease usage of the repository system.")))
193
194 (define-public maven-resolver-connector-basic
195 (package
196 (inherit maven-resolver-api)
197 (name "maven-resolver-connector-basic")
198 (arguments
199 `(#:jar-name "maven-resolver-connector-basic.jar"
200 #:source-dir "maven-resolver-connector-basic/src/main/java"
201 #:test-dir "maven-resolver-connector-basic/src/test"
202 #:jdk ,icedtea-8
203 #:phases
204 (modify-phases %standard-phases
205 (add-before 'build 'generate-sisu
206 (lambda _
207 (mkdir-p "build/classes/META-INF/sisu")
208 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
209 (lambda _
210 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
211 #t))
212 (replace 'install
213 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
214 (propagated-inputs
215 `(("maven-resolver-api" ,maven-resolver-api)
216 ("maven-resolver-spi" ,maven-resolver-spi)
217 ("maven-resolver-util" ,maven-resolver-util)
218 ("java-slf4j-api" ,java-slf4j-api)))
219 (native-inputs
220 `(("java-javax-inject" ,java-javax-inject)
221 ("java-junit" ,java-junit)
222 ("maven-resolver-test-util" ,maven-resolver-test-util)))
223 (synopsis "Maven repository connector implementation")
224 (description "This package contains a repository connector implementation
225 for repositories using URI-based layouts.")))
226
227 (define-public maven-resolver-impl
228 (package
229 (inherit maven-resolver-api)
230 (name "maven-resolver-impl")
231 (arguments
232 `(#:jar-name "maven-resolver-impl.jar"
233 #:source-dir "maven-resolver-impl/src/main/java"
234 #:test-dir "maven-resolver-impl/src/test"
235 #:phases
236 (modify-phases %standard-phases
237 (add-before 'build 'generate-sisu
238 (lambda _
239 (mkdir-p "build/classes/META-INF/sisu")
240 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
241 (lambda _
242 (display
243 (string-append
244 ;; Build this list by looking for files containing "@Named"
245 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
246 "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
247 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
248 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
249 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
250 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
251 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
252 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
253 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
254 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
255 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
256 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
257 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
258 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
259 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
260 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
261 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
262 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
263 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
264 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
265 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
266 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
267 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
268 #t))
269 (replace 'install
270 (install-from-pom "maven-resolver-impl/pom.xml")))))
271 (propagated-inputs
272 `(("maven-resolver-api" ,maven-resolver-api)
273 ("maven-resolver-spi" ,maven-resolver-spi)
274 ("maven-resolver-util" ,maven-resolver-util)
275 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
276 ("java-javax-inject" ,java-javax-inject)
277 ("java-guice" ,java-guice)
278 ("java-slf4j-api" ,java-slf4j-api)
279 ("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
280 (native-inputs
281 `(("java-junit" ,java-junit)
282 ("maven-resolver-test-util" ,maven-resolver-test-util)))))
283
284 (define-public maven-resolver-transport-wagon
285 (package
286 (inherit maven-resolver-api)
287 (name "maven-resolver-transport-wagon")
288 (arguments
289 `(#:jar-name "maven-resolver-transport-wagon.jar"
290 #:source-dir "maven-resolver-transport-wagon/src/main/java"
291 #:test-dir "maven-resolver-transport-wagon/src/test"
292 #:jdk ,icedtea-8
293 #:phases
294 (modify-phases %standard-phases
295 (add-before 'build 'generate-sisu
296 (lambda _
297 (mkdir-p "build/classes/META-INF/sisu")
298 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
299 (lambda _
300 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
301 #t))
302 (add-before 'build 'generate-components.xml
303 (lambda _
304 (mkdir-p "build/classes/META-INF/plexus")
305 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
306 (lambda _
307 (display
308 (string-append
309 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
310 <component-set>
311 <components>
312 <component>
313 <role>org.eclipse.aether.transport.wagon.WagonConfigurator</role>
314 <role-hint>plexus</role-hint>
315 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator</implementation>
316 <description />
317 <isolated-realm>false</isolated-realm>
318 <requirements>
319 <requirement>
320 <role>org.codehaus.plexus.PlexusContainer</role>
321 <role-hint />
322 <field-name>container</field-name>
323 </requirement>
324 </requirements>
325 </component>
326 <component>
327 <role>org.eclipse.aether.transport.wagon.WagonProvider</role>
328 <role-hint>plexus</role-hint>
329 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider</implementation>
330 <description />
331 <isolated-realm>false</isolated-realm>
332 <requirements>
333 <requirement>
334 <role>org.codehaus.plexus.PlexusContainer</role>
335 <role-hint />
336 <field-name>container</field-name>
337 </requirement>
338 </requirements>
339 </component>
340 </components>
341 </component-set>\n"))))
342 #t)))))
343 (inputs
344 `(("maven-resolver-api" ,maven-resolver-api)
345 ("maven-resolver-spi" ,maven-resolver-spi)
346 ("maven-resolver-util" ,maven-resolver-util)
347 ("java-javax-inject" ,java-javax-inject)
348 ("mavne-wagon-provider-api" ,maven-wagon-provider-api)
349 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
350 ("java-plexus-classworld" ,java-plexus-classworlds)
351 ("java-plexus-plexus-util" ,java-plexus-utils)
352 ("java-slf4j-api" ,java-slf4j-api)
353 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
354 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
355 (native-inputs
356 `(("java-junit" ,java-junit)
357 ("java-hamcrest-core" ,java-hamcrest-core)
358 ("maven-resolver-test-util" ,maven-resolver-test-util)
359 ("java-guava" ,java-guava)
360 ("java-cglib" ,java-cglib)
361 ("java-asm" ,java-asm)
362 ("java-aopalliance" ,java-aopalliance)
363 ("java-guice" ,java-guice)))
364 (synopsis "Transport implementation for Maven")
365 (description "This package contains a transport implementation based on
366 Maven Wagon, for use in Maven.")))
367
368 ;; aether is the parent project that was forked into maven-resolver. It used
369 ;; to be used with older versions of Maven, and is still required for some
370 ;; plugins and their dependencies. This version is required for the plugins,
371 ;; even though there are newer versions of this project.
372 (define-public java-sonatype-aether-api
373 (package
374 (name "java-sonatype-aether-api")
375 (version "1.7")
376 (source (origin
377 (method git-fetch)
378 (uri (git-reference
379 (url "https://github.com/sonatype/sonatype-aether")
380 (commit (string-append "aether-" version))))
381 (file-name (git-file-name name version))
382 (sha256
383 (base32
384 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
385 (build-system ant-build-system)
386 (arguments
387 `(#:jar-name "aether-api.jar"
388 #:source-dir "aether-api/src/main/java"
389 #:test-dir "aether-api/src/test"
390 #:phases
391 (modify-phases %standard-phases
392 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
393 (replace 'install (install-from-pom "aether-api/pom.xml")))))
394 (propagated-inputs
395 `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-6)))
396 (native-inputs `(("java-junit" ,java-junit)))
397 (home-page "https://github.com/sonatype/sonatype-aether")
398 (synopsis "Maven repository system API")
399 (description "This package contains the API for the maven repository system.")
400 (license license:asl2.0)))
401
402 (define-public java-sonatype-aether-spi
403 (package
404 (inherit java-sonatype-aether-api)
405 (name "java-sonatype-aether-spi")
406 (arguments
407 `(#:jar-name "aether-spi.jar"
408 #:source-dir "aether-spi/src/main/java"
409 #:tests? #f; no tests
410 #:phases
411 (modify-phases %standard-phases
412 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
413 (propagated-inputs
414 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
415 (synopsis "Maven repository system SPI")
416 (description "This package contains the service provider interface (SPI)
417 for repository system implementations and repository connectors.")))
418
419 (define-public java-sonatype-aether-test-util
420 (package
421 (inherit java-sonatype-aether-api)
422 (name "java-sonatype-aether-test-util")
423 (arguments
424 `(#:jar-name "java-sonatype-aether-test-util.jar"
425 #:source-dir "aether-test-util/src/main/java"
426 #:test-dir "aether-test-util/src/test"))
427 (inputs
428 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
429 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)))
430 (synopsis "Utility classes for testing the maven repository system")
431 (description "This package contains a collection of utility classes to
432 ease testing of the repository system.")))
433
434 (define-public java-sonatype-aether-util
435 (package
436 (inherit java-sonatype-aether-api)
437 (name "java-sonatype-aether-util")
438 (arguments
439 `(#:jar-name "aether-util.jar"
440 #:source-dir "aether-util/src/main/java"
441 #:test-dir "aether-util/src/test"
442 #:phases
443 (modify-phases %standard-phases
444 (replace 'install (install-from-pom "aether-util/pom.xml")))))
445 (propagated-inputs
446 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
447 (native-inputs
448 `(("java-junit" ,java-junit)
449 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))
450 (synopsis "Utility classes for the maven repository system")
451 (description "This package contains a collection of utility classes to
452 ease usage of the repository system.")))
453
454 (define-public java-sonatype-aether-impl
455 (package
456 (inherit java-sonatype-aether-api)
457 (name "java-sonatype-aether-impl")
458 (arguments
459 `(#:jar-name "aether-impl.jar"
460 #:source-dir "aether-impl/src/main/java"
461 #:test-dir "aether-impl/src/test"
462 #:phases
463 (modify-phases %standard-phases
464 (add-before 'install 'fix-pom
465 (lambda _
466 (substitute* "aether-impl/pom.xml"
467 (("org.sonatype.sisu") "org.codehaus.plexus")
468 (("sisu-inject-plexus") "plexus-container-default"))
469 #t))
470 (add-after 'build 'generate-metadata
471 (lambda _
472 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
473 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
474 "--source" "src/main/java"
475 "--output" "build/classes/META-INF/plexus/components.xml"
476 "--classes" "build/classes"
477 "--descriptors" "build/classes/META-INF")
478 #t))
479 (add-after 'generate-metadata 'rebuild
480 (lambda _
481 (invoke "ant" "jar")
482 #t))
483 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
484 (propagated-inputs
485 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
486 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
487 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
488 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
489 ("java-plexus-container-default" ,java-plexus-container-default)
490 ("java-slf4j-api" ,java-slf4j-api)))
491 (native-inputs
492 `(("java-junit" ,java-junit)
493 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
494 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))))
495
496 ;; Again, this old version is required by some maven plugins
497 (define-public java-eclipse-aether-api
498 (package
499 (name "java-eclipse-aether-api")
500 (version "1.0.2")
501 (source (origin
502 (method git-fetch)
503 (uri (git-reference
504 (url "https://github.com/eclipse/aether-core")
505 (commit "aether-1.0.2.v20150114")))
506 (file-name (git-file-name name version))
507 (sha256
508 (base32
509 "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
510 (build-system ant-build-system)
511 (arguments
512 `(#:jar-name "aether-api.jar"
513 #:source-dir "aether-api/src/main/java"
514 #:test-dir "aether-api/src/test"
515 #:phases
516 (modify-phases %standard-phases
517 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
518 (replace 'install (install-from-pom "aether-api/pom.xml")))))
519 (native-inputs `(("java-junit" ,java-junit)))
520 (home-page "https://github.com/sonatype/sonatype-aether")
521 (synopsis "Maven repository system API")
522 (description "This package contains the API for the maven repository system.")
523 (license license:asl2.0)))
524
525 (define-public java-eclipse-aether-spi
526 (package
527 (inherit java-eclipse-aether-api)
528 (name "java-eclipse-aether-spi")
529 (arguments
530 `(#:jar-name "aether-spi.jar"
531 #:source-dir "aether-spi/src/main/java"
532 #:test-dir "aether-spi/src/test"
533 #:phases
534 (modify-phases %standard-phases
535 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
536 (propagated-inputs
537 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
538 (synopsis "Maven repository system SPI")
539 (description "This package contains the service provider interface (SPI)
540 for repository system implementations and repository connectors.")))
541
542 (define-public java-eclipse-aether-test-util
543 (package
544 (inherit java-eclipse-aether-api)
545 (name "java-eclipse-aether-test-util")
546 (arguments
547 `(#:jar-name "aether-test-util.jar"
548 #:source-dir "aether-test-util/src/main/java"
549 #:test-dir "aether-test-util/src/test"
550 #:phases
551 (modify-phases %standard-phases
552 (replace 'install (install-from-pom "aether-util/pom.xml")))))
553 (propagated-inputs
554 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
555 ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)))
556 (synopsis "Utility classes for testing the maven repository system")
557 (description "This package contains a collection of utility classes to
558 ease testing of the repository system.")))
559
560 (define-public java-eclipse-aether-util
561 (package
562 (inherit java-eclipse-aether-api)
563 (name "java-eclipse-aether-util")
564 (arguments
565 `(#:jar-name "aether-util.jar"
566 #:source-dir "aether-util/src/main/java"
567 #:test-dir "aether-util/src/test"
568 #:phases
569 (modify-phases %standard-phases
570 (replace 'install (install-from-pom "aether-util/pom.xml")))))
571 (propagated-inputs
572 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
573 (native-inputs
574 `(("java-eclipse-aether-test-util" ,java-eclipse-aether-test-util)
575 ("java-junit" ,java-junit)))
576 (synopsis "Utility classes for the maven repository system")
577 (description "This package contains a collection of utility classes to
578 ease usage of the repository system.")))
579
580 (define-public java-eclipse-aether-impl
581 (package
582 (inherit java-eclipse-aether-api)
583 (name "java-eclipse-aether-impl")
584 (arguments
585 `(#:jar-name "aether-impl.jar"
586 #:source-dir "aether-impl/src/main/java"
587 #:test-dir "aether-impl/src/test"
588 #:phases
589 (modify-phases %standard-phases
590 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
591 (propagated-inputs
592 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
593 ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)
594 ("java-eclipse-aether-util" ,java-eclipse-aether-util)
595 ("java-javax-inject" ,java-javax-inject)
596 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
597 ("java-guice" ,java-guice)
598 ("java-slf4j-api" ,java-slf4j-api)))
599 (native-inputs
600 `(("java-eclipse-aether-test-util" ,java-eclipse-aether-test-util)
601 ("java-junit" ,java-junit)))))
602
603 (define-public maven-shared-utils
604 (package
605 (name "maven-shared-utils")
606 (version "3.2.1")
607 (source (origin
608 (method url-fetch)
609 (uri (string-append "mirror://apache/maven/shared/"
610 "maven-shared-utils-" version "-source-release.zip"))
611 (sha256
612 (base32
613 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
614 (build-system ant-build-system)
615 (arguments
616 `(#:jar-name "maven-shared-utils.jar"
617 #:source-dir "src/main/java"
618 #:phases
619 (modify-phases %standard-phases
620 (add-before 'build 'fix-/bin/sh-invocation
621 (lambda _
622 (substitute* (find-files "src" ".*.java$")
623 (("/bin/sh") (which "sh")))
624 #t))
625 (add-before 'check 'remove-cyclic-dep
626 (lambda _
627 (delete-file
628 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
629 #t))
630 (replace 'install
631 (install-from-pom "pom.xml")))))
632 (propagated-inputs
633 `(("java-jansi" ,java-jansi)
634 ("java-commons-io" ,java-commons-io)
635 ("java-jsr305" ,java-jsr305)
636 ("java-plexus-container-default" ,java-plexus-container-default)
637 ("maven-parent-pom-30" ,maven-parent-pom-30)))
638 (native-inputs
639 `(("unzip" ,unzip)
640 ("java-junit" ,java-junit)
641 ("java-hamcrest-core" ,java-hamcrest-core)
642 ("java-commons-lang3" ,java-commons-lang3)))
643 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
644 (synopsis "Plexus-util replacement for maven")
645 (description "This project aims to be a functional replacement for
646 plexus-utils in Maven. It is not a 100% API compatible replacement but a
647 replacement with improvements.")
648 (license license:asl2.0)))
649
650 (define-public maven-plugin-annotations
651 (package
652 (name "maven-plugin-annotations")
653 (version "3.5")
654 (source (origin
655 (method url-fetch)
656 (uri (string-append "mirror://apache/maven/"
657 "plugin-tools/maven-plugin-tools-" version
658 "-source-release.zip"))
659 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
660 (build-system ant-build-system)
661 (arguments
662 `(#:jar-name "maven-plugin-annotations.jar"
663 #:source-dir "maven-plugin-annotations/src/main/java"
664 #:tests? #f
665 #:phases
666 (modify-phases %standard-phases
667 (replace 'install
668 (install-from-pom "maven-plugin-annotations/pom.xml")))))
669 (propagated-inputs
670 `(("maven-artifact" ,maven-artifact)
671 ("maven-plugin-tools-parent-pom" ,maven-plugin-tools-parent-pom)))
672 (native-inputs
673 `(("unzip" ,unzip)))
674 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
675 (synopsis "Java 5 annotations to use in Mojos")
676 (description "This package contains Java 5 annotations for use in Mojos.")
677 (license license:asl2.0)))
678
679 (define maven-plugin-tools-parent-pom
680 (package
681 (inherit maven-plugin-annotations)
682 (name "maven-plugin-tools-parent-pom")
683 (arguments
684 `(#:tests? #f
685 #:phases
686 (modify-phases %standard-phases
687 (delete 'configure)
688 (delete 'build)
689 (replace 'install
690 (install-pom-file "pom.xml")))))
691 (propagated-inputs '())))
692
693 (define-public maven-wagon-provider-api
694 (package
695 (name "maven-wagon-provider-api")
696 (version "3.3.4")
697 (source (origin
698 (method url-fetch)
699 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
700 "wagon-" version "-source-release.zip"))
701 (sha256
702 (base32
703 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
704 (build-system ant-build-system)
705 (arguments
706 `(#:jar-name "maven-wagon-provider-api.jar"
707 #:source-dir "wagon-provider-api/src/main/java"
708 #:test-dir "wagon-provider-api/src/test"
709 #:phases
710 (modify-phases %standard-phases
711 (replace 'install
712 (install-from-pom "wagon-provider-api/pom.xml")))))
713 (propagated-inputs
714 `(("java-plexus-utils" ,java-plexus-utils)
715 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
716 (native-inputs
717 `(("unzip" ,unzip)
718 ("java-junit" ,java-junit)
719 ("java-easymock" ,java-easymock)))
720 (home-page "https://maven.apache.org/wagon")
721 (synopsis "Transport abstraction for Maven")
722 (description "Maven Wagon is a transport abstraction that is used in Maven's
723 artifact and repository handling code.")
724 (license license:asl2.0)))
725
726 (define maven-wagon-parent-pom
727 (package
728 (inherit maven-wagon-provider-api)
729 (arguments
730 `(#:tests? #f
731 #:phases
732 (modify-phases %standard-phases
733 (delete 'configure)
734 (delete 'build)
735 (replace 'install
736 (install-pom-file "pom.xml")))))
737 (propagated-inputs
738 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
739 (native-inputs
740 `(("unzip" ,unzip)))))
741
742 (define-public maven-wagon-provider-test
743 (package
744 (inherit maven-wagon-provider-api)
745 (name "maven-wagon-provider-test")
746 (arguments
747 `(#:jar-name "maven-wagon-provider-test.jar"
748 #:source-dir "wagon-provider-test/src/main/java"
749 #:tests? #f; no tests
750 #:jdk ,icedtea-8))
751 (inputs
752 `(("java-plexus-utils" ,java-plexus-utils)
753 ("java-plexus-container-default" ,java-plexus-container-default)
754 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
755 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
756 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
757 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
758 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
759 ("java-slf4j-api" ,java-slf4j-api)
760 ("java-javaee-servletapi" ,java-javaee-servletapi)
761 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
762 (synopsis "Test classes from maven-wagon")
763 (description "Maven Wagon is a transport abstraction that is used in Maven's
764 artifact and repository handling code. This package contains common test
765 classes used in multiple maven-wagon components.")))
766
767 (define-public maven-wagon-file
768 (package
769 (inherit maven-wagon-provider-api)
770 (name "maven-wagon-file")
771 (arguments
772 `(#:jar-name "maven-wagon-file.jar"
773 #:source-dir "wagon-providers/wagon-file/src/main/java"
774 #:test-dir "wagon-providers/wagon-file/src/test"
775 #:jdk ,icedtea-8
776 #:phases
777 (modify-phases %standard-phases
778 (add-before 'check 'fix-paths
779 (lambda _
780 ;; Tests assume they are run by maven, which copies test resources
781 ;; to target. Our ant-build-system does the same, but with the
782 ;; build directory.
783 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
784 (("target") "build"))
785 #t))
786 (add-after 'build 'generate-metadata
787 (lambda _
788 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
789 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
790 "--source" "wagon-providers/wagon-file/src/main/java"
791 "--output" "build/classes/META-INF/plexus/components.xml"
792 "--classes" "build/classes"
793 "--descriptors" "build/classes/META-INF")
794 #t))
795 (add-after 'generate-metadata 'rebuild
796 (lambda _
797 (invoke "ant" "jar")
798 #t)))))
799 (inputs
800 `(("java-plexus-utils" ,java-plexus-utils)
801 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
802 (native-inputs
803 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
804 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
805 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
806 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
807 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
808 ("java-plexus-classworlds" ,java-plexus-classworlds)
809 ("java-guava" ,java-guava)
810 ("java-guice" ,java-guice)
811 ("java-javax-inject" ,java-javax-inject)
812 ("java-cglib" ,java-cglib)
813 ("java-slf4j-api" ,java-slf4j-api)
814 ("java-plexus-utils" ,java-plexus-utils)
815 ("java-plexus-cli" ,java-plexus-cli)
816 ("maven-plugin-api" ,maven-plugin-api)
817 ("maven-plugin-annotations" ,maven-plugin-annotations)
818 ("maven-core" ,maven-core)
819 ("maven-model" ,maven-model)
820 ("java-commons-cli" ,java-commons-cli)
821 ("java-qdox" ,java-qdox)
822 ("java-jdom2" ,java-jdom2)
823 ("java-asm" ,java-asm)
824 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
825 ,@(package-native-inputs maven-wagon-provider-api)))
826 (synopsis "Wagon provider that gets and puts artifacts using the file system")
827 (description "Maven Wagon is a transport abstraction that is used in Maven's
828 artifact and repository handling code. It uses providers, that are tools to
829 manage artifacts and deployment. This package contains the file provider which
830 gets and puts artifacts using the file system.")))
831
832 (define-public maven-wagon-tck-http
833 (package
834 (inherit maven-wagon-provider-api)
835 (name "maven-wagon-tck-http")
836 (arguments
837 `(#:jar-name "maven-wagon-tck-http.jar"
838 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
839 #:tests? #f; no tests
840 #:jdk ,icedtea-8))
841 (inputs
842 `(("java-plexus-util" ,java-plexus-utils)
843 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
844 ("java-javaee-servletapi" ,java-javaee-servletapi)
845 ("java-slf4j-api" ,java-slf4j-api)
846 ("java-commons-codec" ,java-commons-codec)
847 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
848 ("java-plexus-classworlds" ,java-plexus-classworlds)
849 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
850 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
851 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
852 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
853 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
854 (synopsis "Wagon HTTP Test Compatibility Kit")
855 (description "Maven Wagon is a transport abstraction that is used in Maven's
856 artifact and repository handling code. This package contains the HTTP
857 Test Compatibility Kit.")))
858
859 (define-public maven-wagon-http-shared
860 (package
861 (inherit maven-wagon-provider-api)
862 (name "maven-wagon-http-shared")
863 (arguments
864 `(#:jar-name "maven-wagon-http-shared.jar"
865 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
866 #:test-dir "wagon-providers/wagon-http-shared/src/test"
867 #:jdk ,icedtea-8
868 #:phases
869 (modify-phases %standard-phases
870 (add-after 'build 'generate-metadata
871 (lambda _
872 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
873 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
874 "--source" "wagon-providers/wagon-http-shared/src/main/java"
875 "--output" "build/classes/META-INF/plexus/components.xml"
876 "--classes" "build/classes"
877 "--descriptors" "build/classes/META-INF")
878 #t))
879 (add-after 'generate-metadata 'rebuild
880 (lambda _
881 (invoke "ant" "jar")
882 #t)))))
883 (inputs
884 `(("java-plexus-utils" ,java-plexus-utils)
885 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
886 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
887 ("java-commons-io" ,java-commons-io)
888 ("java-jsoup" ,java-jsoup)
889 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
890 (native-inputs
891 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
892 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
893 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
894 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
895 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
896 ("java-plexus-classworlds" ,java-plexus-classworlds)
897 ("java-guava" ,java-guava)
898 ("java-guice" ,java-guice)
899 ("java-javax-inject" ,java-javax-inject)
900 ("java-cglib" ,java-cglib)
901 ("java-slf4j-api" ,java-slf4j-api)
902 ("java-plexus-utils" ,java-plexus-utils)
903 ("java-plexus-cli" ,java-plexus-cli)
904 ("maven-plugin-api" ,maven-plugin-api)
905 ("maven-plugin-annotations" ,maven-plugin-annotations)
906 ("maven-core" ,maven-core)
907 ("maven-model" ,maven-model)
908 ("java-commons-cli" ,java-commons-cli)
909 ("java-qdox" ,java-qdox)
910 ("java-jdom2" ,java-jdom2)
911 ("java-asm" ,java-asm)
912 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
913 ,@(package-native-inputs maven-wagon-provider-api)))
914 (synopsis "Shared Library for wagon providers supporting HTTP.")
915 (description "Maven Wagon is a transport abstraction that is used in Maven's
916 artifact and repository handling code. It uses providers, that are tools to
917 manage artifacts and deployment. This package contains a shared library for
918 wagon providers supporting HTTP.")))
919
920 (define-public maven-wagon-http
921 (package
922 (inherit maven-wagon-provider-api)
923 (name "maven-wagon-http")
924 (arguments
925 `(#:jar-name "maven-wagon-http.jar"
926 #:source-dir "wagon-providers/wagon-http/src/main/java"
927 #:test-dir "wagon-providers/wagon-http/src/test"
928 #:test-exclude (list
929 "**/Abstract*.java"
930 ;; FIXME: javax.net.ssl.SSLHandshakeException:
931 ;; sun.security.validator.ValidatorException:
932 ;; PKIX path building failed:
933 ;; sun.security.provider.certpath.SunCertPathBuilderException:
934 ;; unable to find valid certification path to requested target
935 "**/HttpsWagonPreemptiveTest.java"
936 "**/HttpsWagonTest.java"
937 ;; Injection errors
938 "**/TckTest.java")
939 #:jdk ,icedtea-8
940 #:phases
941 (modify-phases %standard-phases
942 (add-before 'build 'copy-resources
943 (lambda _
944 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
945 "build/classes/META-INF/plexus")
946 #t))
947 (add-before 'check 'fix-resource-path
948 (lambda _
949 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
950 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
951 (("src/test") "wagon-providers/wagon-http/src/test"))
952 #t)))))
953 (inputs
954 `(("java-plexus-utils" ,java-plexus-utils)
955 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
956 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
957 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
958 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
959 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
960 (native-inputs
961 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
962 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
963 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
964 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
965 ("java-plexus-container-default" ,java-plexus-container-default)
966 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
967 ("java-plexus-classworlds" ,java-plexus-classworlds)
968 ("java-guava" ,java-guava)
969 ("java-guice" ,java-guice)
970 ("java-inject" ,java-javax-inject)
971 ("java-cglib" ,java-cglib)
972 ("java-slf4j-api" ,java-slf4j-api)
973 ("java-plexus-utils" ,java-plexus-utils)
974 ("java-plexus-cli" ,java-plexus-cli)
975 ("maven-plugin-api" ,maven-plugin-api)
976 ("maven-plugin-annotations" ,maven-plugin-annotations)
977 ("maven-core" ,maven-core)
978 ("maven-model" ,maven-model)
979 ("java-commons-cli" ,java-commons-cli)
980 ("java-qdox" ,java-qdox)
981 ("java-jdom2" ,java-jdom2)
982 ("java-asm" ,java-asm)
983 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
984 ("java-javaee-servletapi" ,java-javaee-servletapi)
985 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
986 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
987 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
988 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
989 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
990 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
991 ("java-hamcrest-core" ,java-hamcrest-core)
992 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
993 ("java-commons-codec" ,java-commons-codec)
994 ("java-commons-io" ,java-commons-io)
995 ("java-jsoup" ,java-jsoup)
996 ("java-slf4j-simple" ,java-slf4j-simple)
997 ,@(package-native-inputs maven-wagon-provider-api)))
998 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
999 (description "Maven Wagon is a transport abstraction that is used in Maven's
1000 artifact and repository handling code. It uses providers, that are tools to
1001 manage artifacts and deployment. This package contains a Wagon provider that
1002 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
1003
1004 (define maven-pom
1005 (package
1006 (name "maven-pom")
1007 (version "3.6.1")
1008 (source (origin
1009 (method url-fetch)
1010 (uri (string-append "mirror://apache/maven/"
1011 "maven-3/" version "/source/"
1012 "apache-maven-" version "-src.tar.gz"))
1013 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
1014 (modules '((guix build utils)))
1015 (snippet
1016 '(begin
1017 (for-each delete-file (find-files "." "\\.jar$"))
1018 #t))
1019 (patches
1020 (search-patches "maven-generate-component-xml.patch"
1021 "maven-generate-javax-inject-named.patch"))))
1022 (build-system ant-build-system)
1023 (arguments
1024 `(#:tests? #f
1025 #:phases
1026 (modify-phases %standard-phases
1027 (delete 'configure)
1028 (delete 'build)
1029 (add-before 'install 'fix-dependencies
1030 (lambda _
1031 (substitute* "pom.xml"
1032 (("classWorldsVersion>.*")
1033 (string-append
1034 "classWorldsVersion>"
1035 ,(package-version java-plexus-classworlds)
1036 "</classWorldsVersion>\n"))
1037 (("commonsCliVersion>.*")
1038 (string-append
1039 "commonsCliVersion>"
1040 ,(package-version java-commons-cli)
1041 "</commonsCliVersion>\n"))
1042 (("commonsLangVersion>.*")
1043 (string-append
1044 "commonsLangVersion>"
1045 ,(package-version java-commons-lang3)
1046 "</commonsLangVersion>\n"))
1047 (("plexusUtilsVersion>.*")
1048 (string-append
1049 "plexusUtilsVersion>"
1050 ,(package-version java-plexus-utils)
1051 "</plexusUtilsVersion>\n"))
1052 (("plexusInterpolationVersion>.*")
1053 (string-append
1054 "plexusInterpolationVersion>"
1055 ,(package-version java-plexus-interpolation)
1056 "</plexusInterpolationVersion>\n"))
1057 (("guiceVersion>.*")
1058 (string-append
1059 "guiceVersion>"
1060 ,(package-version java-guice)
1061 "</guiceVersion>\n"))
1062 (("sisuInjectVersion>.*")
1063 (string-append
1064 "sisuInjectVersion>"
1065 ,(package-version java-eclipse-sisu-inject)
1066 "</sisuInjectVersion>\n"))
1067 (("securityDispatcherVersion>.*")
1068 (string-append
1069 "securityDispatcherVersion>"
1070 ,(package-version java-plexus-sec-dispatcher)
1071 "</securityDispatcherVersion>\n"))
1072 (("cipherVersion>.*")
1073 (string-append
1074 "cipherVersion>"
1075 ,(package-version java-plexus-cipher)
1076 "</cipherVersion>\n"))
1077 (("slf4jVersion>.*")
1078 (string-append
1079 "slf4jVersion>"
1080 ,(package-version java-slf4j-api)
1081 "</slf4jVersion>\n"))
1082 (("<classifier>no_aop</classifier>") ""))
1083 #t))
1084 (replace 'install
1085 (install-pom-file "pom.xml")))))
1086 (propagated-inputs
1087 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
1088 (home-page "https://maven.apache.org/")
1089 (synopsis "Build system")
1090 (description "Apache Maven is a software project management and comprehension
1091 tool. This package contains the Maven pom file, used by all maven components.")
1092 (license license:asl2.0)))
1093
1094 (define-public maven-artifact
1095 (package
1096 (inherit maven-pom)
1097 (name "maven-artifact")
1098 (arguments
1099 `(#:jar-name "maven-artifact.jar"
1100 #:source-dir "maven-artifact/src/main/java"
1101 #:test-dir "maven-artifact/src/test"
1102 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1103 #:phases
1104 (modify-phases %standard-phases
1105 (replace 'install
1106 (install-from-pom "maven-artifact/pom.xml")))))
1107 (propagated-inputs
1108 `(("java-plexus-utils" ,java-plexus-utils)
1109 ("java-commons-lang3" ,java-commons-lang3)
1110 ("maven-pom" ,maven-pom)))
1111 (native-inputs
1112 `(("java-junit" ,java-junit)))
1113 (description "Apache Maven is a software project management and comprehension
1114 tool. This package contains the Maven Artifact classes, providing the
1115 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1116 jar file is executable and provides a little tool to display how Maven parses
1117 and compares versions:")))
1118
1119 (define-public maven-model
1120 (package
1121 (inherit maven-artifact)
1122 (name "maven-model")
1123 (arguments
1124 `(#:jar-name "maven-model.jar"
1125 #:source-dir "maven-model/src/main/java"
1126 #:test-dir "maven-model/src/test"
1127 #:phases
1128 (modify-phases %standard-phases
1129 (add-before 'build 'generate-models
1130 (lambda* (#:key inputs #:allow-other-keys)
1131 (define (modello-single-mode file version mode)
1132 (invoke "java" "org.codehaus.modello.ModelloCli"
1133 file mode "maven-model/src/main/java" version
1134 "false" "true"))
1135 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1136 (modello-single-mode file "4.0.0" "java")
1137 (modello-single-mode file "4.0.0" "xpp3-reader")
1138 (modello-single-mode file "4.0.0" "xpp3-writer")
1139 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
1140 #t))
1141 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1142 (propagated-inputs
1143 `(("java-commons-lang3" ,java-commons-lang3)
1144 ("java-plexus-utils" ,java-plexus-utils)
1145 ("maven-pom" ,maven-pom)))
1146 (native-inputs
1147 `(("java-modello-core" ,java-modello-core)
1148 ;; for modello:
1149 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1150 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1151 ("java-guice" ,java-guice)
1152 ("java-cglib" ,java-cglib)
1153 ("java-asm" ,java-asm)
1154 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1155 ("java-javax-inject" ,java-javax-inject)
1156 ("java-plexus-classworlds" ,java-plexus-classworlds)
1157 ("java-guava" ,java-guava)
1158 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1159 ("java-sisu-build-api" ,java-sisu-build-api)
1160 ;; modello plugins:
1161 ("java-modello-plugins-java" ,java-modello-plugins-java)
1162 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1163 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1164 ;; for tests
1165 ("java-junit" ,java-junit)))
1166 (description "Apache Maven is a software project management and comprehension
1167 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1168 so really just plain Java objects.")))
1169
1170 (define-public maven-builder-support
1171 (package
1172 (inherit maven-artifact)
1173 (name "maven-builder-support")
1174 (arguments
1175 `(#:jar-name "maven-builder-support.jar"
1176 #:source-dir "maven-builder-support/src/main/java"
1177 #:jdk ,icedtea-8
1178 #:test-dir "maven-builder-support/src/test"
1179 #:phases
1180 (modify-phases %standard-phases
1181 (add-before 'check 'fix-paths
1182 (lambda _
1183 (with-directory-excursion "maven-builder-support/src/test/java"
1184 (substitute*
1185 '("org/apache/maven/building/FileSourceTest.java"
1186 "org/apache/maven/building/UrlSourceTest.java")
1187 (("target/test-classes") "maven-builder-support/src/test/resources")))
1188 #t))
1189 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1190 (propagated-inputs
1191 `(("maven-pom" ,maven-pom)))
1192 (native-inputs
1193 `(("java-junit" ,java-junit)))
1194 (description "Apache Maven is a software project management and comprehension
1195 tool. This package contains a support library for descriptor builders (model,
1196 setting, toolchains)")))
1197
1198 (define-public maven-settings
1199 (package
1200 (inherit maven-artifact)
1201 (name "maven-settings")
1202 (arguments
1203 `(#:jar-name "maven-settings.jar"
1204 #:source-dir "maven-settings/src/main/java"
1205 #:tests? #f; no tests
1206 #:phases
1207 (modify-phases %standard-phases
1208 (add-before 'build 'generate-models
1209 (lambda* (#:key inputs #:allow-other-keys)
1210 (define (modello-single-mode file version mode)
1211 (invoke "java" "org.codehaus.modello.ModelloCli"
1212 file mode "maven-settings/src/main/java" version
1213 "false" "true"))
1214 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1215 (modello-single-mode file "1.1.0" "java")
1216 (modello-single-mode file "1.1.0" "xpp3-reader")
1217 (modello-single-mode file "1.1.0" "xpp3-writer"))
1218 #t))
1219 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1220 (propagated-inputs
1221 `(("java-plexus-utils" ,java-plexus-utils)
1222 ("maven-pom" ,maven-pom)))
1223 (native-inputs
1224 `(("java-modello-core" ,java-modello-core)
1225 ;; for modello:
1226 ;("container" ,java-plexus-container-default)
1227 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1228 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1229 ("java-guice" ,java-guice)
1230 ("java-cglib" ,java-cglib)
1231 ("java-asm" ,java-asm)
1232 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1233 ("java-javax-inject" ,java-javax-inject)
1234 ("java-plexus-classworlds" ,java-plexus-classworlds)
1235 ("java-plexus-utils" ,java-plexus-utils)
1236 ("java-guava" ,java-guava)
1237 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1238 ("java-sisu-build-api" ,java-sisu-build-api)
1239 ;; modello plugins:
1240 ("java-modello-plugins-java" ,java-modello-plugins-java)
1241 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1242 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1243 (description "Apache Maven is a software project management and comprehension
1244 tool. This package contains strictly the model for Maven settings, that is
1245 simply plain java objects.")))
1246
1247 (define-public maven-settings-builder
1248 (package
1249 (inherit maven-artifact)
1250 (name "maven-settings-builder")
1251 (arguments
1252 `(#:jar-name "maven-settings-builder.jar"
1253 #:source-dir "maven-settings-builder/src/main/java"
1254 #:jdk ,icedtea-8
1255 #:test-dir "maven-settings-builder/src/test"
1256 #:phases
1257 (modify-phases %standard-phases
1258 (add-before 'build 'generate-components.xml
1259 (lambda _
1260 (mkdir-p "build/classes/META-INF/plexus")
1261 (chmod "components.sh" #o755)
1262 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1263 "build/classes/META-INF/plexus/components.xml")
1264 #t))
1265 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1266 (propagated-inputs
1267 `(("java-plexus-utils" ,java-plexus-utils)
1268 ("java-plexus-interpolation" ,java-plexus-interpolation)
1269 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1270 ("maven-builder-support" ,maven-builder-support)
1271 ("maven-settings" ,maven-settings)
1272 ("maven-pom" ,maven-pom)))
1273 (native-inputs
1274 `(("java-junit" ,java-junit)
1275 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
1276 (description "Apache Maven is a software project management and comprehension
1277 tool. This package contains the effective model builder, with profile activation,
1278 inheritance, interpolation, @dots{}")))
1279
1280 (define-public maven-model-builder
1281 (package
1282 (inherit maven-artifact)
1283 (name "maven-model-builder")
1284 (arguments
1285 `(#:jar-name "maven-model-builder.jar"
1286 #:source-dir "maven-model-builder/src/main/java"
1287 #:jdk ,icedtea-8
1288 #:test-dir "maven-model-builder/src/test"
1289 #:phases
1290 (modify-phases %standard-phases
1291 (add-before 'build 'copy-resources
1292 (lambda _
1293 (copy-recursively "maven-model-builder/src/main/resources"
1294 "build/classes")
1295 #t))
1296 (add-before 'build 'generate-components.xml
1297 (lambda _
1298 (mkdir-p "build/classes/META-INF/plexus")
1299 (chmod "components.sh" #o755)
1300 (invoke "./components.sh" "maven-model-builder/src/main/java"
1301 "build/classes/META-INF/plexus/components.xml")
1302 #t))
1303 (add-before 'check 'fix-paths
1304 (lambda _
1305 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1306 (("src/test") "maven-model-builder/src/test"))
1307 #t))
1308 (replace 'install
1309 (install-from-pom "maven-model-builder/pom.xml")))))
1310 (propagated-inputs
1311 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1312 ("java-plexus-utils" ,java-plexus-utils)
1313 ("maven-artifact" ,maven-artifact)
1314 ("maven-builder-support" ,maven-builder-support)
1315 ("maven-model" ,maven-model)
1316 ("maven-pom" ,maven-pom)))
1317 (native-inputs
1318 `(("java-junit" ,java-junit)
1319 ("java-guava" ,java-guava)
1320 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1321 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1322 ("guice" ,java-guice)
1323 ("java-cglib" ,java-cglib)
1324 ("java-asm" ,java-asm)
1325 ("sisu-inject" ,java-eclipse-sisu-inject)
1326 ("javax-inject" ,java-javax-inject)
1327 ("java-xmlunit" ,java-xmlunit)
1328 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1329 ("xbean" ,java-geronimo-xbean-reflect)
1330 ("classworlds" ,java-plexus-classworlds)))
1331 (description "Apache Maven is a software project management and comprehension
1332 tool. This package contains the effective model builder, with profile activation,
1333 inheritance, interpolation, @dots{}")))
1334
1335 (define-public maven-repository-metadata
1336 (package
1337 (inherit maven-artifact)
1338 (name "maven-repository-metadata")
1339 (arguments
1340 `(#:jar-name "maven-repository-metadata.jar"
1341 #:source-dir "maven-repository-metadata/src/main/java"
1342 #:jdk ,icedtea-8
1343 #:tests? #f; no tests
1344 #:phases
1345 (modify-phases %standard-phases
1346 (add-before 'build 'generate-models
1347 (lambda* (#:key inputs #:allow-other-keys)
1348 (define (modello-single-mode file version mode)
1349 (invoke "java" "org.codehaus.modello.ModelloCli"
1350 file mode "maven-repository-metadata/src/main/java" version
1351 "false" "true"))
1352 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1353 (modello-single-mode file "1.1.0" "java")
1354 (modello-single-mode file "1.1.0" "xpp3-reader")
1355 (modello-single-mode file "1.1.0" "xpp3-writer"))
1356 #t))
1357 (replace 'install
1358 (install-from-pom "maven-repository-metadata/pom.xml")))))
1359 (propagated-inputs
1360 `(("java-plexus-utils" ,java-plexus-utils)
1361 ("maven-pom" ,maven-pom)))
1362 (native-inputs
1363 `(("modello" ,java-modello-core)
1364 ;; for modello:
1365 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1366 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1367 ("java-guice" ,java-guice)
1368 ("java-cglib" ,java-cglib)
1369 ("java-asm" ,java-asm)
1370 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1371 ("java-javax-inject" ,java-javax-inject)
1372 ("java-plexus-utils" ,java-plexus-utils)
1373 ("java-plexus-classworlds" ,java-plexus-classworlds)
1374 ("java-guava" ,java-guava)
1375 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1376 ("java-sisu-build-api" ,java-sisu-build-api)
1377 ;; modello plugins:
1378 ("java-modello-plugins-java" ,java-modello-plugins-java)
1379 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1380 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1381 (description "Apache Maven is a software project management and comprehension
1382 tool. This package contains strictly the model for Maven Repository Metadata,
1383 so really just plain objects.")))
1384
1385 (define-public maven-resolver-provider
1386 (package
1387 (inherit maven-artifact)
1388 (name "maven-resolver-provider")
1389 (arguments
1390 `(#:jar-name "maven-resolver-provider.jar"
1391 #:source-dir "maven-resolver-provider/src/main/java"
1392 #:test-dir "maven-resolver-provider/src/test"
1393 #:jdk ,icedtea-8
1394 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1395 #:phases
1396 (modify-phases %standard-phases
1397 (add-before 'build 'generate-sisu-named
1398 (lambda _
1399 (mkdir-p "build/classes/META-INF/sisu")
1400 (chmod "./sisu.sh" #o755)
1401 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1402 "build/classes/META-INF/sisu/javax.inject.Named")
1403 #t))
1404 (replace 'install
1405 (install-from-pom "maven-resolver-provider/pom.xml")))))
1406 (propagated-inputs
1407 `(("maven-model" ,maven-model)
1408 ("maven-model-builder" ,maven-model-builder)
1409 ("maven-resolver-spi" ,maven-resolver-spi)
1410 ("maven-resolver-api" ,maven-resolver-api)
1411 ("maven-resolver-impl" ,maven-resolver-impl)
1412 ("maven-resolver-util" ,maven-resolver-util)
1413 ("maven-builder-support" ,maven-builder-support)
1414 ("maven-repository-metadata" ,maven-repository-metadata)
1415 ("java-plexus-utils" ,java-plexus-utils)
1416 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1417 ("java-guice" ,java-guice)
1418 ("java-javax-inject" ,java-javax-inject)))))
1419
1420 (define-public maven-plugin-api
1421 (package
1422 (inherit maven-artifact)
1423 (name "maven-plugin-api")
1424 (arguments
1425 `(#:jar-name "maven-plugin-api.jar"
1426 #:source-dir "maven-plugin-api/src/main/java"
1427 #:jdk ,icedtea-8
1428 #:test-dir "maven-plugin-api/src/test"
1429 #:phases
1430 (modify-phases %standard-phases
1431 (add-before 'build 'generate-models
1432 (lambda* (#:key inputs #:allow-other-keys)
1433 (define (modello-single-mode file version mode)
1434 (invoke "java" "org.codehaus.modello.ModelloCli"
1435 file mode "maven-plugin-api/src/main/java" version
1436 "false" "true"))
1437 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1438 (modello-single-mode file "1.0.0" "java")
1439 (modello-single-mode file "1.0.0" "xpp3-reader")
1440 (modello-single-mode file "1.0.0" "xpp3-writer"))
1441 #t))
1442 (replace 'install
1443 (install-from-pom "maven-plugin-api/pom.xml")))))
1444 (propagated-inputs
1445 `(("maven-artifact" ,maven-artifact)
1446 ("maven-model" ,maven-model)
1447 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1448 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1449 ("guice" ,java-guice)
1450 ("java-cglib" ,java-cglib)
1451 ("java-asm" ,java-asm)
1452 ("sisu-inject" ,java-eclipse-sisu-inject)
1453 ("javax-inject" ,java-javax-inject)
1454 ("utils" ,java-plexus-utils)))
1455 (native-inputs
1456 `(("modello" ,java-modello-core)
1457 ;; for modello:
1458 ("classworlds" ,java-plexus-classworlds)
1459 ("guava" ,java-guava)
1460 ("xbean" ,java-geronimo-xbean-reflect)
1461 ("build-api" ,java-sisu-build-api)
1462 ;; modello plugins:
1463 ("java" ,java-modello-plugins-java)
1464 ("xml" ,java-modello-plugins-xml)
1465 ("xpp3" ,java-modello-plugins-xpp3)
1466 ;; for tests
1467 ("java-junit" ,java-junit)))
1468 (description "Apache Maven is a software project management and comprehension
1469 tool. This package contains strictly the API for plugins -- composed of goals
1470 implemented by Mojos -- development.
1471
1472 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1473 generally generated from plugin sources using maven-plugin-plugin.")))
1474
1475 (define maven-core-bootstrap
1476 (package
1477 (inherit maven-artifact)
1478 (name "maven-core")
1479 (arguments
1480 `(#:jar-name "maven-core.jar"
1481 #:source-dir "src/main/java"
1482 #:jdk ,icedtea-8
1483 ;; Tests need maven-compat, which requires maven-core
1484 #:tests? #f
1485 #:phases
1486 (modify-phases %standard-phases
1487 (add-before 'configure 'chdir
1488 (lambda _
1489 ;; Required for generating components.xml in maven-core
1490 (chdir "maven-core")
1491 #t))
1492 (add-before 'build 'copy-resources
1493 (lambda _
1494 (mkdir-p "build/classes/")
1495 (copy-recursively "src/main/resources" "build/classes")
1496 #t))
1497 (add-after 'copy-resources 'fill-properties
1498 (lambda _
1499 ;; This file controls the output of some mvn subcommands, such as
1500 ;; mvn -version.
1501 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1502 (("\\$\\{buildNumber\\}") "guix_build")
1503 (("\\$\\{timestamp\\}") "0")
1504 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1505 (("\\$\\{distributionId\\}") "apache-maven")
1506 (("\\$\\{distributionShortName\\}") "Maven")
1507 (("\\$\\{distributionName\\}") "Apache Maven"))
1508 #t))
1509 (add-before 'build 'generate-sisu-named
1510 (lambda _
1511 (mkdir-p "build/classes/META-INF/sisu")
1512 (chmod "../sisu.sh" #o755)
1513 (invoke "../sisu.sh" "src/main/java"
1514 "build/classes/META-INF/sisu/javax.inject.Named")
1515 #t))
1516 (add-before 'build 'generate-models
1517 (lambda* (#:key inputs #:allow-other-keys)
1518 (define (modello-single-mode file version mode)
1519 (invoke "java" "org.codehaus.modello.ModelloCli"
1520 file mode "src/main/java" version
1521 "false" "true"))
1522 (let ((file "src/main/mdo/toolchains.mdo"))
1523 (modello-single-mode file "1.1.0" "java")
1524 (modello-single-mode file "1.1.0" "xpp3-reader")
1525 (modello-single-mode file "1.1.0" "xpp3-writer"))
1526 #t))
1527 (add-before 'install 'fix-pom
1528 (lambda _
1529 (substitute* "pom.xml"
1530 (("<classifier>no_aop</classifier>") ""))
1531 #t))
1532 (replace 'install
1533 (install-from-pom "pom.xml")))))
1534 (propagated-inputs
1535 `(("maven-artifact" ,maven-artifact)
1536 ("maven-resolver-provider" ,maven-resolver-provider)
1537 ("maven-builder-support" ,maven-builder-support)
1538 ("maven-model" ,maven-model)
1539 ("maven-model-builder" ,maven-model-builder)
1540 ("maven-settings" ,maven-settings)
1541 ("maven-settings-builder" ,maven-settings-builder)
1542 ("maven-plugin-api" ,maven-plugin-api)
1543 ("maven-repository-metadata" ,maven-repository-metadata)
1544 ("maven-shared-utils" ,maven-shared-utils)
1545 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1546 ("java-plexus-utils" ,java-plexus-utils)
1547 ("java-commons-lang3" ,java-commons-lang3)
1548 ("java-guava" ,java-guava)
1549 ("java-guice" ,java-guice)
1550 ("maven-resolver-api" ,maven-resolver-api)
1551 ("maven-resolver-spi" ,maven-resolver-spi)
1552 ("maven-resolver-util" ,maven-resolver-util)
1553 ("maven-resolver-impl" ,maven-resolver-impl)
1554 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1555 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1556 ("java-javax-inject" ,java-javax-inject)
1557 ("java-plexus-classworld" ,java-plexus-classworlds)))
1558 (native-inputs
1559 `(("java-modello-core" ,java-modello-core)
1560 ("java-cglib" ,java-cglib)
1561 ("java-asm" ,java-asm)
1562 ("java-plexus-classworlds" ,java-plexus-classworlds)
1563 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1564 ("java-sisu-build-api" ,java-sisu-build-api)
1565 ("java-modello-plugins-java" ,java-modello-plugins-java)
1566 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1567 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1568 ;; tests
1569 ("java-junit" ,java-junit)
1570 ("java-mockito-1" ,java-mockito-1)
1571 ("java-commons-jxpath" ,java-commons-jxpath)))
1572 (description "Apache Maven is a software project management and comprehension
1573 tool. This package contains the maven core classes managing the whole build
1574 process.")))
1575
1576 (define-public maven-core
1577 (package
1578 (inherit maven-core-bootstrap)
1579 (arguments
1580 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1581 ((#:phases phases)
1582 `(modify-phases ,phases
1583 (add-before 'build 'modify-metainf
1584 (lambda _
1585 (substitute* "build.xml"
1586 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
1587 #t))
1588 (add-before 'build 'add-maven-files
1589 (lambda _
1590 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1591 (copy-file "pom.xml"
1592 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1593 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1594 (lambda _
1595 (format #t "version=~a~%
1596 groupId=org.apache.maven~%
1597 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1598 #t))
1599 (add-after 'build 'generate-metadata
1600 (lambda _
1601 (define (components file)
1602 (let ((sxml (with-input-from-file file
1603 (lambda _ (xml->sxml (current-input-port)
1604 #:trim-whitespace? #t)))))
1605 ;; Select the list of <component>s inside the <component-set>
1606 ;; and <components>.
1607 ((@ (ice-9 match) match) sxml
1608 (('*TOP*
1609 ('*PI* foo ...)
1610 ('component-set
1611 ('components x ...))) x))))
1612 (use-modules (sxml simple))
1613 (delete-file "build/classes/META-INF/plexus/components.xml")
1614 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1615 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1616 "--source" "build/classes/META-INF/plexus"
1617 "--output" "build/classes/META-INF/plexus/components.t.xml"
1618 "--classes" "build/classes"
1619 "--descriptors" "build/classes")
1620 ;; Now we merge all other components from hand-written xml
1621 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1622 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1623 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1624 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1625 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1626 (lambda _
1627 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1628 (sxml->xml
1629 `(component-set
1630 (components
1631 ,@(append generated-xml components-xml
1632 default-bindings-xml
1633 artifact-handlers-xml)))))))
1634 #t))
1635 (add-after 'generate-metadata 'rebuild
1636 (lambda _
1637 (invoke "ant" "jar")
1638 #t))))))
1639 (native-inputs
1640 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1641 ("java-commons-cli" ,java-commons-cli)
1642 ("java-plexus-cli" ,java-plexus-cli)
1643 ("java-jdom2" ,java-jdom2)
1644 ("java-qdox" ,java-qdox)
1645 ("maven-core-boot" ,maven-core-bootstrap)
1646 ,@(package-native-inputs maven-core-bootstrap)))))
1647
1648 (define-public maven-embedder
1649 (package
1650 (inherit maven-artifact)
1651 (name "maven-embedder")
1652 (arguments
1653 `(#:jar-name "maven-embedder.jar"
1654 #:source-dir "maven-embedder/src/main/java"
1655 #:test-dir "maven-embedder/src/test"
1656 #:test-exclude (list "**/MavenCliTest.java")
1657 #:jdk ,icedtea-8
1658 #:phases
1659 (modify-phases %standard-phases
1660 (add-before 'build 'generate-sisu-named
1661 (lambda _
1662 (mkdir-p "build/classes/META-INF/sisu")
1663 (chmod "sisu.sh" #o755)
1664 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1665 "build/classes/META-INF/sisu/javax.inject.Named")
1666 #t))
1667 (add-before 'build 'generate-models
1668 (lambda* (#:key inputs #:allow-other-keys)
1669 (define (modello-single-mode file version mode)
1670 (invoke "java" "org.codehaus.modello.ModelloCli"
1671 file mode "maven-embedder/src/main/java" version
1672 "false" "true"))
1673 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1674 (modello-single-mode file "1.0.0" "java")
1675 (modello-single-mode file "1.0.0" "xpp3-reader")
1676 (modello-single-mode file "1.0.0" "xpp3-writer"))
1677 #t))
1678 (add-before 'check 'fix-test-paths
1679 (lambda _
1680 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1681 (("target/test-classes") "build/test-classes"))
1682 #t))
1683 (add-before 'check 'fix-test-compilation
1684 (lambda _
1685 ;; Tests are in the java/ subdir. Other subdirectories contain
1686 ;; additional test plugins, with duplicate classes, so we can't
1687 ;; compile them. Also, they are meant to be built with maven, to
1688 ;; test its build process.
1689 (substitute* "build.xml"
1690 (("srcdir=\"maven-embedder/src/test\"")
1691 "srcdir=\"maven-embedder/src/test/java\""))
1692 #t))
1693 (replace 'install
1694 (install-from-pom "maven-embedder/pom.xml")))))
1695 (propagated-inputs
1696 `(("maven-core" ,maven-core)
1697 ("maven-artifact" ,maven-artifact)
1698 ("maven-plugin-api" ,maven-plugin-api)
1699 ("maven-builder-support" ,maven-builder-support)
1700 ("maven-model" ,maven-model)
1701 ("maven-model-builder" ,maven-model-builder)
1702 ("maven-settings" ,maven-settings)
1703 ("maven-settings-builder" ,maven-settings-builder)
1704 ("maven-shared-utils" ,maven-shared-utils)
1705 ("java-plexus-classworlds" ,java-plexus-classworlds)
1706 ("java-plexus-util" ,java-plexus-utils)
1707 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1708 ("java-plexus-cipher" ,java-plexus-cipher)
1709 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1710 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1711 ("maven-resolevr-util" ,maven-resolver-util)
1712 ("maven-resolevr-api" ,maven-resolver-api)
1713 ("java-logback-core" ,java-logback-core)
1714 ("java-logback-classic" ,java-logback-classic)
1715 ("java-commons-cli" ,java-commons-cli)
1716 ("java-commons-io" ,java-commons-io)
1717 ("java-commons-lang3" ,java-commons-lang3)
1718 ("java-guava" ,java-guava)
1719 ("java-guice" ,java-guice)
1720 ("java-javax-inject" ,java-javax-inject)
1721 ("java-slf4j-api" ,java-slf4j-api)
1722 ("java-slf4j-simple" ,java-slf4j-simple)
1723 ("java-jsr250" ,java-jsr250)))
1724 (native-inputs
1725 `(("java-modello-core" ,java-modello-core)
1726 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1727 ("java-sisu-build-api" ,java-sisu-build-api)
1728 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1729 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1730 ("java-cglib" ,java-cglib)
1731 ("java-asm" ,java-asm)
1732 ("java-modello-plugins-java" ,java-modello-plugins-java)
1733 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1734 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1735 ;; tests
1736 ("java-junit" ,java-junit)
1737 ("java-objenesis" ,java-objenesis)
1738 ("java-mockito-1" ,java-mockito-1)
1739 ("java-hamcrest-core" ,java-hamcrest-core)))
1740 (description "Apache Maven is a software project management and comprehension
1741 tool. This package contains a Maven embeddable component, with CLI and
1742 logging support.")))
1743
1744 (define-public maven-compat
1745 (package
1746 (inherit maven-artifact)
1747 (name "maven-compat")
1748 (arguments
1749 `(#:jar-name "maven-compat.jar"
1750 #:source-dir "src/main/java"
1751 #:jdk ,icedtea-8
1752 #:test-dir "src/test"
1753 #:phases
1754 (modify-phases %standard-phases
1755 ;; Tests assume we're in this directory
1756 (add-before 'configure 'chdir
1757 (lambda _
1758 (chdir "maven-compat")
1759 #t))
1760 (add-before 'build 'recreate-removed-jar
1761 (lambda _
1762 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1763 (const #t))
1764 (with-directory-excursion "src/test/resources"
1765 (with-output-to-file "artifact-install/artifact-1.0.jar"
1766 (lambda _
1767 (format #t "dummy~%")))
1768 (for-each
1769 (lambda (file)
1770 (with-output-to-file file
1771 (lambda _
1772 (format #t "foo~%"))))
1773 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1774 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1775 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1776 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1777 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1778 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1779 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1780 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1781 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1782 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1783 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1784 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1785 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1786 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1787 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1788 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1789 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1790 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1791 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1792 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1793 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1794 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1795 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1796 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1797 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1798 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1799 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1800 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1801 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1802 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1803 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1804 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1805 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1806 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1807 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1808 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1809 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1810 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1811 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1812 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1813 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1814 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1815 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1816 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1817 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1818 (with-directory-excursion "local-repo/snapshot-test/jars"
1819 (for-each
1820 (lambda (file)
1821 (with-output-to-file file
1822 (lambda _
1823 ;; No end-of-line
1824 (format #t "local"))))
1825 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1826 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1827 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1828 (for-each
1829 (lambda (letter)
1830 (with-directory-excursion
1831 (string-append "src/test/remote-repo/org/apache/maven/its/"
1832 letter "/0.1")
1833 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1834 letter)))
1835 (mkdir-p dir)
1836 (copy-file (string-append letter "-0.1.pom")
1837 (string-append dir "/pom.xml"))
1838 (with-output-to-file (string-append dir "/pom.properties")
1839 (lambda _
1840 (format #t "version=0.1~%")
1841 (format #t "groupId=org.apache.maven.its")
1842 (format #t (string-append "artifactId=" letter))))
1843 (with-output-to-file "META-INF/MANIFEST.MF"
1844 (lambda _
1845 (format #t "Manifest-Version: 1.0~%"))))
1846 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1847 (string-append letter "-0.1.jar") "META-INF")))
1848 '("a" "b"))
1849 #t))
1850 (add-before 'build 'generate-models
1851 (lambda* (#:key inputs #:allow-other-keys)
1852 (define (modello-single-mode file version mode)
1853 (invoke "java" "org.codehaus.modello.ModelloCli"
1854 file mode "src/main/java" version
1855 "false" "true"))
1856 (let ((file "src/main/mdo/profiles.mdo"))
1857 (modello-single-mode file "1.0.0" "java")
1858 (modello-single-mode file "1.0.0" "xpp3-reader")
1859 (modello-single-mode file "1.0.0" "xpp3-writer"))
1860 (let ((file "src/main/mdo/paramdoc.mdo"))
1861 (modello-single-mode file "1.0.0" "java")
1862 (modello-single-mode file "1.0.0" "xpp3-reader")
1863 (modello-single-mode file "1.0.0" "xpp3-writer"))
1864 #t))
1865 (add-after 'build 'generate-metadata
1866 (lambda _
1867 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1868 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1869 "--source" "src/main/java"
1870 "--output" "build/classes/META-INF/plexus/components.xml"
1871 "--classes" "build/classes"
1872 "--descriptors" "build/classes/META-INF")
1873 #t))
1874 (add-before 'check 'build-tests
1875 (lambda _
1876 (invoke "ant" "compile-tests")
1877 #t))
1878 (add-after 'build-tests 'generate-test-metadata
1879 (lambda _
1880 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1881 ":build/classes"
1882 ":build/test-classes")
1883 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1884 "--source" "src/test/java"
1885 "--output" "build/test-classes/META-INF/plexus/components.xml"
1886 "--classes" "build/test-classes"
1887 "--descriptors" "build/test-classes/META-INF")
1888 #t))
1889 (add-after 'generate-metadata 'rebuild
1890 (lambda _
1891 (invoke "ant" "jar")
1892 #t))
1893 (replace 'install
1894 (install-from-pom "pom.xml")))))
1895 (propagated-inputs
1896 `(("maven-artifact" ,maven-artifact)
1897 ("maven-repository-metadata" ,maven-repository-metadata)
1898 ("maven-builder-support" ,maven-builder-support)
1899 ("maven-model" ,maven-model)
1900 ("maven-model-builder" ,maven-model-builder)
1901 ("maven-settings" ,maven-settings)
1902 ("maven-settings-builder" ,maven-settings-builder)
1903 ("maven-core" ,maven-core)
1904 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1905 ("maven-wagon-file" ,maven-wagon-file)
1906 ("maven-resolver-api" ,maven-resolver-api)
1907 ("maven-resolver-util" ,maven-resolver-util)
1908 ("maven-resolver-spi" ,maven-resolver-spi)
1909 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1910 (native-inputs
1911 `(("java-modello-core" ,java-modello-core)
1912 ("java-plexus-utils" ,java-plexus-utils)
1913 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1914 ("java-plexus-classworlds" ,java-plexus-classworlds)
1915 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1916 ("java-sisu-build-api" ,java-sisu-build-api)
1917 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1918 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1919 ("java-javax-inject" ,java-javax-inject)
1920 ("java-guice" ,java-guice)
1921 ("java-guava" ,java-guava)
1922 ("java-cglib" ,java-cglib)
1923 ("java-asm" ,java-asm)
1924 ("java-modello-plugins-java" ,java-modello-plugins-java)
1925 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1926 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1927 ;; metadata
1928 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
1929 ("java-commons-cli" ,java-commons-cli)
1930 ("java-plexus-cli" ,java-plexus-cli)
1931 ("java-jdom2" ,java-jdom2)
1932 ("maven-plugin-api" ,maven-plugin-api)
1933 ("java-qdox" ,java-qdox)
1934 ;; tests
1935 ("java-plexus-cipher" ,java-plexus-cipher)
1936 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1937 ("java-jsr250" ,java-jsr250)
1938 ("java-cdi-api" ,java-cdi-api)
1939 ("java-junit" ,java-junit)
1940 ("maven-resolver-impl" ,maven-resolver-impl)
1941 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1942 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1943 ("java-commons-lang3" ,java-commons-lang3)
1944 ("java-aop" ,java-aopalliance)
1945 ("maven-resolver-provider" ,maven-resolver-provider)
1946 ("java-slf4j-api" ,java-slf4j-api)
1947 ("java-slf4j-simple" ,java-slf4j-simple)
1948 ,@(package-inputs java-slf4j-api)))
1949 (description "Apache Maven is a software project management and comprehension
1950 tool. This package contains Maven2 classes maintained as compatibility
1951 layer for plugins that need to keep Maven2 compatibility.")))
1952
1953 (define-public maven
1954 (package
1955 (inherit maven-artifact)
1956 (name "maven")
1957 (arguments
1958 `(#:phases
1959 (modify-phases %standard-phases
1960 (replace 'build
1961 (lambda* (#:key inputs #:allow-other-keys)
1962 ;; Recreate the configuration for the loader
1963 (with-output-to-file "apache-maven/src/bin/m2.conf"
1964 (lambda _
1965 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1966 (format #t "~%")
1967 (format #t "set maven.conf default ${maven.home}/conf~%")
1968 (format #t "~%")
1969 (format #t "[plexus.core]~%")
1970 (format #t "load ${maven.conf}/logging~%")
1971 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1972 ;; Reference every jar so plexus-classworlds can find them.
1973 (for-each
1974 (lambda (dependency)
1975 (for-each
1976 (lambda (file)
1977 (format #t "load ~a~%" file))
1978 (find-files (assoc-ref inputs dependency) ".*.jar$")))
1979 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1980 "maven-builder-support" "maven-model" "maven-model-builder"
1981 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1982 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1983 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1984 "maven-resolver-connector-basic" "maven-resolver-provider"
1985 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1986 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1987 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1988 "maven-wagon-http-shared" "maven-wagon-tck-http"
1989 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1990 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1991 "java-javax-inject" "java-plexus-component-annotations"
1992 "java-plexus-utils" "java-plexus-interpolation"
1993 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1994 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1995 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1996 "java-slf4j-simple"))))
1997 (substitute* "apache-maven/src/bin/mvn"
1998 (("cygwin=false;")
1999 (string-append
2000 "CLASSPATH="
2001 (car (find-files
2002 (assoc-ref inputs "java-plexus-classworlds")
2003 ".*.jar"))
2004 "\ncygwin=false;"))
2005 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
2006 #t))
2007 (delete 'check)
2008 (replace 'install
2009 (lambda* (#:key outputs #:allow-other-keys)
2010 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
2011 (conf (string-append (assoc-ref outputs "out") "/conf/")))
2012 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
2013 (for-each (lambda (file)
2014 (install-file (string-append "apache-maven/src/bin/" file)
2015 bin)
2016 (chmod (string-append bin file) #o755))
2017 '("mvn" "mvnDebug" "mvnyjp"))
2018 (install-file "apache-maven/src/bin/m2.conf" bin)
2019 (copy-recursively "apache-maven/src/conf" conf))
2020 #t)))))
2021 (inputs
2022 `(("java-plexus-classworlds" ,java-plexus-classworlds)
2023 ("maven-artifact" ,maven-artifact)
2024 ("maven-embedder" ,maven-embedder)
2025 ("maven-core" ,maven-core)
2026 ("maven-compat" ,maven-compat)
2027 ("maven-builder-support" ,maven-builder-support)
2028 ("maven-model" ,maven-model)
2029 ("maven-model-builder" ,maven-model-builder)
2030 ("maven-settings" ,maven-settings)
2031 ("maven-settings-builder" ,maven-settings-builder)
2032 ("maven-plugin-api" ,maven-plugin-api)
2033 ("maven-repository-metadata" ,maven-repository-metadata)
2034 ("maven-shared-utils" ,maven-shared-utils)
2035 ("maven-resolver-api" ,maven-resolver-api)
2036 ("maven-resolver-spi" ,maven-resolver-spi)
2037 ("maven-resolver-util" ,maven-resolver-util)
2038 ("maven-resolver-impl" ,maven-resolver-impl)
2039 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
2040 ("maven-resolver-provider" ,maven-resolver-provider)
2041 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
2042 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
2043 ("maven-wagon-file" ,maven-wagon-file)
2044 ("maven-wagon-http" ,maven-wagon-http)
2045 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
2046 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
2047 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
2048 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
2049 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
2050 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2051 ("java-guice" ,java-guice)
2052 ("java-aopalliance" ,java-aopalliance)
2053 ("java-cglib" ,java-cglib)
2054 ("java-asm" ,java-asm)
2055 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
2056 ("java-javax-inject" ,java-javax-inject)
2057 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2058 ("java-plexus-utils" ,java-plexus-utils)
2059 ("java-plexus-interpolation" ,java-plexus-interpolation)
2060 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2061 ("java-plexus-cipher" ,java-plexus-cipher)
2062 ("java-guava" ,java-guava)
2063 ("java-jansi" ,java-jansi)
2064 ("java-jsr250" ,java-jsr250)
2065 ("java-cdi-api" ,java-cdi-api)
2066 ("java-commons-cli" ,java-commons-cli)
2067 ("java-commons-io" ,java-commons-io)
2068 ("java-commons-lang3" ,java-commons-lang3)
2069 ("java-slf4j-api" ,java-slf4j-api)
2070 ;; TODO: replace with maven-slf4j-provider
2071 ("java-slf4j-simple" ,java-slf4j-simple)))
2072 (propagated-inputs
2073 `(("coreutils" ,coreutils)
2074 ("which" ,which)))
2075 (description "Apache Maven is a software project management and comprehension
2076 tool. Based on the concept of a project object model: builds, dependency
2077 management, documentation creation, site publication, and distribution
2078 publication are all controlled from the @file{pom.xml} declarative file. Maven
2079 can be extended by plugins to utilise a number of other development tools for
2080 reporting or the build process.")))
2081
2082 ;; Many plugins require maven 3.0 as a dependency.
2083 (define maven-3.0-pom
2084 (package
2085 (inherit maven-pom)
2086 (version "3.0")
2087 (source (origin
2088 (method git-fetch)
2089 (uri (git-reference
2090 (url "https://github.com/apache/maven")
2091 (commit (string-append "maven-" version))))
2092 (file-name (git-file-name "maven" version))
2093 (sha256
2094 (base32
2095 "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
2096 (modules '((guix build utils)))
2097 (snippet
2098 '(begin
2099 (for-each delete-file (find-files "." "\\.jar$"))
2100 (for-each (lambda (file) (chmod file #o644))
2101 (find-files "." "."))
2102 #t))
2103 (patches
2104 (search-patches "maven-generate-component-xml.patch"
2105 "maven-generate-javax-inject-named.patch"))))
2106 (propagated-inputs
2107 `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
2108
2109 (define-public maven-3.0-artifact
2110 (package
2111 (inherit maven-artifact)
2112 (version (package-version maven-3.0-pom))
2113 (source (package-source maven-3.0-pom))
2114 (propagated-inputs
2115 (map
2116 (lambda (input)
2117 (if (equal? (car input) "maven-pom")
2118 `("maven-pom" ,maven-3.0-pom)
2119 input))
2120 (package-propagated-inputs maven-artifact)))))
2121
2122 (define-public maven-3.0-model
2123 (package
2124 (inherit maven-model)
2125 (version (package-version maven-3.0-pom))
2126 (source (package-source maven-3.0-pom))
2127 (propagated-inputs
2128 (map
2129 (lambda (input)
2130 (if (equal? (car input) "maven-pom")
2131 `("maven-pom" ,maven-3.0-pom)
2132 input))
2133 (package-propagated-inputs maven-artifact)))
2134 (arguments
2135 `(#:jar-name "maven-model.jar"
2136 #:source-dir "maven-model/src/main/java"
2137 #:test-dir "maven-model/src/test"
2138 #:modules
2139 ((guix build ant-build-system)
2140 (guix build java-utils)
2141 (guix build syscalls)
2142 (guix build utils))
2143 #:phases
2144 (modify-phases %standard-phases
2145 (add-after 'configure 'use-newer-model
2146 (lambda* (#:key inputs #:allow-other-keys)
2147 ;; The model has almost not changed, but the newer version is
2148 ;; needed to prevent an error in the newer modello we have
2149 (let ((source (assoc-ref inputs "maven-source"))
2150 (dir (mkdtemp! "maven-source-XXXXXXXX")))
2151 (with-directory-excursion dir
2152 (invoke "tar" "xf" source)
2153 (copy-file (car (find-files "." "maven.mdo"))
2154 "../maven-model/src/main/mdo/maven.mdo")))
2155 #t))
2156 (add-before 'build 'generate-models
2157 (lambda* (#:key inputs #:allow-other-keys)
2158 (define (modello-single-mode file version mode)
2159 (invoke "java" "org.codehaus.modello.ModelloCli"
2160 file mode "maven-model/src/main/java" version
2161 "false" "true" "UTF-8"))
2162 (let ((file "maven-model/src/main/mdo/maven.mdo"))
2163 (modello-single-mode file "4.0.0" "java")
2164 (modello-single-mode file "4.0.0" "xpp3-reader")
2165 (modello-single-mode file "4.0.0" "xpp3-writer")
2166 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
2167 #t))
2168 (replace 'install
2169 (install-from-pom "maven-model/pom.xml")))))
2170 (inputs
2171 `(("maven-source" ,(package-source maven-pom))
2172 ,@(package-inputs maven-model)))))
2173
2174 (define-public maven-3.0-settings
2175 (package
2176 (inherit maven-settings)
2177 (version (package-version maven-3.0-pom))
2178 (source (package-source maven-3.0-pom))
2179 (propagated-inputs
2180 (map
2181 (lambda (input)
2182 (if (equal? (car input) "maven-pom")
2183 `("maven-pom" ,maven-3.0-pom)
2184 input))
2185 (package-propagated-inputs maven-settings)))))
2186
2187 (define-public maven-3.0-settings-builder
2188 (package
2189 (inherit maven-settings-builder)
2190 (version (package-version maven-3.0-pom))
2191 (source (package-source maven-3.0-pom))
2192 (propagated-inputs
2193 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2194 ,@(filter
2195 (lambda (a) a)
2196 (map
2197 (lambda (input)
2198 (match (car input)
2199 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2200 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
2201 ("maven-builder-support" #f)
2202 (_ input)))
2203 (package-propagated-inputs maven-settings-builder)))))))
2204
2205 (define-public maven-3.0-model-builder
2206 (package
2207 (inherit maven-model-builder)
2208 (version (package-version maven-3.0-pom))
2209 (source (package-source maven-3.0-pom))
2210 (propagated-inputs
2211 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2212 ,@(filter
2213 (lambda (a) a)
2214 (map
2215 (lambda (input)
2216 (match (car input)
2217 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2218 ("maven-model" `("maven-model" ,maven-3.0-model))
2219 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2220 ("maven-builder-support" #f)
2221 (_ input)))
2222 (package-propagated-inputs maven-model-builder)))))))
2223
2224 (define-public maven-3.0-plugin-api
2225 (package
2226 (inherit maven-plugin-api)
2227 (version (package-version maven-3.0-pom))
2228 (source (package-source maven-3.0-pom))
2229 (arguments
2230 (substitute-keyword-arguments (package-arguments maven-plugin-api)
2231 ((#:phases phases)
2232 `(modify-phases ,phases
2233 (add-before 'install 'fix-pom
2234 (lambda _
2235 (substitute* "maven-plugin-api/pom.xml"
2236 (("org.sonatype.sisu") "org.codehaus.plexus")
2237 (("sisu-inject-plexus") "plexus-container-default"))
2238 #t))))))
2239 (propagated-inputs
2240 (map
2241 (lambda (input)
2242 (match (car input)
2243 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2244 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2245 ("maven-model" `("maven-model" ,maven-3.0-model))
2246 (_ input)))
2247 (package-propagated-inputs maven-model-builder)))
2248 (native-inputs
2249 `(("java-plexus-container-default" ,java-plexus-container-default)
2250 ,@(package-native-inputs maven-plugin-api)))))
2251
2252 (define-public maven-3.0-repository-metadata
2253 (package
2254 (inherit maven-repository-metadata)
2255 (version (package-version maven-3.0-pom))
2256 (source (package-source maven-3.0-pom))
2257 (propagated-inputs
2258 (map
2259 (lambda (input)
2260 (if (equal? (car input) "maven-pom")
2261 `("maven-pom" ,maven-3.0-pom)
2262 input))
2263 (package-propagated-inputs maven-repository-metadata)))))
2264
2265 (define-public maven-3.0-aether-provider
2266 (package
2267 (inherit maven-3.0-pom)
2268 (name "maven-aether-provider")
2269 (arguments
2270 `(#:jar-name "maven-aether-provider.jar"
2271 #:source-dir "maven-aether-provider/src/main/java"
2272 #:tests? #f; no tests in 3.0
2273 #:phases
2274 (modify-phases %standard-phases
2275 (add-after 'build 'generate-metadata
2276 (lambda _
2277 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2278 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2279 "--source" "src/main/java"
2280 "--output" "build/classes/META-INF/plexus/components.xml"
2281 "--classes" "build/classes"
2282 "--descriptors" "build/classes/META-INF")
2283 #t))
2284 (add-after 'generate-metadata 'rebuild
2285 (lambda _
2286 (invoke "ant" "jar")
2287 #t))
2288 (replace 'install
2289 (install-from-pom "maven-aether-provider/pom.xml")))))
2290 (propagated-inputs
2291 `(("maven-model" ,maven-3.0-model)
2292 ("maven-model-builder" ,maven-3.0-model-builder)
2293 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2294 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2295 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
2296 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2297 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
2298 ("java-plexus-utils" ,java-plexus-utils)
2299 ("maven-pom" ,maven-3.0-pom)))
2300 (native-inputs
2301 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)))))
2302
2303 (define-public maven-3.0-core
2304 (package
2305 (inherit maven-core)
2306 (version (package-version maven-3.0-pom))
2307 (source (package-source maven-3.0-pom))
2308 (arguments
2309 `(#:jar-name "maven-core.jar"
2310 #:source-dir "src/main/java"
2311 #:tests? #f
2312 #:phases
2313 (modify-phases %standard-phases
2314 (add-before 'configure 'chdir
2315 (lambda _
2316 ;; Required for generating components.xml in maven-core
2317 (chdir "maven-core")
2318 #t))
2319 (add-before 'build 'generate-models
2320 (lambda* (#:key inputs #:allow-other-keys)
2321 (define (modello-single-mode file version mode)
2322 (invoke "java" "org.codehaus.modello.ModelloCli"
2323 file mode "src/main/java" version
2324 "false" "true" "UTF-8"))
2325 (let ((file "src/main/mdo/toolchains.mdo"))
2326 (modello-single-mode file "1.0.0" "java")
2327 (modello-single-mode file "1.0.0" "xpp3-reader")
2328 (modello-single-mode file "1.0.0" "xpp3-writer"))
2329 #t))
2330 (add-before 'build 'copy-resources
2331 (lambda _
2332 (mkdir-p "build/classes/")
2333 (copy-recursively "src/main/resources" "build/classes")
2334 #t))
2335 (add-after 'build 'generate-metadata
2336 (lambda _
2337 (define (components file)
2338 (let ((sxml (with-input-from-file file
2339 (lambda _ (xml->sxml (current-input-port)
2340 #:trim-whitespace? #t)))))
2341 ;; Select the list of <component>s inside the <component-set>
2342 ;; and <components>.
2343 ((@ (ice-9 match) match) sxml
2344 (('*TOP*
2345 ('*PI* foo ...)
2346 ('component-set
2347 ('components x ...))) x))))
2348 (use-modules (sxml simple))
2349 (delete-file "build/classes/META-INF/plexus/components.xml")
2350 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2351 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2352 "--source" "build/classes/META-INF/plexus"
2353 "--output" "build/classes/META-INF/plexus/components.t.xml"
2354 "--classes" "build/classes"
2355 "--descriptors" "build/classes")
2356 ;; Now we merge all other components from hand-written xml
2357 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
2358 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
2359 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
2360 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
2361 (lambda _
2362 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
2363 (sxml->xml
2364 `(component-set
2365 (components
2366 ,@(append generated-xml components-xml
2367 artifact-handlers-xml)))))))
2368 #t))
2369 (add-after 'generate-metadata 'rebuild
2370 (lambda _
2371 (invoke "ant" "jar")
2372 #t))
2373 (add-before 'install 'fix-pom
2374 (lambda _
2375 (substitute* "pom.xml"
2376 (("org.sonatype.sisu") "org.codehaus.plexus")
2377 (("sisu-inject-plexus") "plexus-container-default"))
2378 #t))
2379 (replace 'install
2380 (install-from-pom "pom.xml")))))
2381 (propagated-inputs
2382 `(("maven-model" ,maven-3.0-model)
2383 ("maven-settings" ,maven-3.0-settings)
2384 ("maven-settings-builder" ,maven-3.0-settings-builder)
2385 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2386 ("maven-artifact" ,maven-3.0-artifact)
2387 ("maven-model-builder" ,maven-3.0-model-builder)
2388 ("maven-aether-provider" ,maven-3.0-aether-provider)
2389 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2390 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2391 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
2392 ("java-plexus-interpolation" ,java-plexus-interpolation)
2393 ("java-plexus-utils" ,java-plexus-utils)
2394 ("java-plexus-classworlds" ,java-plexus-classworlds)
2395 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2396 ("java-plexus-container-default" ,java-plexus-container-default)
2397 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2398 ("maven-pom" ,maven-3.0-pom)))))
2399
2400 (define-public maven-3.0-compat
2401 (package
2402 (inherit maven-compat)
2403 (version (package-version maven-3.0-pom))
2404 (source (package-source maven-3.0-pom))
2405 (arguments
2406 `(#:tests? #f ;require an old version of java-easymock
2407 ,@(substitute-keyword-arguments (package-arguments maven-compat)
2408 ((#:phases phases)
2409 `(modify-phases ,phases
2410 (add-before 'install 'fix-pom
2411 (lambda _
2412 (substitute* "pom.xml"
2413 (("org.sonatype.sisu") "org.codehaus.plexus")
2414 (("sisu-inject-plexus") "plexus-container-default"))
2415 #t))
2416 (delete 'build-tests))))))
2417 (propagated-inputs
2418 `(("maven-model" ,maven-3.0-model)
2419 ("maven-model-builder" ,maven-3.0-model-builder)
2420 ("maven-settings" ,maven-3.0-settings)
2421 ("maven-settings-builder" ,maven-3.0-settings-builder)
2422 ("maven-artifact" ,maven-3.0-artifact)
2423 ("maven-core" ,maven-3.0-core)
2424 ("maven-aether-provider" ,maven-3.0-aether-provider)
2425 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2426 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2427 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
2428 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2429 ("java-plexus-utils" ,java-plexus-utils)
2430 ("java-plexus-interpolation" ,java-plexus-interpolation)
2431 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2432 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2433 ("java-plexus-container-default" ,java-plexus-container-default)
2434 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
2435 ("maven-pom" ,maven-3.0-pom)))))
2436
2437 (define-public maven-shared-utils-3.0
2438 (package
2439 (inherit maven-shared-utils)
2440 (version "3.0.0")
2441 (source (origin
2442 (method url-fetch)
2443 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2444 "maven-shared-utils-" version "-source-release.zip"))
2445 (sha256
2446 (base32
2447 "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
2448 (propagated-inputs
2449 `(("maven-core" ,maven-3.0-core)
2450 ("maven-components-parent-pom" ,maven-components-parent-pom-21)
2451 ,@(package-propagated-inputs maven-shared-utils)))))
2452
2453 (define-public maven-shared-io
2454 (package
2455 (name "maven-shared-io")
2456 (version "3.0.0")
2457 (source (origin
2458 (method url-fetch)
2459 (uri (string-append "mirror://apache/maven/shared/"
2460 "maven-shared-io-" version
2461 "-source-release.zip"))
2462 (sha256
2463 (base32
2464 "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
2465 (build-system ant-build-system)
2466 (arguments
2467 `(#:jar-name "maven-shared-io.jar"
2468 #:source-dir "src/main/java"
2469 #:test-dir "src/test"
2470 #:phases
2471 (modify-phases %standard-phases
2472 (add-before 'build 'copy-resources
2473 (lambda _
2474 (copy-recursively "src/main/resources" "build/classes/")
2475 (copy-recursively "src/test/resources" "build/test-classes/")
2476 #t))
2477 (replace 'install
2478 (install-from-pom "pom.xml")))))
2479 (propagated-inputs
2480 `(("maven-artifact" ,maven-3.0-artifact)
2481 ("maven-compat" ,maven-3.0-compat)
2482 ("maven-plugin-api" ,maven-3.0-plugin-api)
2483 ("maven-shared-utils" ,maven-shared-utils)
2484 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
2485 ("java-plexus-utils" ,java-plexus-utils)
2486 ("maven-components-parent-pom" ,maven-components-parent-pom-22)))
2487 (native-inputs
2488 `(("unzip" ,unzip)
2489 ("java-junit" ,java-junit)
2490 ("java-easymock" ,java-easymock)))
2491 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2492 (synopsis "Tree-based API for resolution of Maven project dependencies")
2493 (description "This package provides a tree-based API for resolution of
2494 Maven project dependencies.")
2495 (license license:asl2.0)))
2496
2497 (define-public maven-file-management
2498 (package
2499 (name "maven-file-management")
2500 (version "3.0.0")
2501 (source (origin
2502 (method url-fetch)
2503 (uri (string-append "mirror://apache/maven/shared/"
2504 "file-management-" version
2505 "-source-release.zip"))
2506 (sha256
2507 (base32
2508 "0wisz6sm67axrwvx8a75mb9s03h7kzkzfw8j3aaa4sx4k9ph58da"))))
2509 (build-system ant-build-system)
2510 (arguments
2511 `(#:jar-name "maven-file-management.jar"
2512 #:source-dir "src/main/java"
2513 #:phases
2514 (modify-phases %standard-phases
2515 (add-before 'build 'copy-resources
2516 (lambda _
2517 (copy-recursively "src/main/resources" "build/classes/")
2518 #t))
2519 (add-before 'build 'generate-models
2520 (lambda* (#:key inputs #:allow-other-keys)
2521 (define (modello-single-mode file version mode)
2522 (invoke "java"
2523 "org.codehaus.modello.ModelloCli"
2524 file mode "src/main/java" version
2525 "false" "true"))
2526 (let ((file "src/main/mdo/fileset.mdo"))
2527 (modello-single-mode file "1.1.0" "java")
2528 (modello-single-mode file "1.1.0" "xpp3-reader")
2529 (modello-single-mode file "1.1.0" "xpp3-writer"))
2530 #t))
2531 (replace 'install
2532 (install-from-pom "pom.xml")))))
2533 (propagated-inputs
2534 `(("maven-plugin-api" ,maven-3.0-plugin-api)
2535 ("maven-shared-io" ,maven-shared-io)
2536 ("maven-shared-utils" ,maven-shared-utils)
2537 ("java-plexus-utils" ,java-plexus-utils)
2538 ("maven-components-parent-pom" ,maven-components-parent-pom-22)))
2539 (native-inputs
2540 `(("java-modello-core" ,java-modello-core)
2541 ;; modello plugins:
2542 ("java-modellop-plugins-java" ,java-modello-plugins-java)
2543 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
2544 ("unzip" ,unzip)))
2545 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2546 (synopsis "Tree-based API for resolution of Maven project dependencies")
2547 (description "This package provides a tree-based API for resolution of
2548 Maven project dependencies.")
2549 (license license:asl2.0)))
2550
2551 (define-public maven-archiver
2552 (package
2553 (name "maven-archiver")
2554 (version "3.5.0")
2555 (source (origin
2556 (method url-fetch)
2557 (uri (string-append "mirror://apache/maven/shared/"
2558 "maven-archiver-" version
2559 "-source-release.zip"))
2560 (sha256
2561 (base32
2562 "1204xkqj259brpk3yscprml0lbfbyn1vn5nrgqjk44z5vx127lbw"))))
2563 (build-system ant-build-system)
2564 (arguments
2565 `(#:jar-name "maven-archiver.jar"
2566 #:source-dir "src/main/java"
2567 #:phases
2568 (modify-phases %standard-phases
2569 (replace 'install
2570 (install-from-pom "pom.xml")))))
2571 (propagated-inputs
2572 `(("java-commons-io" ,java-commons-io)
2573 ("maven-artifact" ,maven-3.0-artifact)
2574 ("maven-core" ,maven-3.0-core)
2575 ("maven-model" ,maven-3.0-model)
2576 ("maven-shared-utils" ,maven-shared-utils)
2577 ("java-plexus-archiver" ,java-plexus-archiver)
2578 ("java-plexus-interpolation" ,java-plexus-interpolation)
2579 ("java-plexus-utils" ,java-plexus-utils)
2580 ("maen-parent-pom" ,maven-parent-pom-33)))
2581 (native-inputs
2582 `(("java-junit" ,java-junit)
2583 ("java-assertj" ,java-assertj)
2584 ("unzip" ,unzip)))
2585 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2586 (synopsis "Tree-based API for resolution of Maven project dependencies")
2587 (description "This package provides a tree-based API for resolution of
2588 Maven project dependencies.")
2589 (license license:asl2.0)))
2590
2591 (define-public maven-dependency-tree
2592 (package
2593 (name "maven-dependency-tree")
2594 (version "3.0.1")
2595 (source (origin
2596 (method url-fetch)
2597 (uri (string-append "mirror://apache/maven/shared/"
2598 "maven-dependency-tree-" version
2599 "-source-release.zip"))
2600 (sha256
2601 (base32
2602 "0mxfslxvcmjs13jl30zhcg672j970dzn6ihh79w9ajh6sfqmlds2"))))
2603 (build-system ant-build-system)
2604 (arguments
2605 `(#:jar-name "maven-dependency-tree.jar"
2606 #:source-dir "src/main/java"
2607 #:phases
2608 (modify-phases %standard-phases
2609 (replace 'install
2610 (install-from-pom "pom.xml")))))
2611 (propagated-inputs
2612 `(("maven-core" ,maven-3.0-core)
2613 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2614 ("maven-parent-pom" ,maven-parent-pom-30)))
2615 (inputs
2616 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
2617 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
2618 ("java-eclipse-aether-api" ,java-eclipse-aether-api)
2619 ("java-eclipse-aether-util" ,java-eclipse-aether-util)))
2620 (native-inputs
2621 `(("unzip" ,unzip)
2622 ("java-junit" ,java-junit)))
2623 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2624 (synopsis "Tree-based API for resolution of Maven project dependencies")
2625 (description "This package provides a tree-based API for resolution of
2626 Maven project dependencies.")
2627 (license license:asl2.0)))
2628
2629 (define-public maven-common-artifact-filters
2630 (package
2631 (name "maven-common-artifact-filters")
2632 (version "3.1.0")
2633 (source (origin
2634 (method url-fetch)
2635 (uri (string-append "mirror://apache/maven/shared/"
2636 "maven-common-artifact-filters-" version
2637 "-source-release.zip"))
2638 (sha256
2639 (base32
2640 "1cl1qk4r0gp62bjzfm7lml9raz1my2kd4yf0ci0lnfsn0h5qivnb"))))
2641 (build-system ant-build-system)
2642 (arguments
2643 `(#:jar-name "maven-common-artifact-filters.jar"
2644 #:source-dir "src/main/java"
2645 #:tests? #f; require maven-plugin-testing-harness, which requires maven 3.2.
2646 #:phases
2647 (modify-phases %standard-phases
2648 (add-before 'build 'remove-sisu
2649 (lambda _
2650 ;; Replace sisu with an existing dependency, to prevent a failure
2651 ;; when rewritting dependency versions
2652 (substitute* "pom.xml"
2653 (("sisu-inject-plexus") "maven-plugin-api")
2654 (("org.sonatype.sisu") "org.apache.maven"))
2655 #t))
2656 (replace 'install
2657 (install-from-pom "pom.xml")))))
2658 (propagated-inputs
2659 `(("maven-artifact" ,maven-3.0-artifact)
2660 ("maven-model" ,maven-3.0-model)
2661 ("maven-core" ,maven-3.0-core)
2662 ("maven-plugin-api" ,maven-3.0-plugin-api)
2663 ("maven-shared-utils" ,maven-shared-utils)
2664 ("maven-parent-pom" ,maven-parent-pom-33)
2665 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2666 ("java-sonatype-aether-util" ,java-sonatype-aether-util)))
2667 (inputs
2668 `(("maven-resolver-api" ,maven-resolver-api)
2669 ("maven-resolver-util" ,maven-resolver-util)))
2670 (native-inputs
2671 `(("unzip" ,unzip)))
2672 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2673 (synopsis "Tree-based API for resolution of Maven project dependencies")
2674 (description "This package provides a tree-based API for resolution of
2675 Maven project dependencies.")
2676 (license license:asl2.0)))
2677
2678 (define-public maven-enforcer-api
2679 (package
2680 (name "maven-enforcer-api")
2681 (version "3.0.0-M3")
2682 (source (origin
2683 (method url-fetch)
2684 (uri (string-append "mirror://apache/maven/enforcer/"
2685 "enforcer-" version "-source-release.zip"))
2686 (sha256
2687 (base32
2688 "014cwj0dqa69nnlzcin8pk9wsjmmg71vsbcpb16cibcjpm6h9wjg"))
2689 (patches
2690 (search-patches "maven-enforcer-api-fix-old-dependencies.patch"))))
2691 (build-system ant-build-system)
2692 (arguments
2693 `(#:jar-name "maven-enforcer-api.jar"
2694 #:source-dir "enforcer-api/src/main/java"
2695 #:tests? #f; no tests
2696 #:phases
2697 (modify-phases %standard-phases
2698 (replace 'install
2699 (install-from-pom "enforcer-api/pom.xml")))))
2700 (propagated-inputs
2701 `(("maven-plugin-api" ,maven-plugin-api)
2702 ("java-plexus-container-default" ,java-plexus-container-default)
2703 ("java-jsr305" ,java-jsr305)
2704 ("maven-enforcer-parent-pom" ,maven-enforcer-parent-pom)))
2705 (native-inputs
2706 `(("unzip" ,unzip)))
2707 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2708 (synopsis "Tree-based API for resolution of Maven project dependencies")
2709 (description "This package provides a tree-based API for resolution of
2710 Maven project dependencies.")
2711 (license license:asl2.0)))
2712
2713 (define maven-enforcer-parent-pom
2714 (package
2715 (inherit maven-enforcer-api)
2716 (name "maven-enforcer-parent-pom")
2717 (arguments
2718 `(#:tests? #f
2719 #:phases
2720 (modify-phases %standard-phases
2721 (delete 'configure)
2722 (delete 'build)
2723 (replace 'install
2724 (install-pom-file "pom.xml")))))
2725 (propagated-inputs
2726 `(("maven-parent-pom" ,maven-parent-pom-30)))))
2727
2728 (define-public maven-enforcer-rules
2729 (package
2730 (inherit maven-enforcer-api)
2731 (name "maven-enforcer-rules")
2732 (arguments
2733 `(#:tests? #f; requires maven-plugin-testing-harness
2734 #:jar-name "maven-enforcer-rules.jar"
2735 #:source-dir "enforcer-rules/src/main/java"
2736 #:test-dir "enforcer-rules/src/test"
2737 #:phases
2738 (modify-phases %standard-phases
2739 (replace 'install
2740 (install-from-pom "enforcer-rules/pom.xml")))))
2741 (propagated-inputs
2742 `(("maven-artifact" ,maven-artifact)
2743 ("maven-plugin-api" ,maven-plugin-api)
2744 ("maven-core" ,maven-core)
2745 ("maven-common-artifact-filters" ,maven-common-artifact-filters)
2746 ("java-commons-codec" ,java-commons-codec)
2747 ("java-commons-lang3" ,java-commons-lang3)
2748 ("maven-enforcer-api" ,maven-enforcer-api)
2749 ("maven-resolver-util" ,maven-resolver-util)
2750 ("java-bsh" ,java-bsh)
2751 ("maven-dependency-tree" ,maven-dependency-tree)
2752 ("maven-compat" ,maven-3.0-compat)
2753 ("maven-enforcer-parent-pom" ,maven-enforcer-parent-pom)))))
2754
2755 (define-public maven-enforcer-plugin
2756 (package
2757 (inherit maven-enforcer-api)
2758 (name "maven-enforcer-plugin")
2759 (arguments
2760 `(#:tests? #f
2761 #:jar-name "maven-enforcer-plugin.jar"
2762 #:source-dir "maven-enforcer-plugin/src/main/java"
2763 #:phases
2764 (modify-phases %standard-phases
2765 (add-before 'build 'generate-plugin.xml
2766 (generate-plugin.xml "maven-enforcer-plugin/pom.xml"
2767 "enforcer"
2768 "maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/"
2769 (list
2770 (list "DisplayInfoMojo.java")
2771 (list "EnforceMojo.java"))))
2772 (replace 'install
2773 (install-from-pom "maven-enforcer-plugin/pom.xml")))))
2774 (propagated-inputs
2775 `(("maven-artifact" ,maven-artifact)
2776 ("maven-plugin-api" ,maven-plugin-api)
2777 ("maven-core" ,maven-core)
2778 ("java-plexus-utils" ,java-plexus-utils)
2779 ("maven-enforcer-api" ,maven-enforcer-api)
2780 ("maven-enforcer-rules" ,maven-enforcer-rules)
2781 ("maven-plugin-annotations" ,maven-plugin-annotations)
2782 ("maven-enforcer-parent-pom" ,maven-enforcer-parent-pom)))))
2783
2784 (define-public maven-artifact-transfer
2785 (package
2786 (name "maven-artifact-transfer")
2787 (version "0.12.0")
2788 (source (origin
2789 (method url-fetch)
2790 (uri (string-append "mirror://apache/maven/shared/"
2791 "maven-artifact-transfer-" version
2792 "-source-release.zip"))
2793 (sha256
2794 (base32
2795 "0mkdjr3wnvaxqaq68sy7h4mqlq3xgwwp5s2anj5vbxfy4bsc1ivj"))))
2796 (build-system ant-build-system)
2797 (arguments
2798 `(#:tests? #f; require mockito 2
2799 #:jar-name "maven-artifact-transfer.jar"
2800 #:source-dir "src/main/java"
2801 #:phases
2802 (modify-phases %standard-phases
2803 (add-after 'build 'generate-metadata
2804 (lambda _
2805 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2806 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2807 "--source" "src/main/java"
2808 "--output" "build/classes/META-INF/plexus/components.xml"
2809 "--classes" "build/classes"
2810 "--descriptors" "build/classes/META-INF")
2811 #t))
2812 (add-after 'generate-metadata 'rebuild
2813 (lambda _
2814 (invoke "ant" "jar")
2815 #t))
2816 (replace 'install
2817 (install-from-pom "pom.xml")))))
2818 (propagated-inputs
2819 `(("java-commons-codec" ,java-commons-codec)
2820 ("maven-artifact" ,maven-3.0-artifact)
2821 ("maven-core" ,maven-3.0-core)
2822 ("maven-common-artifact-filters" ,maven-common-artifact-filters)
2823 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2824 ("java-plexus-utils" ,java-plexus-utils)
2825 ("java-slf4j-api" ,java-slf4j-api)
2826 ("java-plexus-classworlds" ,java-plexus-classworlds)
2827 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2828 ("java-eclipse-aether-api" ,java-eclipse-aether-api)
2829 ("java-eclipse-aether-util" ,java-eclipse-aether-util)
2830 ("java-eclipse-aether-impl" ,java-eclipse-aether-impl)))
2831 (native-inputs
2832 `(("unzip" ,unzip)
2833 ("java-plexus-component-metadata" ,java-plexus-component-metadata)))
2834 (home-page "https://maven.apache.org/shared/maven-artifact-transfer")
2835 (synopsis "API to install, deploy and resolve artifacts in Maven")
2836 (description "This package contains an API to install, deploy and resolve
2837 artifacts in Maven 3.")
2838 (license license:asl2.0)))
2839
2840 (define-public maven-install-plugin
2841 (package
2842 (name "maven-install-plugin")
2843 (version "3.0.0-M1")
2844 (source (origin
2845 (method url-fetch)
2846 (uri (string-append "mirror://apache/maven/plugins/"
2847 "maven-install-plugin-" version
2848 "-source-release.zip"))
2849 (sha256
2850 (base32
2851 "1l9iydxririrair0i5sk2iypn9wspzbb666lc0ddg20yyr8w39dm"))))
2852 (build-system ant-build-system)
2853 (arguments
2854 `(#:tests? #f; require maven-plugin-testing-harness
2855 #:jar-name "maven-install-plugin.jar"
2856 #:source-dir "src/main/java"
2857 #:phases
2858 (modify-phases %standard-phases
2859 (add-before 'build 'fix-pom
2860 (lambda _
2861 (substitute* "pom.xml"
2862 (("maven-project") "maven-core")
2863 (("maven-artifact-manager") "maven-artifact")
2864 (("2.0.6") "3.0"))
2865 #t))
2866 (add-before 'build 'generate-plugin.xml
2867 (generate-plugin.xml "pom.xml"
2868 "install"
2869 "src/main/java/org/apache/maven/plugins/install"
2870 (list
2871 (list "AbstractInstallMojo.java" "InstallFileMojo.java")
2872 (list "AbstractInstallMojo.java" "InstallMojo.java"))))
2873 (replace 'install
2874 (install-from-pom "pom.xml")))))
2875 (propagated-inputs
2876 `(("maven-artifact" ,maven-artifact)
2877 ("maven-plugin-api" ,maven-plugin-api)
2878 ("maven-compat" ,maven-compat)
2879 ("maven-artifact-transfer" ,maven-artifact-transfer)
2880 ("maven-plugins-pom-23" ,maven-plugins-pom-23)
2881 ("java-plexus-digest" ,java-plexus-digest)))
2882 (inputs
2883 `(("maven-plugin-annotations" ,maven-plugin-annotations)
2884 ("java-slf4j-api" ,java-slf4j-api)))
2885 (native-inputs
2886 `(("unzip" ,unzip)))
2887 (home-page "https://maven.apache.org/plugin/maven-install-plugin")
2888 (synopsis "Maven's install plugin")
2889 (description "The Install Plugin is used during the install phase to add
2890 artifact(s) to the local repository. The Install Plugin uses the information
2891 in the POM (groupId, artifactId, version) to determine the proper location for
2892 the artifact within the local repository.
2893
2894 The local repository is the local cache where all artifacts needed for the
2895 build are stored. By default, it is located within the user's home directory
2896 (@file{~/.m2/repository}) but the location can be configured in
2897 @file{~/.m2/settings.xml} using the @code{<localRepository>} element.")
2898 (license license:asl2.0)))
2899
2900 (define-public maven-filtering
2901 (package
2902 (name "maven-filtering")
2903 (version "3.1.1")
2904 (source (origin
2905 (method url-fetch)
2906 (uri (string-append "https://archive.apache.org/dist/maven/"
2907 "shared/maven-filtering-" version
2908 "-source-release.zip"))
2909 (sha256
2910 (base32
2911 "09wrdhchnszd2l6h4z30ra0bv1a19qyjgac9z8zf1pn0m4nw05yz"))))
2912 (build-system ant-build-system)
2913 (arguments
2914 `(#:jar-name "maven-filtering.jar"
2915 #:source-dir "src/main/java"
2916 #:test-dir "src/test"
2917 ;; this test comes from sisu-build-api, not this package
2918 #:test-exclude (list "**/IncrementalResourceFilteringTest.java"
2919 "**/Abstract*.java")
2920 #:phases
2921 (modify-phases %standard-phases
2922 (add-after 'build 'generate-metadata
2923 (lambda _
2924 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2925 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2926 "--source" "src/main/java"
2927 "--output" "build/classes/META-INF/plexus/components.xml"
2928 "--classes" "build/classes"
2929 "--descriptors" "build/classes/META-INF")
2930 #t))
2931 (add-after 'generate-metadata 'rebuild
2932 (lambda _
2933 (invoke "ant" "jar")
2934 #t))
2935 (add-before 'check 'decompress-tests
2936 (lambda* (#:key inputs #:allow-other-keys)
2937 (let* ((build-api-source (assoc-ref inputs "java-sisu-build-api-origin"))
2938 (classes (string-append build-api-source "/src/test/java")))
2939 (copy-recursively classes "src/test/"))
2940 #t))
2941 (add-before 'check 'fix-directory
2942 (lambda _
2943 (substitute* (find-files "src/test" ".*.java$")
2944 (("target/test-classes/") "build/test-classes/"))))
2945 (add-before 'check 'copy-test-resources
2946 (lambda _
2947 (copy-recursively "src/test/resources" "build/test-classes/")
2948 #t))
2949 (replace 'install
2950 (install-from-pom "pom.xml")))))
2951 (propagated-inputs
2952 `(("maven-core" ,maven-3.0-core)
2953 ("maven-shared-utils" ,maven-shared-utils)
2954 ("java-plexus-utils" ,java-plexus-utils)
2955 ("java-plexus-interpolation" ,java-plexus-interpolation)
2956 ("java-sisu-build-api" ,java-sisu-build-api)
2957 ("maven-parent-pom" ,maven-parent-pom-30)))
2958 (inputs
2959 `(("java-jsr305" ,java-jsr305)))
2960 (native-inputs
2961 `(("unzip" ,unzip)
2962 ("java-assertj" ,java-assertj)
2963 ("java-junit" ,java-junit)
2964 ("java-mockito" ,java-mockito-1)
2965 ("java-objenesis" ,java-objenesis)
2966 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
2967 ("java-sisu-build-api-origin" ,(package-source java-sisu-build-api))))
2968 (home-page "https://maven.apache.org/shared/maven-filtering")
2969 (synopsis "Shared component for all plugins that needs to filter resources")
2970 (description "This component provides an API to filter resources in Maven
2971 projects.")
2972 (license license:asl2.0)))
2973
2974 (define-public maven-resources-plugin
2975 (package
2976 (name "maven-resources-plugin")
2977 (version "3.1.0")
2978 (source (origin
2979 (method url-fetch)
2980 (uri (string-append "https://github.com/apache/"
2981 "maven-resources-plugin/archive/"
2982 "maven-resources-plugin-" version ".tar.gz"))
2983 (sha256
2984 (base32
2985 "1f5gnjg2xmqfxml6k0ydyd1sxxwzgnb24qn6avcc4mijwd8a84pl"))))
2986 (build-system ant-build-system)
2987 (arguments
2988 `(#:jar-name "maven-resources-plugin.jar"
2989 #:source-dir "src/main/java"
2990 #:test-dir "src/test"
2991 #:tests? #f; test depends on maven-plugin-test-harness
2992 #:phases
2993 (modify-phases %standard-phases
2994 (add-before 'build 'generate-plugin.xml
2995 (generate-plugin.xml "pom.xml" "resources"
2996 "src/main/java/org/apache/maven/plugins/resources"
2997 (list
2998 (list "ResourcesMojo.java" "CopyResourcesMojo.java")
2999 (list "ResourcesMojo.java")
3000 (list "ResourcesMojo.java" "TestResourcesMojo.java"))))
3001 (replace 'install
3002 (install-from-pom "pom.xml")))))
3003 (propagated-inputs
3004 `(("maven-plugin-api" ,maven-plugin-api)
3005 ("maven-core" ,maven-core)
3006 ("java-plexus-utils" ,java-plexus-utils)
3007 ("maven-filtering" ,maven-filtering)
3008 ("java-plexus-interpolation" ,java-plexus-interpolation)
3009 ("maven-parent-pom" ,maven-parent-pom-31)))
3010 (inputs
3011 `(("maven-plugin-annotations" ,maven-plugin-annotations)
3012 ("java-commons-io" ,java-commons-io)))
3013 (native-inputs
3014 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)))
3015 (home-page "https://maven.apache.org/plugins/maven-resources-plugin")
3016 (synopsis "Maven plugin to collect and install resources")
3017 (description "The Resources Plugin handles the copying of project resources
3018 to the output directory. There are two different kinds of resources: main
3019 resources and test resources. The difference is that the main resources are
3020 the resources associated to the main source code while the test resources are
3021 associated to the test source code.
3022
3023 Thus, this allows the separation of resources for the main source code and its
3024 unit tests.")
3025 (license license:asl2.0)))