1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2018-2022 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>
7 ;;; This file is part of GNU Guix.
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.
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.
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/>.
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))
38 (define-public maven-resolver-api
40 (name "maven-resolver-api")
45 (url "https://github.com/apache/maven-resolver")
46 (commit (string-append "maven-resolver-" version))))
47 (file-name (git-file-name name version))
50 "0hbbbxj14qyq8pccyab96pjqq90jnjmid1pml9kx55c5smfpjn37"))))
51 (build-system ant-build-system)
53 `(#:jar-name "maven-resolver-api.jar"
54 #:source-dir "maven-resolver-api/src/main/java"
55 #:test-dir "maven-resolver-api/src/test"
57 (modify-phases %standard-phases
59 (install-from-pom "maven-resolver-api/pom.xml")))))
61 `(("java-asm-8" ,java-asm-8)
62 ("java-cglib" ,java-cglib)
63 ("java-hamcrest-core" ,java-hamcrest-core)
64 ("java-junit" ,java-junit)
65 ("java-mockito-1" ,java-mockito-1)
66 ("java-objenesis" ,java-objenesis)))
68 (list maven-resolver-parent-pom))
69 (home-page "https://github.com/apache/maven-resolver")
70 (synopsis "Maven repository system API")
71 (description "This package contains the API for the maven repository system.")
72 (license license:asl2.0)))
74 (define maven-resolver-parent-pom
76 (inherit maven-resolver-api)
77 (name "maven-resolver-parent-pom")
81 (modify-phases %standard-phases
84 (add-before 'install 'fix-pom
86 (substitute* "pom.xml"
87 (("<classifier>no_aop</classifier>") ""))
90 (install-pom-file "pom.xml")))))
91 (propagated-inputs '())))
93 (define-public maven-resolver-spi
95 (inherit maven-resolver-api)
96 (name "maven-resolver-spi")
98 `(#:jar-name "maven-resolver-spi.jar"
99 #:source-dir "maven-resolver-spi/src/main/java"
100 #:test-dir "maven-resolver-spi/src/test"
102 (modify-phases %standard-phases
104 (install-from-pom "maven-resolver-spi/pom.xml")))))
106 (list maven-resolver-api))
107 (synopsis "Maven repository system SPI")
108 (description "This package contains the service provider interface (SPI)
109 for repository system implementations and repository connectors.")))
111 (define-public maven-resolver-test-util
113 (inherit maven-resolver-api)
114 (name "maven-resolver-test-util")
116 `(#:jar-name "maven-resolver-test-util.jar"
117 #:source-dir "maven-resolver-test-util/src/main/java"
118 #:test-dir "maven-resolver-test-util/src/test"
121 (list maven-resolver-api maven-resolver-spi))
122 (synopsis "Utility classes for testing the maven repository system")
123 (description "This package contains a collection of utility classes to
124 ease testing of the repository system.")))
126 (define-public maven-resolver-util
128 (inherit maven-resolver-api)
129 (name "maven-resolver-util")
131 `(#:jar-name "maven-resolver-util.jar"
132 #:source-dir "maven-resolver-util/src/main/java"
133 #:test-dir "maven-resolver-util/src/test"
135 (modify-phases %standard-phases
137 (install-from-pom "maven-resolver-util/pom.xml")))))
139 (list maven-resolver-api))
141 (list java-junit java-hamcrest-core maven-resolver-test-util))
142 (synopsis "Utility classes for the maven repository system")
143 (description "This package contains a collection of utility classes to
144 ease usage of the repository system.")))
146 (define-public maven-resolver-connector-basic
148 (inherit maven-resolver-api)
149 (name "maven-resolver-connector-basic")
151 `(#:jar-name "maven-resolver-connector-basic.jar"
152 #:source-dir "maven-resolver-connector-basic/src/main/java"
153 #:test-dir "maven-resolver-connector-basic/src/test"
156 (modify-phases %standard-phases
157 (add-before 'build 'generate-sisu
159 (mkdir-p "build/classes/META-INF/sisu")
160 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
162 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
165 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
167 (list maven-resolver-api maven-resolver-spi maven-resolver-util
170 (list java-javax-inject java-junit maven-resolver-test-util))
171 (synopsis "Maven repository connector implementation")
172 (description "This package contains a repository connector implementation
173 for repositories using URI-based layouts.")))
175 (define-public maven-resolver-impl
177 (inherit maven-resolver-api)
178 (name "maven-resolver-impl")
180 `(#:jar-name "maven-resolver-impl.jar"
181 #:source-dir "maven-resolver-impl/src/main/java"
182 #:test-dir "maven-resolver-impl/src/test"
184 (modify-phases %standard-phases
185 (add-before 'build 'generate-sisu
187 (mkdir-p "build/classes/META-INF/sisu")
188 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
192 ;; Build this list by looking for files containing "@Named"
193 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
194 "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
195 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
196 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
197 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
198 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
199 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
200 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
201 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
202 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
203 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
204 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
205 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
206 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
207 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
208 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
209 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
210 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
211 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
212 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
213 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
214 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
215 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
218 (install-from-pom "maven-resolver-impl/pom.xml")))))
220 (list maven-resolver-api
224 java-eclipse-sisu-inject
228 maven-resolver-parent-pom))
230 (list java-junit maven-resolver-test-util))))
232 (define-public maven-resolver-transport-wagon
234 (inherit maven-resolver-api)
235 (name "maven-resolver-transport-wagon")
237 `(#:jar-name "maven-resolver-transport-wagon.jar"
238 #:source-dir "maven-resolver-transport-wagon/src/main/java"
239 #:test-dir "maven-resolver-transport-wagon/src/test"
242 (modify-phases %standard-phases
243 (add-before 'build 'generate-sisu
245 (mkdir-p "build/classes/META-INF/sisu")
246 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
248 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
250 (add-before 'build 'generate-components.xml
252 (mkdir-p "build/classes/META-INF/plexus")
253 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
257 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
261 <role>org.eclipse.aether.transport.wagon.WagonConfigurator</role>
262 <role-hint>plexus</role-hint>
263 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator</implementation>
265 <isolated-realm>false</isolated-realm>
268 <role>org.codehaus.plexus.PlexusContainer</role>
270 <field-name>container</field-name>
275 <role>org.eclipse.aether.transport.wagon.WagonProvider</role>
276 <role-hint>plexus</role-hint>
277 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider</implementation>
279 <isolated-realm>false</isolated-realm>
282 <role>org.codehaus.plexus.PlexusContainer</role>
284 <field-name>container</field-name>
289 </component-set>\n"))))
292 `(("maven-resolver-api" ,maven-resolver-api)
293 ("maven-resolver-spi" ,maven-resolver-spi)
294 ("maven-resolver-util" ,maven-resolver-util)
295 ("java-javax-inject" ,java-javax-inject)
296 ("mavne-wagon-provider-api" ,maven-wagon-provider-api)
297 ("java-plexus-component-annotation" ,java-plexus-component-annotations-1.7)
298 ("java-plexus-classworld" ,java-plexus-classworlds)
299 ("java-plexus-plexus-util" ,java-plexus-utils)
300 ("java-slf4j-api" ,java-slf4j-api)
301 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
302 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
306 maven-resolver-test-util
311 (synopsis "Transport implementation for Maven")
312 (description "This package contains a transport implementation based on
313 Maven Wagon, for use in Maven.")))
315 (define-public maven-resolver-transport-file
317 (inherit maven-resolver-api)
318 (name "maven-resolver-transport-file")
320 `(#:jar-name "maven-resolver-transport-file.jar"
321 #:source-dir "maven-resolver-transport-file/src/main/java"
322 #:test-dir "maven-resolver-transport-file/src/test"
325 (modify-phases %standard-phases
326 (add-before 'build 'generate-sisu
328 (mkdir-p "build/classes/META-INF/sisu")
329 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
331 (display "org.eclipse.aether.transport.file.FileTransporterFactory\n"))))))))
333 (list java-eclipse-sisu-inject
334 java-eclipse-sisu-plexus
336 java-plexus-classworlds
337 java-plexus-component-annotations
343 maven-wagon-provider-api))
352 maven-resolver-test-util))
353 (synopsis "Transport implementation for Maven")
354 (description "This package contains a transport implementation based on
355 files, for use in Maven.")))
357 (define-public maven-resolver-transport-http
359 (inherit maven-resolver-api)
360 (name "maven-resolver-transport-http")
362 `(#:jar-name "maven-resolver-transport-http.jar"
363 #:source-dir "maven-resolver-transport-http/src/main/java"
364 #:test-dir "maven-resolver-transport-http/src/test"
366 ;; Tests all fail because
367 ;; org.eclipse.aether.transport.http.SslSocketFactory is not available.
370 (modify-phases %standard-phases
371 (add-before 'build 'generate-sisu
373 (mkdir-p "build/classes/META-INF/sisu")
374 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
376 (display "org.eclipse.aether.transport.http.HttpTransporterFactory\n"))))))))
378 (list java-eclipse-sisu-inject
379 java-eclipse-sisu-plexus
381 java-plexus-classworlds
382 java-plexus-component-annotations
388 maven-wagon-provider-api))
390 (list java-httpcomponents-httpclient
391 java-httpcomponents-httpcore))
393 (list java-aopalliance
396 java-eclipse-aether-api
397 java-eclipse-jetty-http
398 java-eclipse-jetty-io
399 java-eclipse-jetty-server
400 java-eclipse-jetty-servlet
401 java-eclipse-jetty-util
405 java-javaee-servletapi
407 maven-resolver-test-util))
408 (synopsis "Transport implementation for Maven")
409 (description "This package contains a transport implementation based on
410 HTTP, for use in Maven.")))
412 ;; aether is the parent project that was forked into maven-resolver. It used
413 ;; to be used with older versions of Maven, and is still required for some
414 ;; plugins and their dependencies. This version is required for the plugins,
415 ;; even though there are newer versions of this project.
416 (define-public java-sonatype-aether-api
418 (name "java-sonatype-aether-api")
423 (url "https://github.com/sonatype/sonatype-aether")
424 (commit (string-append "aether-" version))))
425 (file-name (git-file-name name version))
428 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
429 (build-system ant-build-system)
431 `(#:jar-name "aether-api.jar"
432 #:source-dir "aether-api/src/main/java"
433 #:test-dir "aether-api/src/test"
435 (modify-phases %standard-phases
436 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
437 (replace 'install (install-from-pom "aether-api/pom.xml")))))
439 (list java-sonatype-forge-parent-pom-6))
440 (native-inputs (list java-junit))
441 (home-page "https://github.com/sonatype/sonatype-aether")
442 (synopsis "Maven repository system API")
443 (description "This package contains the API for the maven repository system.")
444 (license license:asl2.0)))
446 (define-public java-sonatype-aether-spi
448 (inherit java-sonatype-aether-api)
449 (name "java-sonatype-aether-spi")
451 `(#:jar-name "aether-spi.jar"
452 #:source-dir "aether-spi/src/main/java"
453 #:tests? #f; no tests
455 (modify-phases %standard-phases
456 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
458 (list java-sonatype-aether-api))
459 (synopsis "Maven repository system SPI")
460 (description "This package contains the service provider interface (SPI)
461 for repository system implementations and repository connectors.")))
463 (define-public java-sonatype-aether-test-util
465 (inherit java-sonatype-aether-api)
466 (name "java-sonatype-aether-test-util")
468 `(#:jar-name "java-sonatype-aether-test-util.jar"
469 #:source-dir "aether-test-util/src/main/java"
470 #:test-dir "aether-test-util/src/test"))
472 (list java-sonatype-aether-api java-sonatype-aether-spi))
473 (synopsis "Utility classes for testing the maven repository system")
474 (description "This package contains a collection of utility classes to
475 ease testing of the repository system.")))
477 (define-public java-sonatype-aether-util
479 (inherit java-sonatype-aether-api)
480 (name "java-sonatype-aether-util")
482 `(#:jar-name "aether-util.jar"
483 #:source-dir "aether-util/src/main/java"
484 #:test-dir "aether-util/src/test"
486 (modify-phases %standard-phases
487 (replace 'install (install-from-pom "aether-util/pom.xml")))))
489 (list java-sonatype-aether-api))
491 (list java-junit java-sonatype-aether-test-util))
492 (synopsis "Utility classes for the maven repository system")
493 (description "This package contains a collection of utility classes to
494 ease usage of the repository system.")))
496 (define-public java-sonatype-aether-impl
498 (inherit java-sonatype-aether-api)
499 (name "java-sonatype-aether-impl")
501 `(#:jar-name "aether-impl.jar"
502 #:source-dir "aether-impl/src/main/java"
503 #:test-dir "aether-impl/src/test"
505 (modify-phases %standard-phases
506 (add-before 'install 'fix-pom
508 (substitute* "aether-impl/pom.xml"
509 (("org.sonatype.sisu") "org.codehaus.plexus")
510 (("sisu-inject-plexus") "plexus-container-default"))
512 (add-after 'build 'generate-metadata
514 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
515 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
516 "--source" "src/main/java"
517 "--output" "build/classes/META-INF/plexus/components.xml"
518 "--classes" "build/classes"
519 "--descriptors" "build/classes/META-INF")
521 (add-after 'generate-metadata 'rebuild
525 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
527 (list java-sonatype-aether-api
528 java-sonatype-aether-spi
529 java-sonatype-aether-util
530 java-plexus-component-annotations
531 java-plexus-container-default
534 (list java-junit java-plexus-component-metadata
535 java-sonatype-aether-test-util))))
537 ;; This slightly newer version is also required by some plugins
538 (define-public java-sonatype-aether-api-1.13
540 (name "java-sonatype-aether-api")
545 (url "https://github.com/sonatype/sonatype-aether")
546 (commit (string-append "aether-" version))))
547 (file-name (git-file-name name version))
550 "1yl34dqhm6ykb7h63gkssyrdxv3dsa3n5b8d8cvy8rh4qsm6p2yb"))))
551 (build-system ant-build-system)
553 `(#:jar-name "aether-api.jar"
554 #:source-dir "aether-api/src/main/java"
555 #:test-dir "aether-api/src/test"
557 (modify-phases %standard-phases
558 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
559 (replace 'install (install-from-pom "aether-api/pom.xml")))))
561 `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-10)))
562 (native-inputs `(("java-junit" ,java-junit)))
563 (home-page "https://github.com/sonatype/sonatype-aether")
564 (synopsis "Maven repository system API")
565 (description "This package contains the API for the maven repository system.")
566 (license license:asl2.0)))
568 (define-public java-sonatype-aether-spi-1.13
570 (inherit java-sonatype-aether-api-1.13)
571 (name "java-sonatype-aether-spi")
573 `(#:jar-name "aether-spi.jar"
574 #:source-dir "aether-spi/src/main/java"
575 #:tests? #f; no tests
577 (modify-phases %standard-phases
578 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
580 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)))
581 (synopsis "Maven repository system SPI")
582 (description "This package contains the service provider interface (SPI)
583 for repository system implementations and repository connectors.")))
585 (define-public java-sonatype-aether-test-util-1.13
587 (inherit java-sonatype-aether-api-1.13)
588 (name "java-sonatype-aether-test-util")
590 `(#:jar-name "java-sonatype-aether-test-util.jar"
591 #:source-dir "aether-test-util/src/main/java"
592 #:test-dir "aether-test-util/src/test"))
594 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)
595 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi-1.13)))
596 (synopsis "Utility classes for testing the maven repository system")
597 (description "This package contains a collection of utility classes to
598 ease testing of the repository system.")))
600 (define-public java-sonatype-aether-util-1.13
602 (inherit java-sonatype-aether-api-1.13)
603 (name "java-sonatype-aether-util")
605 `(#:jar-name "aether-util.jar"
606 #:source-dir "aether-util/src/main/java"
607 #:test-dir "aether-util/src/test"
609 (modify-phases %standard-phases
610 (replace 'install (install-from-pom "aether-util/pom.xml")))))
612 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)))
614 `(("java-junit" ,java-junit)
615 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util-1.13)))
616 (synopsis "Utility classes for the maven repository system")
617 (description "This package contains a collection of utility classes to
618 ease usage of the repository system.")))
620 ;; Again, this old version is required by some maven plugins
621 (define-public java-eclipse-aether-api
623 (name "java-eclipse-aether-api")
628 (url "https://github.com/eclipse/aether-core")
629 (commit "aether-1.0.2.v20150114")))
630 (file-name (git-file-name name version))
633 "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
634 (build-system ant-build-system)
636 `(#:jar-name "aether-api.jar"
637 #:source-dir "aether-api/src/main/java"
638 #:test-dir "aether-api/src/test"
640 (modify-phases %standard-phases
641 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
642 (replace 'install (install-from-pom "aether-api/pom.xml")))))
643 (native-inputs (list java-junit))
644 (home-page "https://github.com/sonatype/sonatype-aether")
645 (synopsis "Maven repository system API")
646 (description "This package contains the API for the maven repository system.")
647 (license license:asl2.0)))
649 (define-public java-eclipse-aether-spi
651 (inherit java-eclipse-aether-api)
652 (name "java-eclipse-aether-spi")
654 `(#:jar-name "aether-spi.jar"
655 #:source-dir "aether-spi/src/main/java"
656 #:test-dir "aether-spi/src/test"
658 (modify-phases %standard-phases
659 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
661 (list java-eclipse-aether-api))
662 (synopsis "Maven repository system SPI")
663 (description "This package contains the service provider interface (SPI)
664 for repository system implementations and repository connectors.")))
666 (define-public java-eclipse-aether-test-util
668 (inherit java-eclipse-aether-api)
669 (name "java-eclipse-aether-test-util")
671 `(#:jar-name "aether-test-util.jar"
672 #:source-dir "aether-test-util/src/main/java"
673 #:test-dir "aether-test-util/src/test"
675 (modify-phases %standard-phases
676 (replace 'install (install-from-pom "aether-util/pom.xml")))))
678 (list java-eclipse-aether-api java-eclipse-aether-spi))
679 (synopsis "Utility classes for testing the maven repository system")
680 (description "This package contains a collection of utility classes to
681 ease testing of the repository system.")))
683 (define-public java-eclipse-aether-util
685 (inherit java-eclipse-aether-api)
686 (name "java-eclipse-aether-util")
688 `(#:jar-name "aether-util.jar"
689 #:source-dir "aether-util/src/main/java"
690 #:test-dir "aether-util/src/test"
692 (modify-phases %standard-phases
693 (replace 'install (install-from-pom "aether-util/pom.xml")))))
695 (list java-eclipse-aether-api))
697 (list java-eclipse-aether-test-util java-junit))
698 (synopsis "Utility classes for the maven repository system")
699 (description "This package contains a collection of utility classes to
700 ease usage of the repository system.")))
702 (define-public java-eclipse-aether-impl
704 (inherit java-eclipse-aether-api)
705 (name "java-eclipse-aether-impl")
707 `(#:jar-name "aether-impl.jar"
708 #:source-dir "aether-impl/src/main/java"
709 #:test-dir "aether-impl/src/test"
711 (modify-phases %standard-phases
712 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
714 (list java-eclipse-aether-api
715 java-eclipse-aether-spi
716 java-eclipse-aether-util
718 java-eclipse-sisu-inject
722 (list java-eclipse-aether-test-util java-junit))))
724 (define-public maven-shared-utils
726 (name "maven-shared-utils")
730 (uri (string-append "mirror://apache/maven/shared/"
731 "maven-shared-utils-" version "-source-release.zip"))
734 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
735 (build-system ant-build-system)
737 `(#:jar-name "maven-shared-utils.jar"
738 #:source-dir "src/main/java"
740 (modify-phases %standard-phases
741 (add-before 'build 'fix-/bin/sh-invocation
743 (substitute* (find-files "src" ".*.java$")
744 (("/bin/sh") (which "sh")))
746 (add-before 'check 'remove-cyclic-dep
749 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
752 (install-from-pom "pom.xml")))))
754 `(("java-jansi" ,java-jansi)
755 ("java-commons-io" ,java-commons-io)
756 ("java-jsr305" ,java-jsr305)
757 ("java-plexus-container-default" ,java-plexus-container-default)
758 ("maven-parent-pom-30" ,maven-parent-pom-30)))
760 (list unzip java-junit java-hamcrest-core java-commons-lang3))
761 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
762 (synopsis "Plexus-util replacement for maven")
763 (description "This project aims to be a functional replacement for
764 plexus-utils in Maven. It is not a 100% API compatible replacement but a
765 replacement with improvements.")
766 (license license:asl2.0)))
768 (define-public maven-plugin-annotations
770 (name "maven-plugin-annotations")
774 (uri (string-append "mirror://apache/maven/"
775 "plugin-tools/maven-plugin-tools-" version
776 "-source-release.zip"))
777 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
778 (build-system ant-build-system)
780 `(#:jar-name "maven-plugin-annotations.jar"
781 #:source-dir "maven-plugin-annotations/src/main/java"
784 (modify-phases %standard-phases
786 (install-from-pom "maven-plugin-annotations/pom.xml")))))
788 (list maven-artifact maven-plugin-tools-parent-pom))
791 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
792 (synopsis "Java 5 annotations to use in Mojos")
793 (description "This package contains Java 5 annotations for use in Mojos.")
794 (license license:asl2.0)))
796 (define maven-plugin-tools-parent-pom
798 (inherit maven-plugin-annotations)
799 (name "maven-plugin-tools-parent-pom")
803 (modify-phases %standard-phases
807 (install-pom-file "pom.xml")))))
808 (propagated-inputs '())))
810 (define-public maven-wagon-provider-api
812 (name "maven-wagon-provider-api")
816 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
817 "wagon-" version "-source-release.zip"))
820 "1rnviw0yr4g5902fb8pkd1gyvci4bz7hndjvhkqmnkj7ay0y6mf0"))))
821 (build-system ant-build-system)
823 `(#:jar-name "maven-wagon-provider-api.jar"
824 #:source-dir "wagon-provider-api/src/main/java"
825 #:test-dir "wagon-provider-api/src/test"
827 (modify-phases %standard-phases
829 (install-from-pom "wagon-provider-api/pom.xml")))))
831 `(("java-plexus-utils" ,java-plexus-utils)
832 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
834 (list unzip java-junit java-easymock))
835 (home-page "https://maven.apache.org/wagon")
836 (synopsis "Transport abstraction for Maven")
837 (description "Maven Wagon is a transport abstraction that is used in Maven's
838 artifact and repository handling code.")
839 (license license:asl2.0)))
841 (define maven-wagon-parent-pom
843 (inherit maven-wagon-provider-api)
847 (modify-phases %standard-phases
851 (install-pom-file "pom.xml")))))
853 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
855 `(("unzip" ,unzip)))))
857 (define-public maven-wagon-provider-test
859 (inherit maven-wagon-provider-api)
860 (name "maven-wagon-provider-test")
862 `(#:jar-name "maven-wagon-provider-test.jar"
863 #:source-dir "wagon-provider-test/src/main/java"
864 #:tests? #f; no tests
867 `(("java-plexus-utils" ,java-plexus-utils)
868 ("java-plexus-container-default" ,java-plexus-container-default)
869 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
870 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
871 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
872 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
873 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
874 ("java-slf4j-api" ,java-slf4j-api)
875 ("java-javaee-servletapi" ,java-javaee-servletapi)
876 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
877 (synopsis "Test classes from maven-wagon")
878 (description "Maven Wagon is a transport abstraction that is used in Maven's
879 artifact and repository handling code. This package contains common test
880 classes used in multiple maven-wagon components.")))
882 (define-public maven-wagon-file
884 (inherit maven-wagon-provider-api)
885 (name "maven-wagon-file")
887 `(#:jar-name "maven-wagon-file.jar"
888 #:source-dir "wagon-providers/wagon-file/src/main/java"
889 #:test-dir "wagon-providers/wagon-file/src/test"
892 (modify-phases %standard-phases
893 (add-before 'check 'fix-paths
895 ;; Tests assume they are run by maven, which copies test resources
896 ;; to target. Our ant-build-system does the same, but with the
898 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
899 (("target") "build"))
901 (add-after 'build 'generate-metadata
903 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
904 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
905 "--source" "wagon-providers/wagon-file/src/main/java"
906 "--output" "build/classes/META-INF/plexus/components.xml"
907 "--classes" "build/classes"
908 "--descriptors" "build/classes/META-INF")
910 (add-after 'generate-metadata 'rebuild
915 (list java-plexus-utils maven-wagon-provider-api))
917 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
918 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
919 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
920 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
921 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
922 ("java-plexus-classworlds" ,java-plexus-classworlds)
923 ("java-guava" ,java-guava)
924 ("java-guice" ,java-guice)
925 ("java-javax-inject" ,java-javax-inject)
926 ("java-cglib" ,java-cglib)
927 ("java-slf4j-api" ,java-slf4j-api)
928 ("java-plexus-utils" ,java-plexus-utils)
929 ("java-plexus-cli" ,java-plexus-cli)
930 ("maven-plugin-api" ,maven-plugin-api)
931 ("maven-plugin-annotations" ,maven-plugin-annotations)
932 ("maven-core" ,maven-core)
933 ("maven-model" ,maven-model)
934 ("java-commons-cli" ,java-commons-cli)
935 ("java-qdox" ,java-qdox)
936 ("java-jdom2" ,java-jdom2)
937 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
938 ,@(package-native-inputs maven-wagon-provider-api)))
939 (synopsis "Wagon provider that gets and puts artifacts using the file system")
940 (description "Maven Wagon is a transport abstraction that is used in Maven's
941 artifact and repository handling code. It uses providers, that are tools to
942 manage artifacts and deployment. This package contains the file provider which
943 gets and puts artifacts using the file system.")))
945 (define-public maven-wagon-tck-http
947 (inherit maven-wagon-provider-api)
948 (name "maven-wagon-tck-http")
950 `(#:jar-name "maven-wagon-tck-http.jar"
951 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
952 #:tests? #f; no tests
955 `(("java-plexus-util" ,java-plexus-utils)
956 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
957 ("java-javaee-servletapi" ,java-javaee-servletapi)
958 ("java-slf4j-api" ,java-slf4j-api)
959 ("java-commons-codec" ,java-commons-codec)
960 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
961 ("java-plexus-classworlds" ,java-plexus-classworlds)
962 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
963 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
964 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
965 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
966 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
967 (synopsis "Wagon HTTP Test Compatibility Kit")
968 (description "Maven Wagon is a transport abstraction that is used in Maven's
969 artifact and repository handling code. This package contains the HTTP
970 Test Compatibility Kit.")))
972 (define-public maven-wagon-http-shared
974 (inherit maven-wagon-provider-api)
975 (name "maven-wagon-http-shared")
977 `(#:jar-name "maven-wagon-http-shared.jar"
978 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
979 #:test-dir "wagon-providers/wagon-http-shared/src/test"
982 (modify-phases %standard-phases
983 (add-after 'build 'generate-metadata
985 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
986 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
987 "--source" "wagon-providers/wagon-http-shared/src/main/java"
988 "--output" "build/classes/META-INF/plexus/components.xml"
989 "--classes" "build/classes"
990 "--descriptors" "build/classes/META-INF")
992 (add-after 'generate-metadata 'rebuild
997 (list java-plexus-utils
998 java-httpcomponents-httpclient
999 java-httpcomponents-httpcore
1002 maven-wagon-provider-api))
1004 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
1005 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1006 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1007 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1008 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1009 ("java-plexus-classworlds" ,java-plexus-classworlds)
1010 ("java-guava" ,java-guava)
1011 ("java-guice" ,java-guice)
1012 ("java-javax-inject" ,java-javax-inject)
1013 ("java-cglib" ,java-cglib)
1014 ("java-slf4j-api" ,java-slf4j-api)
1015 ("java-plexus-utils" ,java-plexus-utils)
1016 ("java-plexus-cli" ,java-plexus-cli)
1017 ("maven-plugin-api" ,maven-plugin-api)
1018 ("maven-plugin-annotations" ,maven-plugin-annotations)
1019 ("maven-core" ,maven-core)
1020 ("maven-model" ,maven-model)
1021 ("java-commons-cli" ,java-commons-cli)
1022 ("java-qdox" ,java-qdox)
1023 ("java-jdom2" ,java-jdom2)
1024 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1025 ,@(package-native-inputs maven-wagon-provider-api)))
1026 (synopsis "Shared Library for wagon providers supporting HTTP")
1027 (description "Maven Wagon is a transport abstraction that is used in Maven's
1028 artifact and repository handling code. It uses providers, that are tools to
1029 manage artifacts and deployment. This package contains a shared library for
1030 wagon providers supporting HTTP.")))
1032 (define-public maven-wagon-http
1034 (inherit maven-wagon-provider-api)
1035 (name "maven-wagon-http")
1037 `(#:jar-name "maven-wagon-http.jar"
1038 #:source-dir "wagon-providers/wagon-http/src/main/java"
1039 #:test-dir "wagon-providers/wagon-http/src/test"
1040 #:test-exclude (list
1042 ;; FIXME: javax.net.ssl.SSLHandshakeException:
1043 ;; sun.security.validator.ValidatorException:
1044 ;; PKIX path building failed:
1045 ;; sun.security.provider.certpath.SunCertPathBuilderException:
1046 ;; unable to find valid certification path to requested target
1047 "**/HttpsWagonPreemptiveTest.java"
1048 "**/HttpsWagonTest.java"
1050 "**/HugeFileDownloadTest.java"
1055 (modify-phases %standard-phases
1056 (add-before 'build 'copy-resources
1058 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
1059 "build/classes/META-INF/plexus")
1061 (add-before 'check 'fix-resource-path
1063 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
1064 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
1065 (("src/test") "wagon-providers/wagon-http/src/test"))
1068 (list java-plexus-utils
1069 java-httpcomponents-httpclient
1070 java-httpcomponents-httpcore
1071 maven-wagon-http-shared
1072 maven-wagon-tck-http
1073 maven-wagon-provider-api))
1075 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
1076 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1077 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1078 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1079 ("java-plexus-container-default" ,java-plexus-container-default)
1080 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1081 ("java-plexus-classworlds" ,java-plexus-classworlds)
1082 ("java-guava" ,java-guava)
1083 ("java-guice" ,java-guice)
1084 ("java-inject" ,java-javax-inject)
1085 ("java-cglib" ,java-cglib)
1086 ("java-slf4j-api" ,java-slf4j-api)
1087 ("java-plexus-utils" ,java-plexus-utils)
1088 ("java-plexus-cli" ,java-plexus-cli)
1089 ("maven-plugin-api" ,maven-plugin-api)
1090 ("maven-plugin-annotations" ,maven-plugin-annotations)
1091 ("maven-slf4j-provider" ,maven-slf4j-provider)
1092 ("maven-core" ,maven-core)
1093 ("maven-model" ,maven-model)
1094 ("java-commons-cli" ,java-commons-cli)
1095 ("java-qdox" ,java-qdox)
1096 ("java-jdom2" ,java-jdom2)
1097 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1098 ("java-javaee-servletapi" ,java-javaee-servletapi)
1099 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
1100 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
1101 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
1102 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
1103 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
1104 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
1105 ("java-hamcrest-core" ,java-hamcrest-core)
1106 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1107 ("java-commons-codec" ,java-commons-codec)
1108 ("java-commons-io" ,java-commons-io)
1109 ("java-jsoup" ,java-jsoup)
1110 ,@(package-native-inputs maven-wagon-provider-api)))
1111 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
1112 (description "Maven Wagon is a transport abstraction that is used in Maven's
1113 artifact and repository handling code. It uses providers, that are tools to
1114 manage artifacts and deployment. This package contains a Wagon provider that
1115 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
1123 (uri (string-append "mirror://apache/maven/"
1124 "maven-3/" version "/source/"
1125 "apache-maven-" version "-src.tar.gz"))
1126 (sha256 (base32 "16xbhkhhp05gskgbhrf1ia8riivvkhpk822n9xgnad61f9hzp2r9"))
1127 (modules '((guix build utils)))
1130 (for-each delete-file (find-files "." "\\.jar$"))
1133 (search-patches "maven-generate-component-xml.patch"
1134 "maven-generate-javax-inject-named.patch"))))
1135 (build-system ant-build-system)
1139 (modify-phases %standard-phases
1142 (add-before 'install 'fix-dependencies
1144 (substitute* "pom.xml"
1145 (("classWorldsVersion>.*")
1147 "classWorldsVersion>"
1148 ,(package-version java-plexus-classworlds)
1149 "</classWorldsVersion>\n"))
1150 (("commonsCliVersion>.*")
1152 "commonsCliVersion>"
1153 ,(package-version java-commons-cli)
1154 "</commonsCliVersion>\n"))
1155 (("commonsLangVersion>.*")
1157 "commonsLangVersion>"
1158 ,(package-version java-commons-lang3)
1159 "</commonsLangVersion>\n"))
1160 (("plexusUtilsVersion>.*")
1162 "plexusUtilsVersion>"
1163 ,(package-version java-plexus-utils)
1164 "</plexusUtilsVersion>\n"))
1165 (("plexusInterpolationVersion>.*")
1167 "plexusInterpolationVersion>"
1168 ,(package-version java-plexus-interpolation)
1169 "</plexusInterpolationVersion>\n"))
1170 (("guiceVersion>.*")
1173 ,(package-version java-guice)
1174 "</guiceVersion>\n"))
1175 (("sisuInjectVersion>.*")
1177 "sisuInjectVersion>"
1178 ,(package-version java-eclipse-sisu-inject)
1179 "</sisuInjectVersion>\n"))
1180 (("securityDispatcherVersion>.*")
1182 "securityDispatcherVersion>"
1183 ,(package-version java-plexus-sec-dispatcher)
1184 "</securityDispatcherVersion>\n"))
1185 (("cipherVersion>.*")
1188 ,(package-version java-plexus-cipher)
1189 "</cipherVersion>\n"))
1190 (("slf4jVersion>.*")
1193 ,(package-version java-slf4j-api)
1194 "</slf4jVersion>\n"))
1195 (("<classifier>no_aop</classifier>") ""))
1198 (install-pom-file "pom.xml")))))
1200 `(("maven-parent-pom-34" ,maven-parent-pom-34)))
1201 (home-page "https://maven.apache.org/")
1202 (synopsis "Build system")
1203 (description "Apache Maven is a software project management and comprehension
1204 tool. This package contains the Maven pom file, used by all maven components.")
1205 (license license:asl2.0)))
1207 (define-public maven-artifact
1210 (name "maven-artifact")
1212 `(#:jar-name "maven-artifact.jar"
1213 #:source-dir "maven-artifact/src/main/java"
1214 #:test-dir "maven-artifact/src/test"
1215 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1217 (modify-phases %standard-phases
1219 (install-from-pom "maven-artifact/pom.xml")))))
1221 (list java-plexus-utils java-commons-lang3 maven-pom))
1224 (description "Apache Maven is a software project management and comprehension
1225 tool. This package contains the Maven Artifact classes, providing the
1226 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1227 jar file is executable and provides a little tool to display how Maven parses
1228 and compares versions:")))
1230 (define-public maven-model
1232 (inherit maven-artifact)
1233 (name "maven-model")
1235 `(#:jar-name "maven-model.jar"
1236 #:source-dir "maven-model/src/main/java"
1237 #:test-dir "maven-model/src/test"
1239 (modify-phases %standard-phases
1240 (add-before 'build 'generate-models
1241 (lambda* (#:key inputs #:allow-other-keys)
1242 (define (modello-single-mode file version mode)
1243 (invoke "java" "org.codehaus.modello.ModelloCli"
1244 file mode "maven-model/src/main/java" version
1246 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1247 (modello-single-mode file "4.0.0" "java")
1248 (modello-single-mode file "4.0.0" "xpp3-reader")
1249 (modello-single-mode file "4.0.0" "xpp3-extended-reader")
1250 (modello-single-mode file "4.0.0" "xpp3-writer")
1251 (modello-single-mode file "4.0.0" "xpp3-extended-writer"))
1253 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1255 (list java-commons-lang3 java-plexus-utils maven-pom))
1257 (list java-modello-core
1259 java-eclipse-sisu-plexus
1260 java-plexus-component-annotations
1264 java-eclipse-sisu-inject
1266 java-plexus-classworlds
1268 java-geronimo-xbean-reflect
1269 java-plexus-build-api
1271 java-modello-plugins-java
1272 java-modello-plugins-xml
1273 java-modello-plugins-xpp3
1276 (description "Apache Maven is a software project management and comprehension
1277 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1278 so really just plain Java objects.")))
1280 (define-public maven-builder-support
1282 (inherit maven-artifact)
1283 (name "maven-builder-support")
1285 `(#:jar-name "maven-builder-support.jar"
1286 #:source-dir "maven-builder-support/src/main/java"
1288 #:test-dir "maven-builder-support/src/test"
1290 (modify-phases %standard-phases
1291 (add-before 'check 'fix-paths
1293 (with-directory-excursion "maven-builder-support/src/test/java"
1295 '("org/apache/maven/building/FileSourceTest.java"
1296 "org/apache/maven/building/UrlSourceTest.java")
1297 (("target/test-classes") "maven-builder-support/src/test/resources")))
1299 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1304 (description "Apache Maven is a software project management and comprehension
1305 tool. This package contains a support library for descriptor builders (model,
1306 setting, toolchains)")))
1308 (define-public maven-settings
1310 (inherit maven-artifact)
1311 (name "maven-settings")
1313 `(#:jar-name "maven-settings.jar"
1314 #:source-dir "maven-settings/src/main/java"
1315 #:tests? #f; no tests
1317 (modify-phases %standard-phases
1318 (add-before 'build 'generate-models
1319 (lambda* (#:key inputs #:allow-other-keys)
1320 (define (modello-single-mode file version mode)
1321 (invoke "java" "org.codehaus.modello.ModelloCli"
1322 file mode "maven-settings/src/main/java" version
1324 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1325 (modello-single-mode file "1.2.0" "java")
1326 (modello-single-mode file "1.2.0" "xpp3-reader")
1327 (modello-single-mode file "1.2.0" "xpp3-writer"))
1329 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1331 (list java-plexus-utils maven-pom))
1333 (list java-modello-core
1335 ;("container" ,java-plexus-container-default)
1336 java-eclipse-sisu-plexus
1337 java-plexus-component-annotations
1340 java-eclipse-sisu-inject
1342 java-plexus-classworlds
1345 java-geronimo-xbean-reflect
1346 java-plexus-build-api
1348 java-modello-plugins-java
1349 java-modello-plugins-xml
1350 java-modello-plugins-xpp3))
1351 (description "Apache Maven is a software project management and comprehension
1352 tool. This package contains strictly the model for Maven settings, that is
1353 simply plain java objects.")))
1355 (define-public maven-settings-builder
1357 (inherit maven-artifact)
1358 (name "maven-settings-builder")
1360 `(#:jar-name "maven-settings-builder.jar"
1361 #:source-dir "maven-settings-builder/src/main/java"
1363 #:test-dir "maven-settings-builder/src/test"
1365 (modify-phases %standard-phases
1366 (add-before 'build 'generate-sisu-named
1368 (mkdir-p "build/classes/META-INF/sisu")
1369 (chmod "sisu.sh" #o755)
1370 (invoke "./sisu.sh" "maven-settings-builder/src/main/java"
1371 "build/classes/META-INF/sisu/javax.inject.Named")))
1372 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1374 (list java-plexus-utils
1375 java-plexus-interpolation
1376 java-plexus-sec-dispatcher
1377 maven-builder-support
1381 (list java-junit java-javax-inject java-plexus-component-annotations))
1382 (description "Apache Maven is a software project management and comprehension
1383 tool. This package contains the effective model builder, with profile activation,
1384 inheritance, interpolation, @dots{}")))
1386 (define-public maven-model-builder
1388 (inherit maven-artifact)
1389 (name "maven-model-builder")
1391 `(#:jar-name "maven-model-builder.jar"
1392 #:source-dir "maven-model-builder/src/main/java"
1394 #:test-dir "maven-model-builder/src/test"
1396 (modify-phases %standard-phases
1397 (add-before 'build 'copy-resources
1399 (copy-recursively "maven-model-builder/src/main/resources"
1402 (add-before 'build 'generate-sisu-named
1404 (mkdir-p "build/classes/META-INF/sisu")
1405 (chmod "sisu.sh" #o755)
1406 (invoke "./sisu.sh" "maven-model-builder/src/main/java"
1407 "build/classes/META-INF/sisu/javax.inject.Named")))
1408 (add-before 'check 'fix-paths
1410 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1411 (("src/test") "maven-model-builder/src/test"))
1414 (install-from-pom "maven-model-builder/pom.xml")))))
1416 (list java-plexus-interpolation
1419 maven-builder-support
1423 `(("java-junit" ,java-junit)
1424 ("java-guava" ,java-guava)
1425 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1426 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1427 ("java-powermock-reflect" ,java-powermock-reflect)
1428 ("java-objenesis" ,java-objenesis)
1429 ("guice" ,java-guice)
1430 ("java-cglib" ,java-cglib)
1431 ("sisu-inject" ,java-eclipse-sisu-inject)
1432 ("javax-inject" ,java-javax-inject)
1433 ("java-xmlunit" ,java-xmlunit)
1434 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1435 ("xbean" ,java-geronimo-xbean-reflect)
1436 ("classworlds" ,java-plexus-classworlds)))
1437 (description "Apache Maven is a software project management and comprehension
1438 tool. This package contains the effective model builder, with profile activation,
1439 inheritance, interpolation, @dots{}")))
1441 (define-public maven-repository-metadata
1443 (inherit maven-artifact)
1444 (name "maven-repository-metadata")
1446 `(#:jar-name "maven-repository-metadata.jar"
1447 #:source-dir "maven-repository-metadata/src/main/java"
1449 #:tests? #f; no tests
1451 (modify-phases %standard-phases
1452 (add-before 'build 'generate-models
1453 (lambda* (#:key inputs #:allow-other-keys)
1454 (define (modello-single-mode file version mode)
1455 (invoke "java" "org.codehaus.modello.ModelloCli"
1456 file mode "maven-repository-metadata/src/main/java" version
1458 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1459 (modello-single-mode file "1.1.0" "java")
1460 (modello-single-mode file "1.1.0" "xpp3-reader")
1461 (modello-single-mode file "1.1.0" "xpp3-writer"))
1464 (install-from-pom "maven-repository-metadata/pom.xml")))))
1466 (list java-plexus-utils maven-pom))
1468 `(("modello" ,java-modello-core)
1470 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1471 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1472 ("java-guice" ,java-guice)
1473 ("java-cglib" ,java-cglib)
1474 ("java-asm" ,java-asm)
1475 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1476 ("java-javax-inject" ,java-javax-inject)
1477 ("java-plexus-utils" ,java-plexus-utils)
1478 ("java-plexus-classworlds" ,java-plexus-classworlds)
1479 ("java-guava" ,java-guava)
1480 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1481 ("java-plexus-build-api" ,java-plexus-build-api)
1483 ("java-modello-plugins-java" ,java-modello-plugins-java)
1484 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1485 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1486 (description "Apache Maven is a software project management and comprehension
1487 tool. This package contains strictly the model for Maven Repository Metadata,
1488 so really just plain objects.")))
1490 (define-public maven-resolver-provider
1492 (inherit maven-artifact)
1493 (name "maven-resolver-provider")
1495 `(#:jar-name "maven-resolver-provider.jar"
1496 #:source-dir "maven-resolver-provider/src/main/java"
1497 #:test-dir "maven-resolver-provider/src/test"
1499 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1501 (modify-phases %standard-phases
1502 (add-before 'build 'generate-sisu-named
1504 (mkdir-p "build/classes/META-INF/sisu")
1505 (chmod "./sisu.sh" #o755)
1506 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1507 "build/classes/META-INF/sisu/javax.inject.Named")
1510 (install-from-pom "maven-resolver-provider/pom.xml")))))
1518 maven-builder-support
1519 maven-repository-metadata
1521 java-plexus-component-annotations
1523 java-javax-inject))))
1525 (define-public maven-plugin-api
1527 (inherit maven-artifact)
1528 (name "maven-plugin-api")
1530 `(#:jar-name "maven-plugin-api.jar"
1531 #:source-dir "maven-plugin-api/src/main/java"
1533 #:test-dir "maven-plugin-api/src/test"
1535 (modify-phases %standard-phases
1536 (add-before 'build 'generate-models
1537 (lambda* (#:key inputs #:allow-other-keys)
1538 (define (modello-single-mode file version mode)
1539 (invoke "java" "org.codehaus.modello.ModelloCli"
1540 file mode "maven-plugin-api/src/main/java" version
1542 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1543 (modello-single-mode file "1.0.0" "java")
1544 (modello-single-mode file "1.0.0" "xpp3-reader")
1545 (modello-single-mode file "1.0.0" "xpp3-writer"))
1548 (install-from-pom "maven-plugin-api/pom.xml")))))
1550 `(("maven-artifact" ,maven-artifact)
1551 ("maven-model" ,maven-model)
1552 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1553 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1554 ("guice" ,java-guice)
1555 ("java-cglib" ,java-cglib)
1556 ("sisu-inject" ,java-eclipse-sisu-inject)
1557 ("javax-inject" ,java-javax-inject)
1558 ("utils" ,java-plexus-utils)))
1560 `(("modello" ,java-modello-core)
1562 ("classworlds" ,java-plexus-classworlds)
1563 ("guava" ,java-guava)
1564 ("xbean" ,java-geronimo-xbean-reflect)
1565 ("build-api" ,java-plexus-build-api)
1567 ("java" ,java-modello-plugins-java)
1568 ("xml" ,java-modello-plugins-xml)
1569 ("xpp3" ,java-modello-plugins-xpp3)
1571 ("java-junit" ,java-junit)))
1572 (description "Apache Maven is a software project management and comprehension
1573 tool. This package contains strictly the API for plugins -- composed of goals
1574 implemented by Mojos -- development.
1576 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1577 generally generated from plugin sources using maven-plugin-plugin.")))
1579 (define-public maven-core-bootstrap
1582 (inherit maven-artifact)
1585 `(#:jar-name "maven-core.jar"
1586 #:source-dir "src/main/java"
1588 ;; Tests need maven-compat, which requires maven-core
1591 (modify-phases %standard-phases
1592 (add-before 'configure 'chdir
1594 ;; Required for generating components.xml in maven-core
1595 (chdir "maven-core")
1597 (add-before 'build 'copy-resources
1599 (mkdir-p "build/classes/")
1600 (copy-recursively "src/main/resources" "build/classes")
1602 (add-after 'copy-resources 'fill-properties
1604 ;; This file controls the output of some mvn subcommands, such as
1606 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1607 (("\\$\\{buildNumber\\}") "guix_build")
1608 (("\\$\\{timestamp\\}") "0")
1609 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1610 (("\\$\\{distributionId\\}") "apache-maven")
1611 (("\\$\\{distributionShortName\\}") "Maven")
1612 (("\\$\\{distributionName\\}") "Apache Maven"))
1614 (add-before 'build 'generate-sisu-named
1616 (mkdir-p "build/classes/META-INF/sisu")
1617 (chmod "../sisu.sh" #o755)
1618 (invoke "../sisu.sh" "src/main/java"
1619 "build/classes/META-INF/sisu/javax.inject.Named")
1621 (add-before 'build 'generate-models
1622 (lambda* (#:key inputs #:allow-other-keys)
1623 (define (modello-single-mode file version mode)
1624 (invoke "java" "org.codehaus.modello.ModelloCli"
1625 file mode "src/main/java" version
1627 (let ((file "src/main/mdo/toolchains.mdo"))
1628 (modello-single-mode file "1.1.0" "java")
1629 (modello-single-mode file "1.1.0" "xpp3-reader")
1630 (modello-single-mode file "1.1.0" "xpp3-writer"))
1632 (add-before 'install 'fix-pom
1634 (substitute* "pom.xml"
1635 (("<classifier>no_aop</classifier>") ""))
1638 (install-from-pom "pom.xml")))))
1640 `(("maven-artifact" ,maven-artifact)
1641 ("maven-resolver-provider" ,maven-resolver-provider)
1642 ("maven-builder-support" ,maven-builder-support)
1643 ("maven-model" ,maven-model)
1644 ("maven-model-builder" ,maven-model-builder)
1645 ("maven-settings" ,maven-settings)
1646 ("maven-settings-builder" ,maven-settings-builder)
1647 ("maven-plugin-api" ,maven-plugin-api)
1648 ("maven-repository-metadata" ,maven-repository-metadata)
1649 ("maven-shared-utils" ,maven-shared-utils)
1650 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1651 ("java-plexus-utils" ,java-plexus-utils)
1652 ("java-commons-lang3" ,java-commons-lang3)
1653 ("java-guava" ,java-guava)
1654 ("java-guice" ,java-guice)
1655 ("maven-resolver-api" ,maven-resolver-api)
1656 ("maven-resolver-spi" ,maven-resolver-spi)
1657 ("maven-resolver-util" ,maven-resolver-util)
1658 ("maven-resolver-impl" ,maven-resolver-impl)
1659 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1660 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1661 ("java-javax-inject" ,java-javax-inject)
1662 ("java-plexus-classworld" ,java-plexus-classworlds)))
1664 `(("java-modello-core" ,java-modello-core)
1665 ("java-cglib" ,java-cglib)
1666 ("java-plexus-classworlds" ,java-plexus-classworlds)
1667 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1668 ("java-plexus-build-api" ,java-plexus-build-api)
1669 ("java-modello-plugins-java" ,java-modello-plugins-java)
1670 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1671 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1673 ("java-junit" ,java-junit)
1674 ("java-mockito-1" ,java-mockito-1)
1675 ("java-commons-jxpath" ,java-commons-jxpath)))
1676 (description "Apache Maven is a software project management and comprehension
1677 tool. This package contains the maven core classes managing the whole build
1680 (define-public maven-core
1682 (inherit maven-core-bootstrap)
1684 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1686 `(modify-phases ,phases
1687 (add-before 'build 'modify-metainf
1689 (substitute* "build.xml"
1691 (string-append "message=\"Implementation-Version: "
1692 (package-version maven) "\n\"")))
1694 (add-before 'build 'add-maven-files
1696 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1697 (copy-file "pom.xml"
1698 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1699 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1701 (format #t "version=~a~%
1702 groupId=org.apache.maven~%
1703 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1705 (add-after 'build 'generate-metadata
1707 (define (components file)
1708 (let ((sxml (with-input-from-file file
1709 (lambda _ (xml->sxml (current-input-port)
1710 #:trim-whitespace? #t)))))
1711 ;; Select the list of <component>s inside the <component-set>
1712 ;; and <components>.
1713 ((@ (ice-9 match) match) sxml
1717 ('components x ...))) x))))
1718 (use-modules (sxml simple))
1719 (delete-file "build/classes/META-INF/plexus/components.xml")
1720 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1721 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1722 "--source" "build/classes/META-INF/plexus"
1723 "--output" "build/classes/META-INF/plexus/components.t.xml"
1724 "--classes" "build/classes"
1725 "--descriptors" "build/classes")
1726 ;; Now we merge all other components from hand-written xml
1727 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1728 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1729 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1730 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1731 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1733 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1737 ,@(append generated-xml components-xml
1738 default-bindings-xml
1739 artifact-handlers-xml)))))))
1741 (add-after 'generate-metadata 'fix-plugin-versions
1743 ;; This file controls the default plugins used by Maven. Ensure
1744 ;; we use the versions we have packaged by default
1745 (substitute* '("build/classes/META-INF/plexus/default-bindings.xml"
1746 "build/classes/META-INF/plexus/components.xml")
1747 (("maven-install-plugin:[0-9.]+")
1748 (string-append "maven-install-plugin:"
1749 ,(package-version maven-install-plugin)))
1750 (("maven-resources-plugin:[0-9.]+")
1751 (string-append "maven-resources-plugin:"
1752 ,(package-version maven-resources-plugin)))
1753 (("maven-compiler-plugin:[0-9.]+")
1754 (string-append "maven-compiler-plugin:"
1755 ,(package-version maven-compiler-plugin)))
1756 (("maven-surefire-plugin:[0-9.]+")
1757 (string-append "maven-surefire-plugin:"
1758 ,(package-version maven-surefire-plugin)))
1759 (("maven-jar-plugin:[0-9.]+")
1760 (string-append "maven-jar-plugin:"
1761 ,(package-version maven-jar-plugin))))))
1762 (add-after 'fix-plugin-versions 'rebuild
1764 (invoke "ant" "jar")
1767 `(("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1768 ("java-commons-cli" ,java-commons-cli)
1769 ("java-plexus-cli" ,java-plexus-cli)
1770 ("java-jdom2" ,java-jdom2)
1771 ("java-qdox" ,java-qdox)
1772 ("maven-core-boot" ,maven-core-bootstrap)
1773 ,@(package-native-inputs maven-core-bootstrap)))))
1775 (define-public maven-slf4j-provider
1777 (inherit maven-artifact)
1778 (name "maven-slf4j-provider")
1780 `(#:jar-name "maven-slf4j-provider.jar"
1781 #:source-dir "maven-slf4j-provider/src/main/java"
1782 #:tests? #f; no tests
1784 (modify-phases %standard-phases
1785 (add-after 'unpack 'unpack-slf4j
1786 (lambda* (#:key inputs #:allow-other-keys)
1787 (mkdir-p "generated-sources")
1788 (with-directory-excursion "generated-sources"
1789 (invoke "tar" "xf" (assoc-ref inputs "java-slf4j-simple-source"))
1790 (for-each delete-file (find-files "." "StaticLoggerBinder.java")))
1797 "maven-slf4j-provider/src/main/java/org/slf4j/impl/"
1799 (find-files (string-append simple "/src/main/java/") "\\.java$")))
1800 (find-files "generated-sources" "slf4j-simple" #:directories? #t))))
1802 (install-from-pom "maven-slf4j-provider/pom.xml")))))
1804 `(("java-slf4j-api" ,java-slf4j-api)
1805 ("java-slf4j-simple-source" ,(package-source java-slf4j-simple))
1806 ("maven-shared-utils" ,maven-shared-utils)))
1807 (native-inputs (list unzip))))
1809 (define-public maven-embedder
1811 (inherit maven-artifact)
1812 (name "maven-embedder")
1814 `(#:jar-name "maven-embedder.jar"
1815 #:source-dir "maven-embedder/src/main/java"
1816 #:test-dir "maven-embedder/src/test"
1817 #:test-exclude (list "**/MavenCliTest.java")
1820 (modify-phases %standard-phases
1821 (add-before 'build 'generate-sisu-named
1823 (mkdir-p "build/classes/META-INF/sisu")
1824 (chmod "sisu.sh" #o755)
1825 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1826 "build/classes/META-INF/sisu/javax.inject.Named")
1828 (add-before 'build 'copy-resources
1830 (mkdir-p "build/classes/")
1831 (copy-recursively "maven-embedder/src/main/resources" "build/classes")))
1832 (add-before 'build 'generate-models
1833 (lambda* (#:key inputs #:allow-other-keys)
1834 (define (modello-single-mode file version mode)
1835 (invoke "java" "org.codehaus.modello.ModelloCli"
1836 file mode "maven-embedder/src/main/java" version
1838 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1839 (modello-single-mode file "1.0.0" "java")
1840 (modello-single-mode file "1.0.0" "xpp3-reader")
1841 (modello-single-mode file "1.0.0" "xpp3-writer"))
1843 (add-before 'check 'fix-test-paths
1845 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1846 (("target/test-classes") "build/test-classes"))
1848 (add-before 'check 'fix-test-compilation
1850 ;; Tests are in the java/ subdir. Other subdirectories contain
1851 ;; additional test plugins, with duplicate classes, so we can't
1852 ;; compile them. Also, they are meant to be built with maven, to
1853 ;; test its build process.
1854 (substitute* "build.xml"
1855 (("srcdir=\"maven-embedder/src/test\"")
1856 "srcdir=\"maven-embedder/src/test/java\""))
1858 (add-before 'check 'disable-failing-test
1860 (delete-file "maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java")))
1861 (add-before 'install 'fix-pom
1863 (substitute* "maven-embedder/pom.xml"
1864 (("jsr250-api") "javax.annotation-api"))))
1866 (install-from-pom "maven-embedder/pom.xml")))))
1868 `(("maven-core" ,maven-core)
1869 ("maven-artifact" ,maven-artifact)
1870 ("maven-plugin-api" ,maven-plugin-api)
1871 ("maven-builder-support" ,maven-builder-support)
1872 ("maven-model" ,maven-model)
1873 ("maven-model-builder" ,maven-model-builder)
1874 ("maven-settings" ,maven-settings)
1875 ("maven-settings-builder" ,maven-settings-builder)
1876 ("maven-shared-utils" ,maven-shared-utils)
1877 ("maven-slf4j-provider" ,maven-slf4j-provider)
1878 ("java-plexus-classworlds" ,java-plexus-classworlds)
1879 ("java-plexus-util" ,java-plexus-utils)
1880 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1881 ("java-plexus-cipher" ,java-plexus-cipher)
1882 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1883 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1884 ("maven-resolevr-util" ,maven-resolver-util)
1885 ("maven-resolevr-api" ,maven-resolver-api)
1886 ("java-logback-core" ,java-logback-core)
1887 ("java-logback-classic" ,java-logback-classic)
1888 ("java-commons-cli" ,java-commons-cli)
1889 ("java-commons-io" ,java-commons-io)
1890 ("java-commons-lang3" ,java-commons-lang3)
1891 ("java-guava" ,java-guava)
1892 ("java-guice" ,java-guice)
1893 ("java-javax-inject" ,java-javax-inject)
1894 ("java-slf4j-api" ,java-slf4j-api)
1895 ("java-jsr250" ,java-jsr250)))
1897 `(("java-asm-8" ,java-asm-8)
1898 ("java-modello-core" ,java-modello-core)
1899 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1900 ("java-plexus-build-api" ,java-plexus-build-api)
1901 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1902 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1903 ("java-cglib" ,java-cglib)
1904 ("java-modello-plugins-java" ,java-modello-plugins-java)
1905 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1906 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1908 ("java-junit" ,java-junit)
1909 ("java-objenesis" ,java-objenesis)
1910 ("java-mockito-1" ,java-mockito-1)
1911 ("java-hamcrest-core" ,java-hamcrest-core)))
1912 (description "Apache Maven is a software project management and comprehension
1913 tool. This package contains a Maven embeddable component, with CLI and
1914 logging support.")))
1916 (define-public maven-compat
1918 (inherit maven-artifact)
1919 (name "maven-compat")
1921 `(#:jar-name "maven-compat.jar"
1922 #:source-dir "src/main/java"
1924 #:test-dir "src/test"
1926 (modify-phases %standard-phases
1927 ;; Tests assume we're in this directory
1928 (add-before 'configure 'chdir
1930 (chdir "maven-compat")
1932 (add-before 'build 'recreate-removed-jar
1934 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1936 (with-directory-excursion "src/test/resources"
1937 (with-output-to-file "artifact-install/artifact-1.0.jar"
1939 (format #t "dummy~%")))
1942 (with-output-to-file file
1944 (format #t "foo~%"))))
1945 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1946 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1947 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1948 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1949 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1950 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1951 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1952 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1953 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1954 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1955 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1956 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1957 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1958 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1959 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1960 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1961 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1962 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1963 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1964 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1965 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1966 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1967 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1968 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1969 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1970 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1971 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1972 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1973 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1974 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1975 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1976 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1977 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1978 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1979 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1980 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1981 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1982 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1983 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1984 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1985 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1986 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1987 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1988 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1989 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1990 (with-directory-excursion "local-repo/snapshot-test/jars"
1993 (with-output-to-file file
1996 (format #t "local"))))
1997 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1998 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1999 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
2002 (with-directory-excursion
2003 (string-append "src/test/remote-repo/org/apache/maven/its/"
2005 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
2008 (copy-file (string-append letter "-0.1.pom")
2009 (string-append dir "/pom.xml"))
2010 (with-output-to-file (string-append dir "/pom.properties")
2012 (format #t "version=0.1~%")
2013 (format #t "groupId=org.apache.maven.its")
2014 (format #t (string-append "artifactId=" letter))))
2015 (with-output-to-file "META-INF/MANIFEST.MF"
2017 (format #t "Manifest-Version: 1.0~%"))))
2018 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
2019 (string-append letter "-0.1.jar") "META-INF")))
2022 (add-before 'build 'generate-models
2023 (lambda* (#:key inputs #:allow-other-keys)
2024 (define (modello-single-mode file version mode)
2025 (invoke "java" "org.codehaus.modello.ModelloCli"
2026 file mode "src/main/java" version
2028 (let ((file "src/main/mdo/profiles.mdo"))
2029 (modello-single-mode file "1.0.0" "java")
2030 (modello-single-mode file "1.0.0" "xpp3-reader")
2031 (modello-single-mode file "1.0.0" "xpp3-writer"))
2032 (let ((file "src/main/mdo/paramdoc.mdo"))
2033 (modello-single-mode file "1.0.0" "java")
2034 (modello-single-mode file "1.0.0" "xpp3-reader")
2035 (modello-single-mode file "1.0.0" "xpp3-writer"))
2037 (add-before 'build 'copy-resources
2039 (mkdir-p "build/classes/")
2040 (copy-recursively "src/main/resources" "build/classes")))
2041 (add-after 'build 'generate-metadata
2043 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2044 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2045 "--source" "src/main/java"
2046 "--output" "build/classes/META-INF/plexus/components.xml"
2047 "--classes" "build/classes"
2048 "--descriptors" "build/classes/META-INF")
2050 (add-before 'check 'build-tests
2052 (invoke "ant" "compile-tests")
2054 (add-after 'build-tests 'generate-test-metadata
2056 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
2058 ":build/test-classes")
2059 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2060 "--source" "src/test/java"
2061 "--output" "build/test-classes/META-INF/plexus/components.xml"
2062 "--classes" "build/test-classes"
2063 "--descriptors" "build/test-classes/META-INF")
2065 (add-before 'check 'disable-failing-test
2067 (delete-file "src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java")))
2068 (add-after 'generate-metadata 'rebuild
2070 (invoke "ant" "jar")
2073 (install-from-pom "pom.xml")))))
2075 (list maven-artifact
2076 maven-repository-metadata
2077 maven-builder-support
2081 maven-settings-builder
2083 maven-wagon-provider-api
2088 java-plexus-interpolation))
2090 `(("java-modello-core" ,java-modello-core)
2091 ("java-plexus-utils" ,java-plexus-utils)
2092 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
2093 ("java-plexus-classworlds" ,java-plexus-classworlds)
2094 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
2095 ("java-plexus-build-api" ,java-plexus-build-api)
2096 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2097 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
2098 ("java-javax-inject" ,java-javax-inject)
2099 ("java-guice" ,java-guice)
2100 ("java-guava" ,java-guava)
2101 ("java-cglib" ,java-cglib)
2102 ("java-asm" ,java-asm)
2103 ("java-modello-plugins-java" ,java-modello-plugins-java)
2104 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
2105 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
2107 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
2108 ("java-commons-cli" ,java-commons-cli)
2109 ("java-plexus-cli" ,java-plexus-cli)
2110 ("java-jdom2" ,java-jdom2)
2111 ("maven-plugin-api" ,maven-plugin-api)
2112 ("java-qdox" ,java-qdox)
2114 ("java-plexus-cipher" ,java-plexus-cipher)
2115 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2116 ("java-jsr250" ,java-jsr250)
2117 ("java-cdi-api" ,java-cdi-api)
2118 ("java-junit" ,java-junit)
2119 ("maven-resolver-impl" ,maven-resolver-impl)
2120 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
2121 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
2122 ("java-commons-lang3" ,java-commons-lang3)
2123 ("java-aop" ,java-aopalliance)
2124 ("maven-resolver-provider" ,maven-resolver-provider)
2125 ("maven-slf4j-provider" ,maven-slf4j-provider)
2126 ("java-slf4j-api" ,java-slf4j-api)
2127 ,@(package-inputs java-slf4j-api)))
2128 (description "Apache Maven is a software project management and comprehension
2129 tool. This package contains Maven2 classes maintained as compatibility
2130 layer for plugins that need to keep Maven2 compatibility.")))
2132 (define-public maven
2134 (inherit maven-artifact)
2138 (modify-phases %standard-phases
2140 (lambda* (#:key inputs #:allow-other-keys)
2141 ;; Recreate the configuration for the loader
2142 (with-output-to-file "apache-maven/src/bin/m2.conf"
2144 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
2146 (format #t "set maven.conf default ${maven.home}/conf~%")
2148 (format #t "[plexus.core]~%")
2149 (format #t "load ${maven.conf}/logging~%")
2150 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
2151 ;; Reference every jar so plexus-classworlds can find them.
2153 (lambda (dependency)
2156 (format #t "load ~a~%" file))
2157 (find-files (assoc-ref inputs dependency) ".*.jar$")))
2158 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
2159 "maven-builder-support" "maven-model" "maven-model-builder"
2160 "maven-settings" "maven-settings-builder" "maven-plugin-api"
2161 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
2162 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
2163 "maven-resolver-connector-basic" "maven-resolver-provider"
2164 "maven-resolver-transport-wagon" "maven-slf4j-provider"
2165 "maven-wagon-provider-api"
2166 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
2167 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
2168 "maven-wagon-http-shared" "maven-wagon-tck-http"
2169 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
2170 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
2171 "java-javax-inject" "java-plexus-component-annotations"
2172 "java-plexus-utils" "java-plexus-interpolation"
2173 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
2174 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
2175 "java-commons-io" "java-commons-lang3" "java-slf4j-api"))))
2176 (substitute* "apache-maven/src/bin/mvn"
2181 (assoc-ref inputs "java-plexus-classworlds")
2184 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
2188 (lambda* (#:key outputs #:allow-other-keys)
2189 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
2190 (conf (string-append (assoc-ref outputs "out") "/conf/")))
2191 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
2192 (for-each (lambda (file)
2193 (install-file (string-append "apache-maven/src/bin/" file)
2195 (chmod (string-append bin file) #o755))
2196 '("mvn" "mvnDebug" "mvnyjp"))
2197 (install-file "apache-maven/src/bin/m2.conf" bin)
2198 (copy-recursively "apache-maven/src/conf" conf))
2201 (list java-plexus-classworlds
2206 maven-builder-support
2210 maven-settings-builder
2212 maven-repository-metadata
2218 maven-resolver-connector-basic
2219 maven-resolver-provider
2220 maven-resolver-transport-wagon
2221 maven-slf4j-provider
2222 maven-wagon-provider-api
2225 java-commons-logging-minimal
2226 java-httpcomponents-httpclient
2227 java-httpcomponents-httpcore
2228 maven-wagon-http-shared
2229 maven-wagon-tck-http
2230 java-eclipse-sisu-plexus
2235 java-eclipse-sisu-inject
2237 java-plexus-component-annotations
2239 java-plexus-interpolation
2240 java-plexus-sec-dispatcher
2251 (list coreutils which))
2252 (description "Apache Maven is a software project management and comprehension
2253 tool. Based on the concept of a project object model: builds, dependency
2254 management, documentation creation, site publication, and distribution
2255 publication are all controlled from the @file{pom.xml} declarative file. Maven
2256 can be extended by plugins to utilise a number of other development tools for
2257 reporting or the build process.")))
2259 ;; Many plugins require maven 3.0 as a dependency.
2260 (define maven-3.0-pom
2267 (url "https://github.com/apache/maven")
2268 (commit (string-append "maven-" version))))
2269 (file-name (git-file-name "maven" version))
2272 "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
2273 (modules '((guix build utils)))
2276 (for-each delete-file (find-files "." "\\.jar$"))
2277 (for-each (lambda (file) (chmod file #o644))
2278 (find-files "." "."))
2281 (search-patches "maven-generate-component-xml.patch"
2282 "maven-generate-javax-inject-named.patch"))))
2284 `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
2286 (define-public maven-3.0-artifact
2288 (inherit maven-artifact)
2289 (version (package-version maven-3.0-pom))
2290 (source (package-source maven-3.0-pom))
2294 (if (equal? (car input) "maven-pom")
2295 `("maven-pom" ,maven-3.0-pom)
2297 (package-propagated-inputs maven-artifact)))))
2299 (define-public maven-3.0-model
2301 (inherit maven-model)
2302 (version (package-version maven-3.0-pom))
2303 (source (package-source maven-3.0-pom))
2307 (if (equal? (car input) "maven-pom")
2308 `("maven-pom" ,maven-3.0-pom)
2310 (package-propagated-inputs maven-artifact)))
2312 `(#:jar-name "maven-model.jar"
2313 #:source-dir "maven-model/src/main/java"
2314 #:test-dir "maven-model/src/test"
2316 ((guix build ant-build-system)
2317 (guix build java-utils)
2318 (guix build syscalls)
2321 (modify-phases %standard-phases
2322 (add-after 'configure 'use-newer-model
2323 (lambda* (#:key inputs #:allow-other-keys)
2324 ;; The model has almost not changed, but the newer version is
2325 ;; needed to prevent an error in the newer modello we have
2326 (let ((source (assoc-ref inputs "maven-source"))
2327 (dir (mkdtemp! "maven-source-XXXXXXXX")))
2328 (with-directory-excursion dir
2329 (invoke "tar" "xf" source)
2330 (copy-file (car (find-files "." "maven.mdo"))
2331 "../maven-model/src/main/mdo/maven.mdo")))
2333 (add-before 'build 'generate-models
2334 (lambda* (#:key inputs #:allow-other-keys)
2335 (define (modello-single-mode file version mode)
2336 (invoke "java" "org.codehaus.modello.ModelloCli"
2337 file mode "maven-model/src/main/java" version
2338 "false" "true" "UTF-8"))
2339 (let ((file "maven-model/src/main/mdo/maven.mdo"))
2340 (modello-single-mode file "4.0.0" "java")
2341 (modello-single-mode file "4.0.0" "xpp3-reader")
2342 (modello-single-mode file "4.0.0" "xpp3-writer")
2343 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
2346 (install-from-pom "maven-model/pom.xml")))))
2348 `(("maven-source" ,(package-source maven-pom))
2349 ,@(package-inputs maven-model)))))
2351 (define-public maven-3.0-settings
2353 (inherit maven-settings)
2354 (version (package-version maven-3.0-pom))
2355 (source (package-source maven-3.0-pom))
2359 (if (equal? (car input) "maven-pom")
2360 `("maven-pom" ,maven-3.0-pom)
2362 (package-propagated-inputs maven-settings)))))
2364 (define-public maven-3.0-settings-builder
2366 (inherit maven-settings-builder)
2367 (version (package-version maven-3.0-pom))
2368 (source (package-source maven-3.0-pom))
2370 (substitute-keyword-arguments (package-arguments maven-settings-builder)
2372 `(modify-phases ,phases
2373 (add-before 'build 'generate-components.xml
2375 (mkdir-p "build/classes/META-INF/plexus")
2376 (chmod "components.sh" #o755)
2377 (invoke "./components.sh" "maven-settings-builder/src/main/java"
2378 "build/classes/META-INF/plexus/components.xml")))))))
2380 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2386 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2387 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
2388 ("maven-builder-support" #f)
2389 ("java-plexus-sec-dispatcher"
2390 `("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher-1.4))
2392 (package-propagated-inputs maven-settings-builder)))))))
2394 (define-public maven-3.0-model-builder
2396 (inherit maven-model-builder)
2397 (version (package-version maven-3.0-pom))
2398 (source (package-source maven-3.0-pom))
2400 (substitute-keyword-arguments (package-arguments maven-model-builder)
2402 `(modify-phases ,phases
2403 (add-before 'build 'generate-components.xml
2405 (mkdir-p "build/classes/META-INF/plexus")
2406 (chmod "components.sh" #o755)
2407 (invoke "./components.sh" "maven-model-builder/src/main/java"
2408 "build/classes/META-INF/plexus/components.xml")))
2409 (add-before 'check 'remove-failing-test
2411 (delete-file "maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
2413 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2419 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2420 ("maven-model" `("maven-model" ,maven-3.0-model))
2421 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2422 ("maven-builder-support" #f)
2424 (package-propagated-inputs maven-model-builder)))))))
2426 (define-public maven-3.0-plugin-api
2428 (inherit maven-plugin-api)
2429 (version (package-version maven-3.0-pom))
2430 (source (package-source maven-3.0-pom))
2432 (substitute-keyword-arguments (package-arguments maven-plugin-api)
2434 `(modify-phases ,phases
2435 (add-before 'install 'fix-pom
2437 (substitute* "maven-plugin-api/pom.xml"
2438 (("org.sonatype.sisu") "org.codehaus.plexus")
2439 (("sisu-inject-plexus") "plexus-container-default"))
2445 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2446 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2447 ("maven-model" `("maven-model" ,maven-3.0-model))
2449 (package-propagated-inputs maven-model-builder)))
2451 (modify-inputs (package-native-inputs maven-plugin-api)
2452 (prepend java-plexus-container-default)))))
2454 (define-public maven-3.0-repository-metadata
2456 (inherit maven-repository-metadata)
2457 (version (package-version maven-3.0-pom))
2458 (source (package-source maven-3.0-pom))
2462 (if (equal? (car input) "maven-pom")
2463 `("maven-pom" ,maven-3.0-pom)
2465 (package-propagated-inputs maven-repository-metadata)))))
2467 (define-public maven-3.0-aether-provider
2469 (inherit maven-3.0-pom)
2470 (name "maven-aether-provider")
2472 `(#:jar-name "maven-aether-provider.jar"
2473 #:source-dir "maven-aether-provider/src/main/java"
2474 #:tests? #f; no tests in 3.0
2476 (modify-phases %standard-phases
2477 (add-after 'build 'generate-metadata
2479 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2480 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2481 "--source" "src/main/java"
2482 "--output" "build/classes/META-INF/plexus/components.xml"
2483 "--classes" "build/classes"
2484 "--descriptors" "build/classes/META-INF")
2486 (add-after 'generate-metadata 'rebuild
2488 (invoke "ant" "jar")
2491 (install-from-pom "maven-aether-provider/pom.xml")))))
2493 `(("maven-model" ,maven-3.0-model)
2494 ("maven-model-builder" ,maven-3.0-model-builder)
2495 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2496 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2497 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
2498 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2499 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
2500 ("java-plexus-utils" ,java-plexus-utils)
2501 ("maven-pom" ,maven-3.0-pom)))
2503 (list java-plexus-component-metadata))))
2505 (define-public maven-3.0-core
2507 (inherit maven-core)
2508 (version (package-version maven-3.0-pom))
2509 (source (package-source maven-3.0-pom))
2511 `(#:jar-name "maven-core.jar"
2512 #:source-dir "src/main/java"
2515 (modify-phases %standard-phases
2516 (add-before 'configure 'chdir
2518 ;; Required for generating components.xml in maven-core
2519 (chdir "maven-core")
2521 (add-before 'build 'generate-models
2522 (lambda* (#:key inputs #:allow-other-keys)
2523 (define (modello-single-mode file version mode)
2524 (invoke "java" "org.codehaus.modello.ModelloCli"
2525 file mode "src/main/java" version
2526 "false" "true" "UTF-8"))
2527 (let ((file "src/main/mdo/toolchains.mdo"))
2528 (modello-single-mode file "1.0.0" "java")
2529 (modello-single-mode file "1.0.0" "xpp3-reader")
2530 (modello-single-mode file "1.0.0" "xpp3-writer"))
2532 (add-before 'build 'copy-resources
2534 (mkdir-p "build/classes/")
2535 (copy-recursively "src/main/resources" "build/classes")
2537 (add-after 'build 'generate-metadata
2539 (define (components file)
2540 (let ((sxml (with-input-from-file file
2541 (lambda _ (xml->sxml (current-input-port)
2542 #:trim-whitespace? #t)))))
2543 ;; Select the list of <component>s inside the <component-set>
2544 ;; and <components>.
2545 ((@ (ice-9 match) match) sxml
2549 ('components x ...))) x))))
2550 (use-modules (sxml simple))
2551 (delete-file "build/classes/META-INF/plexus/components.xml")
2552 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2553 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2554 "--source" "build/classes/META-INF/plexus"
2555 "--output" "build/classes/META-INF/plexus/components.t.xml"
2556 "--classes" "build/classes"
2557 "--descriptors" "build/classes")
2558 ;; Now we merge all other components from hand-written xml
2559 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
2560 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
2561 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
2562 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
2564 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
2568 ,@(append generated-xml components-xml
2569 artifact-handlers-xml)))))))
2571 (add-after 'generate-metadata 'rebuild
2573 (invoke "ant" "jar")
2575 (add-before 'install 'fix-pom
2577 (substitute* "pom.xml"
2578 (("org.sonatype.sisu") "org.codehaus.plexus")
2579 (("sisu-inject-plexus") "plexus-container-default"))
2582 (install-from-pom "pom.xml")))))
2584 (list maven-3.0-model
2586 maven-3.0-settings-builder
2587 maven-3.0-repository-metadata
2589 maven-3.0-model-builder
2590 maven-3.0-aether-provider
2591 java-sonatype-aether-impl
2592 java-sonatype-aether-api
2593 java-sonatype-aether-util
2594 java-plexus-interpolation
2596 java-plexus-classworlds
2597 java-plexus-component-annotations
2598 java-plexus-container-default
2599 java-plexus-sec-dispatcher-1.4
2602 (define-public maven-3.0-compat
2604 (inherit maven-compat)
2605 (version (package-version maven-3.0-pom))
2606 (source (package-source maven-3.0-pom))
2608 `(#:tests? #f ;require an old version of java-easymock
2609 ,@(substitute-keyword-arguments (package-arguments maven-compat)
2611 `(modify-phases ,phases
2612 (add-before 'install 'fix-pom
2614 (substitute* "pom.xml"
2615 (("org.sonatype.sisu") "org.codehaus.plexus")
2616 (("sisu-inject-plexus") "plexus-container-default"))
2618 (delete 'build-tests))))))
2620 (list maven-3.0-model
2621 maven-3.0-model-builder
2623 maven-3.0-settings-builder
2626 maven-3.0-aether-provider
2627 maven-3.0-repository-metadata
2628 java-sonatype-aether-api
2629 java-sonatype-aether-util
2630 java-sonatype-aether-impl
2632 java-plexus-interpolation
2633 java-eclipse-sisu-plexus
2634 java-plexus-component-annotations
2635 java-plexus-container-default
2636 maven-wagon-provider-api
2639 (define-public maven-shared-utils-3.0
2641 (inherit maven-shared-utils)
2645 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2646 "maven-shared-utils-" version "-source-release.zip"))
2649 "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
2651 (modify-inputs (package-propagated-inputs maven-shared-utils)
2652 (prepend maven-3.0-core maven-components-parent-pom-21)))))
2654 (define-public maven-shared-utils-3.1
2656 (inherit maven-shared-utils)
2660 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2661 "maven-shared-utils-" version "-source-release.zip"))
2664 "0vfaas4g09ch0agrd1dcxcmhdd3w971ssvfr9mx9gi2lp5nv8w66"))))))
2666 (define-public maven-shared-io
2668 (name "maven-shared-io")
2672 (uri (string-append "mirror://apache/maven/shared/"
2673 "maven-shared-io-" version
2674 "-source-release.zip"))
2677 "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
2678 (build-system ant-build-system)
2680 `(#:jar-name "maven-shared-io.jar"
2681 #:source-dir "src/main/java"
2682 #:test-dir "src/test"
2684 (modify-phases %standard-phases
2685 (add-before 'build 'copy-resources
2687 (copy-recursively "src/main/resources" "build/classes/")
2688 (copy-recursively "src/test/resources" "build/test-classes/")
2691 (install-from-pom "pom.xml")))))
2693 (list maven-3.0-artifact
2695 maven-3.0-plugin-api
2697 maven-wagon-provider-api
2699 maven-components-parent-pom-22))
2701 (list unzip java-junit java-easymock))
2702 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2703 (synopsis "Tree-based API for resolution of Maven project dependencies")
2704 (description "This package provides a tree-based API for resolution of
2705 Maven project dependencies.")
2706 (license license:asl2.0)))
2708 (define-public maven-file-management
2710 (name "maven-file-management")
2714 (uri (string-append "mirror://apache/maven/shared/"
2715 "file-management-" version
2716 "-source-release.zip"))
2719 "0wisz6sm67axrwvx8a75mb9s03h7kzkzfw8j3aaa4sx4k9ph58da"))))
2720 (build-system ant-build-system)
2722 `(#:jar-name "maven-file-management.jar"
2723 #:source-dir "src/main/java"
2725 (modify-phases %standard-phases
2726 (add-before 'build 'copy-resources
2728 (copy-recursively "src/main/resources" "build/classes/")
2730 (add-before 'build 'generate-models
2731 (lambda* (#:key inputs #:allow-other-keys)
2732 (define (modello-single-mode file version mode)
2734 "org.codehaus.modello.ModelloCli"
2735 file mode "src/main/java" version
2737 (let ((file "src/main/mdo/fileset.mdo"))
2738 (modello-single-mode file "1.1.0" "java")
2739 (modello-single-mode file "1.1.0" "xpp3-reader")
2740 (modello-single-mode file "1.1.0" "xpp3-writer"))
2743 (install-from-pom "pom.xml")))))
2745 (list maven-3.0-plugin-api maven-shared-io maven-shared-utils
2746 java-plexus-utils maven-components-parent-pom-22))
2748 `(("java-modello-core" ,java-modello-core)
2750 ("java-modellop-plugins-java" ,java-modello-plugins-java)
2751 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
2753 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2754 (synopsis "Tree-based API for resolution of Maven project dependencies")
2755 (description "This package provides a tree-based API for resolution of
2756 Maven project dependencies.")
2757 (license license:asl2.0)))
2759 (define-public maven-archiver
2761 (name "maven-archiver")
2765 (uri (string-append "mirror://apache/maven/shared/"
2766 "maven-archiver-" version
2767 "-source-release.zip"))
2770 "1204xkqj259brpk3yscprml0lbfbyn1vn5nrgqjk44z5vx127lbw"))))
2771 (build-system ant-build-system)
2773 `(#:jar-name "maven-archiver.jar"
2774 #:source-dir "src/main/java"
2776 (modify-phases %standard-phases
2778 (install-from-pom "pom.xml")))))
2780 `(("java-commons-io" ,java-commons-io)
2781 ("maven-artifact" ,maven-3.0-artifact)
2782 ("maven-core" ,maven-3.0-core)
2783 ("maven-model" ,maven-3.0-model)
2784 ("maven-shared-utils" ,maven-shared-utils)
2785 ("java-plexus-archiver" ,java-plexus-archiver)
2786 ("java-plexus-interpolation" ,java-plexus-interpolation)
2787 ("java-plexus-utils" ,java-plexus-utils)
2788 ("maen-parent-pom" ,maven-parent-pom-33)))
2790 (list java-junit java-assertj unzip))
2791 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2792 (synopsis "Tree-based API for resolution of Maven project dependencies")
2793 (description "This package provides a tree-based API for resolution of
2794 Maven project dependencies.")
2795 (license license:asl2.0)))
2797 (define-public maven-dependency-tree
2799 (name "maven-dependency-tree")
2803 (uri (string-append "mirror://apache/maven/shared/"
2804 "maven-dependency-tree-" version
2805 "-source-release.zip"))
2808 "1vhcd3lmbyy8q61c37sqgbllqj4ypkxm344l6pb05mkchlyk5dy5"))))
2809 (build-system ant-build-system)
2811 `(#:jar-name "maven-dependency-tree.jar"
2812 #:source-dir "src/main/java"
2813 #:tests? #f; no tests
2815 (modify-phases %standard-phases
2817 (install-from-pom "pom.xml")))))
2819 (list maven-3.0-core java-plexus-component-annotations
2820 maven-parent-pom-34))
2822 (list java-sonatype-aether-api-1.13 java-sonatype-aether-util-1.13
2823 java-eclipse-aether-api java-eclipse-aether-util))
2825 (list unzip java-junit))
2826 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2827 (synopsis "Tree-based API for resolution of Maven project dependencies")
2828 (description "This package provides a tree-based API for resolution of
2829 Maven project dependencies.")
2830 (license license:asl2.0)))
2832 (define-public maven-common-artifact-filters
2834 (name "maven-common-artifact-filters")
2838 (uri (string-append "mirror://apache/maven/shared/"
2839 "maven-common-artifact-filters-" version
2840 "-source-release.zip"))
2843 "1mr92s4zz6gf028wiskjg8rd1znxzdnmskg42ac55ifg9v1p1884"))))
2844 (build-system ant-build-system)
2846 `(#:jar-name "maven-common-artifact-filters.jar"
2847 #:source-dir "src/main/java"
2848 #:tests? #f; require maven-plugin-testing-harness, which requires maven 3.2.
2850 (modify-phases %standard-phases
2851 (add-before 'build 'fix-aether
2853 (substitute* "pom.xml"
2854 (("eclipse.aether") "sonatype.aether"))
2855 (substitute* "src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java"
2856 (("eclipse") "sonatype"))))
2858 (install-from-pom "pom.xml")))))
2860 (list maven-3.0-artifact
2863 maven-3.0-plugin-api
2866 java-eclipse-sisu-plexus
2867 java-sonatype-aether-api
2868 java-sonatype-aether-util))
2870 (list maven-resolver-api maven-resolver-util))
2873 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2874 (synopsis "Tree-based API for resolution of Maven project dependencies")
2875 (description "This package provides a tree-based API for resolution of
2876 Maven project dependencies.")
2877 (license license:asl2.0)))
2879 (define-public maven-common-artifact-filters-3.1.0
2881 (inherit maven-common-artifact-filters)
2885 (uri (string-append "mirror://apache/maven/shared/"
2886 "maven-common-artifact-filters-" version
2887 "-source-release.zip"))
2890 "1cl1qk4r0gp62bjzfm7lml9raz1my2kd4yf0ci0lnfsn0h5qivnb"))))
2892 (substitute-keyword-arguments (package-arguments maven-common-artifact-filters)
2894 `(modify-phases ,phases
2895 (delete 'fix-aether)
2896 (add-before 'build 'remove-sisu
2898 (substitute* "pom.xml"
2899 (("sisu-inject-plexus") "maven-plugin-api")
2900 (("org.sonatype.sisu") "org.apache.maven"))))))))))
2902 (define-public maven-enforcer-api
2904 (name "maven-enforcer-api")
2908 (uri (string-append "mirror://apache/maven/enforcer/"
2909 "enforcer-" version "-source-release.zip"))
2912 "1479yp58jv788xc1jc2sbdxpajlbvwlk60639vd2h4s8r6x7naqh"))))
2913 (build-system ant-build-system)
2915 `(#:jar-name "maven-enforcer-api.jar"
2916 #:source-dir "enforcer-api/src/main/java"
2917 #:tests? #f; no tests
2919 (modify-phases %standard-phases
2921 (install-from-pom "enforcer-api/pom.xml")))))
2923 (list maven-plugin-api java-plexus-container-default java-jsr305
2924 maven-enforcer-parent-pom))
2927 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2928 (synopsis "Tree-based API for resolution of Maven project dependencies")
2929 (description "This package provides a tree-based API for resolution of
2930 Maven project dependencies.")
2931 (license license:asl2.0)))
2933 (define maven-enforcer-parent-pom
2935 (inherit maven-enforcer-api)
2936 (name "maven-enforcer-parent-pom")
2940 (modify-phases %standard-phases
2943 (add-before 'install 'fix-pom-versions
2945 (substitute* "pom.xml"
2946 (("<maven.version>.*</maven.version>")
2947 ,(string-append "<maven.version>" (package-version maven)
2948 "</maven.version>"))
2949 (("2.11.0") ,(package-version java-commons-io))
2950 (("3.12.0") ,(package-version java-commons-lang3))
2951 (("1.6.1") ,(package-version maven-resolver-util))
2952 (("1.15") ,(package-version java-commons-codec)))))
2954 (install-pom-file "pom.xml")))))
2956 `(("maven-parent-pom" ,maven-parent-pom-30)))))
2958 (define-public maven-enforcer-rules
2960 (inherit maven-enforcer-api)
2961 (name "maven-enforcer-rules")
2963 `(#:tests? #f; requires maven-plugin-testing-harness
2964 #:jar-name "maven-enforcer-rules.jar"
2965 #:source-dir "enforcer-rules/src/main/java"
2966 #:test-dir "enforcer-rules/src/test"
2968 (modify-phases %standard-phases
2970 (install-from-pom "enforcer-rules/pom.xml")))))
2972 (list maven-artifact
2975 maven-common-artifact-filters
2981 maven-dependency-tree
2983 maven-enforcer-parent-pom))))
2985 (define-public maven-enforcer-plugin
2987 (inherit maven-enforcer-api)
2988 (name "maven-enforcer-plugin")
2991 #:jar-name "maven-enforcer-plugin.jar"
2992 #:source-dir "maven-enforcer-plugin/src/main/java"
2994 (modify-phases %standard-phases
2995 (add-before 'build 'generate-plugin.xml
2996 (generate-plugin.xml "maven-enforcer-plugin/pom.xml"
2998 "maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/"
3000 (list "DisplayInfoMojo.java")
3001 (list "EnforceMojo.java"))))
3003 (install-from-pom "maven-enforcer-plugin/pom.xml")))))
3005 (list maven-artifact
3010 maven-enforcer-rules
3011 maven-plugin-annotations
3012 maven-enforcer-parent-pom))))
3014 (define-public maven-artifact-transfer
3016 (name "maven-artifact-transfer")
3020 (uri (string-append "mirror://apache/maven/shared/"
3021 "maven-artifact-transfer-" version
3022 "-source-release.zip"))
3025 "0xl7lkksljacrhmvwf924zb6h0h5zw9494jaz9cz4hll0lrhlpz6"))))
3026 (build-system ant-build-system)
3028 `(#:tests? #f; require mockito 2
3029 #:jar-name "maven-artifact-transfer.jar"
3030 #:source-dir "src/main/java"
3032 (modify-phases %standard-phases
3033 (add-after 'build 'generate-metadata
3035 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3036 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3037 "--source" "src/main/java"
3038 "--output" "build/classes/META-INF/plexus/components.xml"
3039 "--classes" "build/classes"
3040 "--descriptors" "build/classes/META-INF")
3042 (add-after 'generate-metadata 'rebuild
3044 (invoke "ant" "jar")
3047 (install-from-pom "pom.xml")))))
3049 (list java-commons-codec
3052 maven-common-artifact-filters-3.1.0
3053 java-plexus-component-annotations
3056 java-plexus-classworlds
3057 java-sonatype-aether-api
3058 java-eclipse-aether-api
3059 java-eclipse-aether-util
3060 java-eclipse-aether-impl))
3062 (list unzip java-plexus-component-metadata))
3063 (home-page "https://maven.apache.org/shared/maven-artifact-transfer")
3064 (synopsis "API to install, deploy and resolve artifacts in Maven")
3065 (description "This package contains an API to install, deploy and resolve
3066 artifacts in Maven 3.")
3067 (license license:asl2.0)))
3069 (define-public maven-install-plugin
3071 (name "maven-install-plugin")
3072 (version "3.0.0-M1")
3075 (uri (string-append "mirror://apache/maven/plugins/"
3076 "maven-install-plugin-" version
3077 "-source-release.zip"))
3080 "1l9iydxririrair0i5sk2iypn9wspzbb666lc0ddg20yyr8w39dm"))))
3081 (build-system ant-build-system)
3083 `(#:tests? #f; require maven-plugin-testing-harness
3084 #:jar-name "maven-install-plugin.jar"
3085 #:source-dir "src/main/java"
3087 (modify-phases %standard-phases
3088 (add-before 'build 'fix-pom
3090 (substitute* "pom.xml"
3091 (("maven-project") "maven-core")
3092 (("maven-artifact-manager") "maven-artifact")
3095 (add-before 'build 'generate-plugin.xml
3096 (generate-plugin.xml "pom.xml"
3098 "src/main/java/org/apache/maven/plugins/install"
3100 (list "AbstractInstallMojo.java" "InstallFileMojo.java")
3101 (list "AbstractInstallMojo.java" "InstallMojo.java"))))
3103 (install-from-pom "pom.xml")))))
3105 `(("maven-artifact" ,maven-artifact)
3106 ("maven-plugin-api" ,maven-plugin-api)
3107 ("maven-compat" ,maven-compat)
3108 ("maven-artifact-transfer" ,maven-artifact-transfer)
3109 ("maven-plugins-pom-23" ,maven-plugins-pom-23)
3110 ("java-plexus-digest" ,java-plexus-digest)))
3112 (list maven-plugin-annotations java-slf4j-api))
3115 (home-page "https://maven.apache.org/plugin/maven-install-plugin")
3116 (synopsis "Maven's install plugin")
3117 (description "The Install Plugin is used during the install phase to add
3118 artifact(s) to the local repository. The Install Plugin uses the information
3119 in the POM (groupId, artifactId, version) to determine the proper location for
3120 the artifact within the local repository.
3122 The local repository is the local cache where all artifacts needed for the
3123 build are stored. By default, it is located within the user's home directory
3124 (@file{~/.m2/repository}) but the location can be configured in
3125 @file{~/.m2/settings.xml} using the @code{<localRepository>} element.")
3126 (license license:asl2.0)))
3128 (define-public maven-filtering
3130 (name "maven-filtering")
3134 (uri (string-append "https://archive.apache.org/dist/maven/"
3135 "shared/maven-filtering-" version
3136 "-source-release.zip"))
3139 "09wrdhchnszd2l6h4z30ra0bv1a19qyjgac9z8zf1pn0m4nw05yz"))))
3140 (build-system ant-build-system)
3142 `(#:jar-name "maven-filtering.jar"
3143 #:source-dir "src/main/java"
3144 #:test-dir "src/test"
3145 ;; this test comes from plexus-build-api, not this package
3146 #:test-exclude (list "**/IncrementalResourceFilteringTest.java"
3147 "**/Abstract*.java")
3149 (modify-phases %standard-phases
3150 (add-after 'build 'generate-metadata
3152 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3153 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3154 "--source" "src/main/java"
3155 "--output" "build/classes/META-INF/plexus/components.xml"
3156 "--classes" "build/classes"
3157 "--descriptors" "build/classes/META-INF")
3159 (add-after 'generate-metadata 'rebuild
3161 (invoke "ant" "jar")
3163 (add-before 'check 'decompress-tests
3164 (lambda* (#:key inputs #:allow-other-keys)
3165 (let* ((build-api-source (assoc-ref inputs "java-plexus-build-api-origin"))
3166 (classes (string-append build-api-source "/src/test/java")))
3167 (copy-recursively classes "src/test/"))
3169 (add-before 'check 'fix-directory
3171 (substitute* (find-files "src/test" ".*.java$")
3172 (("target/test-classes/") "build/test-classes/"))))
3173 (add-before 'check 'copy-test-resources
3175 (copy-recursively "src/test/resources" "build/test-classes/")
3178 (install-from-pom "pom.xml")))))
3180 (list maven-3.0-core
3182 java-plexus-utils-3.2.1
3183 java-plexus-interpolation
3184 java-plexus-build-api
3185 maven-parent-pom-30))
3190 ("java-assertj" ,java-assertj)
3191 ("java-junit" ,java-junit)
3192 ("java-mockito" ,java-mockito-1)
3193 ("java-objenesis" ,java-objenesis)
3194 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
3195 ("java-plexus-build-api-origin" ,(package-source java-plexus-build-api))))
3196 (home-page "https://maven.apache.org/shared/maven-filtering")
3197 (synopsis "Shared component for all plugins that needs to filter resources")
3198 (description "This component provides an API to filter resources in Maven
3200 (license license:asl2.0)))
3202 (define-public maven-resources-plugin
3204 (name "maven-resources-plugin")
3209 (url "https://github.com/apache/maven-resources-plugin")
3210 (commit (string-append "maven-resources-plugin-" version))))
3211 (file-name (git-file-name name version))
3214 "090k5j2y7ak54czfjjg3v7pdmdlgd96fbs91d1fd3vslm9zzndg8"))))
3215 (build-system ant-build-system)
3217 `(#:jar-name "maven-resources-plugin.jar"
3218 #:source-dir "src/main/java"
3219 #:test-dir "src/test"
3220 #:tests? #f; test depends on maven-plugin-test-harness
3222 (modify-phases %standard-phases
3223 (add-before 'build 'generate-plugin.xml
3224 (generate-plugin.xml "pom.xml" "resources"
3225 "src/main/java/org/apache/maven/plugins/resources"
3227 (list "ResourcesMojo.java" "CopyResourcesMojo.java")
3228 (list "ResourcesMojo.java")
3229 (list "ResourcesMojo.java" "TestResourcesMojo.java"))))
3231 (install-from-pom "pom.xml")))))
3233 (list maven-plugin-api
3237 java-plexus-interpolation
3238 maven-parent-pom-31))
3240 (list maven-plugin-annotations java-commons-io))
3242 (list java-plexus-component-metadata))
3243 (home-page "https://maven.apache.org/plugins/maven-resources-plugin")
3244 (synopsis "Maven plugin to collect and install resources")
3245 (description "The Resources Plugin handles the copying of project resources
3246 to the output directory. There are two different kinds of resources: main
3247 resources and test resources. The difference is that the main resources are
3248 the resources associated to the main source code while the test resources are
3249 associated to the test source code.
3251 Thus, this allows the separation of resources for the main source code and its
3253 (license license:asl2.0)))
3255 (define-public maven-shared-incremental
3257 (name "maven-shared-incremental")
3261 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
3262 "maven-shared-incremental-" version
3263 "-source-release.zip"))
3266 "03n4nfswyg9ahkz2zx4skcr3ghs01zh95g9js51hc75mfqx9b976"))))
3267 (build-system ant-build-system)
3269 `(#:jar-name "shared-incremental.java"
3270 #:source-dir "src/main/java"
3271 #:test-dir "src/test"
3273 (modify-phases %standard-phases
3274 (add-before 'build 'change-parent
3276 (substitute* "pom.xml"
3279 (add-before 'build 'fix-pom
3281 (substitute* "pom.xml"
3282 (("plexus-component-api") "plexus-component-annotations"))
3284 (add-after 'build 'generate-metadata
3286 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3287 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3288 "--source" "src/main/java"
3289 "--output" "build/classes/META-INF/plexus/components.xml"
3290 "--classes" "build/classes"
3291 "--descriptors" "build/classes/META-INF")
3294 (install-from-pom "pom.xml")))))
3296 (list maven-plugin-api maven-core maven-shared-utils
3297 java-plexus-component-annotations maven-parent-pom-30))
3299 (list unzip java-plexus-component-metadata))
3300 (home-page "https://maven.apache.org/shared/maven-shared-incremental")
3301 (synopsis "Maven Incremental Build support utilities")
3302 (description "This package contains various utility classes and plexus
3303 components for supporting incremental build functionality in maven plugins.")
3304 (license license:asl2.0)))
3306 (define-public maven-compiler-plugin
3308 (name "maven-compiler-plugin")
3313 (url "https://github.com/apache/maven-compiler-plugin")
3314 (commit (string-append "maven-compiler-plugin-" version))))
3315 (file-name (git-file-name name version))
3318 "0jkbq02vykd09ws8k9bzqxv6fjrpmir8gcxydbmj05kkhl242bma"))))
3319 (build-system ant-build-system)
3321 `(#:jar-name "maven-compiler-plugin.jar"
3322 #:source-dir "src/main/java"
3323 #:test-dir "src/test"
3324 #:tests? #f; test depends on maven-plugin-test-harness
3326 (modify-phases %standard-phases
3327 (add-before 'build 'generate-plugin.xml
3328 (generate-plugin.xml "pom.xml"
3330 "src/main/java/org/apache/maven/plugin/compiler"
3332 (list "AbstractCompilerMojo.java" "CompilerMojo.java")
3333 (list "AbstractCompilerMojo.java" "TestCompilerMojo.java"))))
3334 (add-after 'generate-plugin.xml 'fix-plugin.xml
3336 (substitute* "build/classes/META-INF/maven/plugin.xml"
3337 ;; These are defined in AbstractCompilerMojo.java, but not
3338 ;; parsed correctly in the previous phase
3339 (("DEFAULT_TARGET") "1.6")
3340 (("DEFAULT_SOURCE") "1.6"))
3343 (install-from-pom "pom.xml")))))
3345 (list maven-plugin-api
3349 maven-shared-incremental
3351 java-plexus-compiler-api
3352 java-plexus-compiler-manager
3353 java-plexus-compiler-javac
3354 maven-parent-pom-33))
3356 (list maven-plugin-annotations java-commons-io))
3357 (home-page "https://maven.apache.org/plugins/maven-compiler-plugin")
3358 (synopsis "Compiler plugin for Maven")
3359 (description "The Compiler Plugin is used to compile the sources of your
3360 project. Since 3.0, the default compiler is @code{javax.tools.JavaCompiler}
3361 (if you are using java 1.6) and is used to compile Java sources. If you want
3362 to force the plugin using javac, you must configure the plugin option
3363 @code{forceJavacCompilerUse}.
3365 Also note that at present the default source setting is 1.6 and the default
3366 target setting is 1.6, independently of the JDK you run Maven with. You are
3367 highly encouraged to change these defaults by setting source and target as
3368 described in Setting the -source and -target of the Java Compiler.
3370 Other compilers than javac can be used and work has already started on
3371 AspectJ, .NET, and C#.")
3372 (license license:asl2.0)))
3374 (define-public java-surefire-logger-api
3376 (name "java-surefire-logger-api")
3377 (version "3.0.0-M4")
3380 (uri (string-append "mirror://apache/maven/surefire/"
3381 "surefire-" version "-source-release.zip"))
3384 "1s6d4pzk3bjm9l38mj9sfgbgmk145rppdj1dmqwc4d5105mr9q9w"))))
3385 (build-system ant-build-system)
3387 `(#:jar-name "java-surefire-logger-api.jar"
3388 #:source-dir "surefire-logger-api/src/main/java"
3389 #:tests? #f; require mockito 2
3391 (modify-phases %standard-phases
3393 (install-from-pom "surefire-logger-api/pom.xml")))))
3395 (list java-surefire-parent-pom))
3398 (home-page "https://maven.apache.org/surefire/surefire-logger-api")
3399 (synopsis "Interfaces and Utilities related only to internal SureFire Logger API")
3400 (description "This package contains interfaces and utilities that are
3401 internal to the SureFire Logger API. It is designed to have no dependency.")
3402 (license license:asl2.0)))
3404 (define-public java-surefire-parent-pom
3406 (inherit java-surefire-logger-api)
3407 (name "java-surefire-parent-pom")
3411 (modify-phases %standard-phases
3414 (add-before 'install 'fix-pom-dependency-versions
3416 (substitute* "pom.xml"
3417 (("1.11") ,(package-version java-commons-compress))
3418 (("1.13") ,(package-version java-commons-codec)))
3419 (substitute* "pom.xml"
3420 (("commonsLang3Version>.*")
3422 "commonsLang3Version>"
3423 ,(package-version java-commons-lang3)
3424 "</commonsLang3Version>\n"))
3425 (("commonsCompress>.*")
3428 ,(package-version java-commons-compress)
3429 "</commonsCompress>\n"))
3430 (("commonsIoVersion>.*")
3433 ,(package-version java-commons-io)
3434 "</commonsIoVersion>\n"))
3435 (("0.11.0") ,(package-version maven-artifact-transfer))
3436 (("1.0.3") ,(package-version java-plexus-java)))
3438 (add-after 'install 'install-providers
3439 (install-pom-file "surefire-providers/pom.xml"))
3441 (install-pom-file "pom.xml")))))
3443 (list maven-parent-pom-33))))
3445 (define-public java-surefire-api
3447 (inherit java-surefire-logger-api)
3448 (name "java-surefire-api")
3451 #:jar-name "java-surefire-api.jar"
3452 #:source-dir "surefire-api/src/main/java"
3454 (modify-phases %standard-phases
3455 (add-before 'build 'copy-resources
3457 (mkdir-p "build/classes")
3458 (copy-recursively "surefire-api/src/main/resources" "build/classes")
3460 (add-before 'build 'prepare-shade
3461 (lambda* (#:key inputs #:allow-other-keys)
3462 (mkdir-p "build/classes")
3463 (with-directory-excursion "build/classes"
3468 (invoke "jar" "xf" jar-file)
3469 (delete-file-recursively "META-INF"))
3470 (find-files (assoc-ref inputs input) ".*.jar$")))
3471 '("maven-shared-utils" "java-commons-codec")))
3473 (add-after 'build 'shade
3474 (lambda* (#:key inputs #:allow-other-keys)
3476 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3477 (injar "java-surefire-api.jar")
3478 (outjar "java-surefire-api-shaded.jar"))
3479 (with-directory-excursion "build/jar"
3480 (with-output-to-file "rules"
3482 (format #t (string-append
3484 "org.apache.maven.shared.utils.** "
3485 "org.apache.maven.surefire.shade.api."
3486 "org.apache.maven.shared.utils.@1~%"))
3487 (format #t (string-append
3489 "org.apache.commons.codec.** "
3490 "org.apache.maven.surefire.shade.api."
3491 "org.apache.commons.codec.@1~%"))))
3492 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3494 (rename-file outjar injar)))
3497 (install-from-pom "surefire-api/pom.xml")))))
3499 (list java-surefire-logger-api java-commons-codec
3500 java-surefire-parent-pom maven-shared-utils-3.1))
3504 (list unzip java-jarjar))
3505 (synopsis "Maven SureFire API")
3506 (description "This package contains the API to use Maven SureFire.")))
3508 (define-public java-surefire-booter
3510 (inherit java-surefire-logger-api)
3511 (name "java-surefire-booter")
3513 `(#:tests? #f; require mockito 2
3514 #:jar-name "java-surefire-booter.jar"
3515 #:source-dir "surefire-booter/src/main/java"
3517 (modify-phases %standard-phases
3518 (add-before 'build 'fix-/bin/sh
3520 (substitute* "surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java"
3521 (("/bin/sh") (which "sh")))
3524 (install-from-pom "surefire-booter/pom.xml")))))
3526 (list java-surefire-api java-commons-lang3 java-commons-io
3527 java-surefire-parent-pom))
3530 (synopsis "API and Facilities used by forked tests running in JVM sub-process")
3531 (description "SureFire runs tests inside a forked JVM subprocess. This
3532 package contains an API and facilities used inside that forked JVM.")))
3534 (define-public java-surefire-extensions-api
3536 (inherit java-surefire-logger-api)
3537 (name "java-surefire-extensions-api")
3539 `(#:tests? #f; requires mockito 2
3540 #:jar-name "java-surefire-extensions-api.jar"
3541 #:source-dir "surefire-extensions-api/src/main/java"
3543 (modify-phases %standard-phases
3545 (install-from-pom "surefire-extensions-api/pom.xml")))))
3547 (list java-surefire-api java-surefire-parent-pom))
3549 (list java-plexus-component-annotations))
3550 (synopsis "Extension API for Maven SureFire")
3551 (description "Surefire is a test framework project. This is the aggregator
3552 POM in Apache Maven Surefire project.")))
3554 (define-public java-surefire-common-java5
3556 (inherit java-surefire-logger-api)
3557 (name "java-surefire-common-java5")
3559 `(#:jar-name "java-surefire-common-java5.jar"
3560 #:source-dir "surefire-providers/common-java5/src/main/java"
3561 #:test-dir "surefire-providers/common-java5/src/test"
3562 #:test-exclude (list
3564 "**/PojoStackTraceWriterTest.java"
3566 "**/SmartStackTraceParserTest.java")
3568 (modify-phases %standard-phases
3569 (add-before 'build 'prepare-shade
3570 (lambda* (#:key inputs #:allow-other-keys)
3571 (mkdir-p "build/classes")
3572 (with-directory-excursion "build/classes"
3575 (invoke "jar" "xf" jar-file)
3576 (delete-file-recursively "META-INF"))
3577 (find-files (assoc-ref inputs "maven-shared-utils") ".*.jar$")))
3579 (add-after 'build 'shade
3580 (lambda* (#:key inputs #:allow-other-keys)
3582 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3583 (injar "java-surefire-common-java5.jar")
3584 (outjar "java-surefire-common-java5-shaded.jar"))
3585 (with-directory-excursion "build/jar"
3586 (with-output-to-file "rules"
3588 (format #t (string-append
3590 "org.apache.maven.shared.utils.** "
3591 "org.apache.maven.surefire.shade.common."
3592 "org.apache.maven.shared.utils.@1~%"))))
3593 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3595 (rename-file outjar injar)))
3598 (install-from-pom "surefire-providers/common-java5/pom.xml")))))
3600 (list maven-shared-utils-3.1 java-surefire-api
3601 java-surefire-parent-pom))
3603 (list unzip java-jarjar java-junit java-fest-assert))
3604 (synopsis "Common java5 facilities for Maven SureFire")
3605 (description "This package contains shared Java 5 code for all providers.")))
3607 (define-public java-surefire-common-junit3
3609 (inherit java-surefire-logger-api)
3610 (name "java-surefire-common-junit3")
3612 `(#:jar-name "java-surefire-common-junit3.jar"
3613 #:source-dir "surefire-providers/common-junit3/src/main/java"
3614 #:test-dir "surefire-providers/common-junit3/src/test"
3616 (modify-phases %standard-phases
3618 (install-from-pom "surefire-providers/common-junit3/pom.xml")))))
3620 (list java-junit java-surefire-api java-surefire-parent-pom))
3622 (list unzip java-junit java-fest-assert))
3623 (synopsis "Shared JUnit3 provider code for Maven SureFire")
3624 (description "This package contains shared code for all JUnit providers.")))
3626 (define-public java-surefire-common-junit4
3628 (inherit java-surefire-logger-api)
3629 (name "java-surefire-common-junit4")
3631 `(#:jar-name "java-surefire-common-junit4.jar"
3632 #:source-dir "surefire-providers/common-junit4/src/main/java"
3633 #:tests? #f; tests require junit 4.0
3635 (modify-phases %standard-phases
3637 (install-from-pom "surefire-providers/common-junit4/pom.xml")))))
3641 java-surefire-common-java5
3642 java-surefire-common-junit3
3643 maven-shared-utils-3.1
3644 java-surefire-parent-pom))
3645 (synopsis "Shared JUnit4 provider code for Maven SureFire")
3646 (description "This package contains shared code for all JUnit providers,
3647 starting from JUnit 4.")))
3649 (define-public java-surefire-junit4
3651 (inherit java-surefire-logger-api)
3652 (name "java-surefire-junit4")
3655 #:jar-name "java-surefire-junit4.jar"
3656 #:source-dir "surefire-providers/surefire-junit4/src/main/java"
3657 #:test-dir "surefire-providers/surefire-junit4/src/test"
3658 #:modules ((guix build ant-build-system)
3660 (guix build java-utils)
3663 (modify-phases %standard-phases
3664 (add-before 'install 'regenerate-own-pom
3665 ;; Surefire struggles resolving artifacts because of this pom
3666 ;; file, resulting in a NullPointerException when collecting
3667 ;; Artifacts (and a "Failure detected." message from
3668 ;; DefaultArtifactResolver). Replace the pom file with a much
3669 ;; simpler one. Everything is shaded anyway (as used to be the
3670 ;; case in 2.22), so there will not be missing dependencies.
3672 "surefire-providers/surefire-junit4/pom.xml"
3673 "org.apache.maven.surefire" "surefire-junit4"
3674 ,(package-version java-surefire-common-java5)
3675 #:name "Surefire JUnit4"))
3676 (add-before 'build 'copy-resources
3678 (mkdir-p "build/classes")
3679 (copy-recursively "surefire-providers/surefire-junit4/src/main/resources"
3682 (add-before 'build 'prepare-shade
3683 (lambda* (#:key inputs #:allow-other-keys)
3684 (mkdir-p "build/classes")
3685 (with-directory-excursion "build/classes"
3690 (invoke "jar" "xf" jar-file)
3691 (delete-file-recursively "META-INF"))
3692 (find-files (assoc-ref inputs input) ".*.jar$")))
3693 '("maven-shared-utils" "java-surefire-common-java5"
3694 "java-surefire-common-junit3" "java-surefire-common-junit4"
3695 "java-surefire-api")))
3697 (add-after 'build 'shade
3698 (lambda* (#:key inputs #:allow-other-keys)
3700 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3701 (injar "java-surefire-junit4.jar")
3702 (outjar "java-surefire-junit4-shaded.jar"))
3703 (with-directory-excursion "build/jar"
3704 (with-output-to-file "rules"
3706 (format #t (string-append
3708 "org.apache.maven.shared.utils.** "
3709 "org.apache.maven.surefire.shade."
3710 "org.apache.maven.shared.utils.@1~%"))))
3711 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3713 (rename-file outjar injar)))
3716 (install-from-pom "surefire-providers/surefire-junit4/pom.xml")))))
3718 (list java-junit java-surefire-parent-pom))
3720 (list java-surefire-common-junit4 java-surefire-common-junit3
3721 java-surefire-common-java5 java-surefire-api))
3723 (list java-jarjar unzip java-junit java-hamcrest-all
3725 (synopsis "SureFire JUnit 4.0+ runner")
3726 (description "This package contains the runner for tests run on a forked
3727 JVM, using JUnit 4.0 or later.")))
3729 (define-public maven-surefire-common
3731 (inherit java-surefire-logger-api)
3732 (name "maven-surefire-common")
3734 `(#:tests? #f; require mockito 2
3735 #:jar-name "maven-surefire-common.jar"
3736 #:source-dir "maven-surefire-common/src/main/java"
3738 (modify-phases %standard-phases
3739 (add-before 'build 'prepare-shade
3740 (lambda* (#:key inputs #:allow-other-keys)
3741 (mkdir-p "build/classes")
3742 (with-directory-excursion "build/classes"
3747 (invoke "jar" "xf" jar-file)
3748 (delete-file-recursively "META-INF"))
3749 (find-files (assoc-ref inputs input) ".*.jar$")))
3750 '("maven-shared-utils" "java-commons-io" "java-commons-lang3"
3751 "java-commons-compress" "maven-common-artifact-filters")))
3753 (add-after 'build 'shade
3754 (lambda* (#:key inputs #:allow-other-keys)
3756 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3757 (injar "maven-surefire-common.jar")
3758 (outjar "maven-surefire-common-shaded.jar"))
3759 (with-directory-excursion "build/jar"
3760 (with-output-to-file "rules"
3762 (format #t (string-append
3764 "org.apache.maven.shared.utils.** "
3765 "org.apache.maven.surefire.shade.common."
3766 "org.apache.maven.shared.utils.@1~%"))
3767 (format #t (string-append
3769 "org.apache.commons.io.** "
3770 "org.apache.maven.surefire.shade.common."
3771 "org.apache.commons.io.@1~%"))
3772 (format #t (string-append
3774 "org.apache.commons.lang3.** "
3775 "org.apache.maven.surefire.shade.common."
3776 "org.apache.commons.lang3.@1~%"))
3777 (format #t (string-append
3779 "org.apache.commons.compress.** "
3780 "org.apache.maven.surefire.shade.common."
3781 "org.apache.commons.compress.@1~%"))))
3782 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3784 (rename-file outjar injar)))
3786 (add-before 'install 'fix-pom
3788 (substitute* "maven-surefire-common/pom.xml"
3789 (("maven-toolchain") "maven-core"))
3792 (install-from-pom "maven-surefire-common/pom.xml")))))
3794 (list java-surefire-api
3795 java-surefire-extensions-api
3796 java-surefire-booter
3798 maven-plugin-annotations
3799 maven-common-artifact-filters
3800 maven-artifact-transfer
3805 java-commons-compress
3806 maven-shared-utils-3.1
3807 java-surefire-parent-pom))
3811 (list unzip java-jarjar))
3812 (synopsis "API used in Surefire and Failsafe MOJO")
3813 (description "This package contains an API used in SureFire and Failsafe
3816 (define-public maven-surefire-plugin
3818 (inherit java-surefire-logger-api)
3819 (name "maven-surefire-plugin")
3821 `(#:jar-name "maven-surefire-plugin.jar"
3822 #:source-dir "maven-surefire-plugin/src/main/java"
3823 #:tests? #f; test depends on maven-plugin-test-harness
3825 (modify-phases %standard-phases
3826 (add-before 'build 'generate-plugin.xml
3827 (generate-plugin.xml "maven-surefire-plugin/pom.xml"
3832 "maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java"
3833 "maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java"))))
3835 (install-from-pom "maven-surefire-plugin/pom.xml")))))
3837 (list maven-surefire-common maven-core))
3839 (list maven-plugin-annotations unzip))
3840 (synopsis "SureFire Maven plugin that runs tests")
3841 (description "The Surefire Plugin is used during the test phase of the
3842 build lifecycle to execute the unit tests of an application. It generates
3843 reports in two different file formats, plain text and xml.")))
3845 (define-public maven-jar-plugin
3847 (name "maven-jar-plugin")
3852 (url "https://github.com/apache/maven-jar-plugin")
3853 (commit (string-append "maven-jar-plugin-" version))))
3854 (file-name (git-file-name name version))
3857 "04y2rlmcabmc55ljqlkgbb5xx94a59cz1dvrnpfj1vzz024pqkyg"))))
3858 (build-system ant-build-system)
3860 `(#:jar-name "maven-jar-plugin.jar"
3861 #:source-dir "src/main/java"
3862 #:tests? #f; test depends on maven-plugin-test-harness
3864 (modify-phases %standard-phases
3865 (add-before 'build 'generate-plugin.xml
3866 (generate-plugin.xml "pom.xml"
3868 "src/main/java/org/apache/maven/plugins/jar"
3870 (list "AbstractJarMojo.java" "JarMojo.java")
3871 (list "AbstractJarMojo.java" "TestJarMojo.java"))))
3873 (install-from-pom "pom.xml")))))
3875 (list maven-archiver
3878 maven-3.0-plugin-api
3879 maven-file-management
3881 java-plexus-archiver
3884 (list maven-plugin-annotations))
3885 (home-page "https://maven.apache.org/plugins/maven-jar-plugin")
3886 (synopsis "Jar builder plugin for Maven")
3887 (description "This plugin provides the capability to build jars. If you
3888 would like to sign jars please use the Maven Jarsigner Plugin instead.")
3889 (license license:asl2.0)))