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>
6 ;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
8 ;;; This file is part of GNU Guix.
10 ;;; GNU Guix is free software; you can redistribute it and/or modify it
11 ;;; under the terms of the GNU General Public License as published by
12 ;;; the Free Software Foundation; either version 3 of the License, or (at
13 ;;; your option) any later version.
15 ;;; GNU Guix is distributed in the hope that it will be useful, but
16 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ;;; GNU General Public License for more details.
20 ;;; You should have received a copy of the GNU General Public License
21 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
23 (define-module (gnu packages maven)
24 #:use-module ((guix licenses) #:prefix license:)
25 #:use-module (guix packages)
26 #:use-module (guix download)
27 #:use-module (guix git-download)
28 #:use-module (guix utils)
29 #:use-module (guix build-system ant)
30 #:use-module (gnu packages)
31 #:use-module (gnu packages base)
32 #:use-module (gnu packages compression)
33 #:use-module (gnu packages java)
34 #:use-module (gnu packages maven-parent-pom)
35 #:use-module (gnu packages web)
36 #:use-module (gnu packages xml)
37 #:use-module (ice-9 match))
39 (define-public maven-resolver-api
41 (name "maven-resolver-api")
46 (url "https://github.com/apache/maven-resolver")
47 (commit (string-append "maven-resolver-" version))))
48 (file-name (git-file-name name version))
51 "0hbbbxj14qyq8pccyab96pjqq90jnjmid1pml9kx55c5smfpjn37"))))
52 (build-system ant-build-system)
54 `(#:jar-name "maven-resolver-api.jar"
55 #:source-dir "maven-resolver-api/src/main/java"
56 #:test-dir "maven-resolver-api/src/test"
58 (modify-phases %standard-phases
60 (install-from-pom "maven-resolver-api/pom.xml")))))
62 `(("java-asm-8" ,java-asm-8)
63 ("java-cglib" ,java-cglib)
64 ("java-hamcrest-core" ,java-hamcrest-core)
65 ("java-junit" ,java-junit)
66 ("java-mockito-1" ,java-mockito-1)
67 ("java-objenesis" ,java-objenesis)))
69 (list maven-resolver-parent-pom))
70 (home-page "https://github.com/apache/maven-resolver")
71 (synopsis "Maven repository system API")
72 (description "This package contains the API for the maven repository system.")
73 (license license:asl2.0)))
75 (define maven-resolver-parent-pom
77 (inherit maven-resolver-api)
78 (name "maven-resolver-parent-pom")
82 (modify-phases %standard-phases
85 (add-before 'install 'fix-pom
87 (substitute* "pom.xml"
88 (("<classifier>no_aop</classifier>") ""))
91 (install-pom-file "pom.xml")))))
92 (propagated-inputs '())))
94 (define-public maven-resolver-spi
96 (inherit maven-resolver-api)
97 (name "maven-resolver-spi")
99 `(#:jar-name "maven-resolver-spi.jar"
100 #:source-dir "maven-resolver-spi/src/main/java"
101 #:test-dir "maven-resolver-spi/src/test"
103 (modify-phases %standard-phases
105 (install-from-pom "maven-resolver-spi/pom.xml")))))
107 (list maven-resolver-api))
108 (synopsis "Maven repository system SPI")
109 (description "This package contains the service provider interface (SPI)
110 for repository system implementations and repository connectors.")))
112 (define-public maven-resolver-test-util
114 (inherit maven-resolver-api)
115 (name "maven-resolver-test-util")
117 `(#:jar-name "maven-resolver-test-util.jar"
118 #:source-dir "maven-resolver-test-util/src/main/java"
119 #:test-dir "maven-resolver-test-util/src/test"
122 (list maven-resolver-api maven-resolver-spi))
123 (synopsis "Utility classes for testing the maven repository system")
124 (description "This package contains a collection of utility classes to
125 ease testing of the repository system.")))
127 (define-public maven-resolver-util
129 (inherit maven-resolver-api)
130 (name "maven-resolver-util")
132 `(#:jar-name "maven-resolver-util.jar"
133 #:source-dir "maven-resolver-util/src/main/java"
134 #:test-dir "maven-resolver-util/src/test"
136 (modify-phases %standard-phases
138 (install-from-pom "maven-resolver-util/pom.xml")))))
140 (list maven-resolver-api))
142 (list java-junit java-hamcrest-core maven-resolver-test-util))
143 (synopsis "Utility classes for the maven repository system")
144 (description "This package contains a collection of utility classes to
145 ease usage of the repository system.")))
147 (define-public maven-resolver-connector-basic
149 (inherit maven-resolver-api)
150 (name "maven-resolver-connector-basic")
152 `(#:jar-name "maven-resolver-connector-basic.jar"
153 #:source-dir "maven-resolver-connector-basic/src/main/java"
154 #:test-dir "maven-resolver-connector-basic/src/test"
157 (modify-phases %standard-phases
158 (add-before 'build 'generate-sisu
160 (mkdir-p "build/classes/META-INF/sisu")
161 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
163 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
166 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
168 (list maven-resolver-api maven-resolver-spi maven-resolver-util
171 (list java-javax-inject java-junit maven-resolver-test-util))
172 (synopsis "Maven repository connector implementation")
173 (description "This package contains a repository connector implementation
174 for repositories using URI-based layouts.")))
176 (define-public maven-resolver-impl
178 (inherit maven-resolver-api)
179 (name "maven-resolver-impl")
181 `(#:jar-name "maven-resolver-impl.jar"
182 #:source-dir "maven-resolver-impl/src/main/java"
183 #:test-dir "maven-resolver-impl/src/test"
185 (modify-phases %standard-phases
186 (add-before 'build 'generate-sisu
188 (mkdir-p "build/classes/META-INF/sisu")
189 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
193 ;; Build this list by looking for files containing "@Named"
194 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
195 "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
196 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
197 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
198 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
199 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
200 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
201 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
202 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
203 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
204 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
205 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
206 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
207 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
208 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
209 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
210 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
211 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
212 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
213 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
214 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
215 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
216 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
219 (install-from-pom "maven-resolver-impl/pom.xml")))))
221 (list maven-resolver-api
225 java-eclipse-sisu-inject
229 maven-resolver-parent-pom))
231 (list java-junit maven-resolver-test-util))))
233 (define-public maven-resolver-transport-wagon
235 (inherit maven-resolver-api)
236 (name "maven-resolver-transport-wagon")
238 `(#:jar-name "maven-resolver-transport-wagon.jar"
239 #:source-dir "maven-resolver-transport-wagon/src/main/java"
240 #:test-dir "maven-resolver-transport-wagon/src/test"
243 (modify-phases %standard-phases
244 (add-before 'build 'generate-sisu
246 (mkdir-p "build/classes/META-INF/sisu")
247 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
249 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
251 (add-before 'build 'generate-components.xml
253 (mkdir-p "build/classes/META-INF/plexus")
254 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
258 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
262 <role>org.eclipse.aether.transport.wagon.WagonConfigurator</role>
263 <role-hint>plexus</role-hint>
264 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator</implementation>
266 <isolated-realm>false</isolated-realm>
269 <role>org.codehaus.plexus.PlexusContainer</role>
271 <field-name>container</field-name>
276 <role>org.eclipse.aether.transport.wagon.WagonProvider</role>
277 <role-hint>plexus</role-hint>
278 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider</implementation>
280 <isolated-realm>false</isolated-realm>
283 <role>org.codehaus.plexus.PlexusContainer</role>
285 <field-name>container</field-name>
290 </component-set>\n"))))
293 `(("maven-resolver-api" ,maven-resolver-api)
294 ("maven-resolver-spi" ,maven-resolver-spi)
295 ("maven-resolver-util" ,maven-resolver-util)
296 ("java-javax-inject" ,java-javax-inject)
297 ("mavne-wagon-provider-api" ,maven-wagon-provider-api)
298 ("java-plexus-component-annotation" ,java-plexus-component-annotations-1.7)
299 ("java-plexus-classworld" ,java-plexus-classworlds)
300 ("java-plexus-plexus-util" ,java-plexus-utils)
301 ("java-slf4j-api" ,java-slf4j-api)
302 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
303 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
307 maven-resolver-test-util
312 (synopsis "Transport implementation for Maven")
313 (description "This package contains a transport implementation based on
314 Maven Wagon, for use in Maven.")))
316 (define-public maven-resolver-transport-file
318 (inherit maven-resolver-api)
319 (name "maven-resolver-transport-file")
321 `(#:jar-name "maven-resolver-transport-file.jar"
322 #:source-dir "maven-resolver-transport-file/src/main/java"
323 #:test-dir "maven-resolver-transport-file/src/test"
326 (modify-phases %standard-phases
327 (add-before 'build 'generate-sisu
329 (mkdir-p "build/classes/META-INF/sisu")
330 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
332 (display "org.eclipse.aether.transport.file.FileTransporterFactory\n"))))))))
334 (list java-eclipse-sisu-inject
335 java-eclipse-sisu-plexus
337 java-plexus-classworlds
338 java-plexus-component-annotations
344 maven-wagon-provider-api))
353 maven-resolver-test-util))
354 (synopsis "Transport implementation for Maven")
355 (description "This package contains a transport implementation based on
356 files, for use in Maven.")))
358 (define-public maven-resolver-transport-http
360 (inherit maven-resolver-api)
361 (name "maven-resolver-transport-http")
363 `(#:jar-name "maven-resolver-transport-http.jar"
364 #:source-dir "maven-resolver-transport-http/src/main/java"
365 #:test-dir "maven-resolver-transport-http/src/test"
367 ;; Tests all fail because
368 ;; org.eclipse.aether.transport.http.SslSocketFactory is not available.
371 (modify-phases %standard-phases
372 (add-before 'build 'generate-sisu
374 (mkdir-p "build/classes/META-INF/sisu")
375 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
377 (display "org.eclipse.aether.transport.http.HttpTransporterFactory\n"))))))))
379 (list java-eclipse-sisu-inject
380 java-eclipse-sisu-plexus
382 java-plexus-classworlds
383 java-plexus-component-annotations
389 maven-wagon-provider-api))
391 (list java-httpcomponents-httpclient
392 java-httpcomponents-httpcore))
394 (list java-aopalliance
397 java-eclipse-aether-api
398 java-eclipse-jetty-http
399 java-eclipse-jetty-io
400 java-eclipse-jetty-server
401 java-eclipse-jetty-servlet
402 java-eclipse-jetty-util
406 java-javaee-servletapi
408 maven-resolver-test-util))
409 (synopsis "Transport implementation for Maven")
410 (description "This package contains a transport implementation based on
411 HTTP, for use in Maven.")))
413 ;; aether is the parent project that was forked into maven-resolver. It used
414 ;; to be used with older versions of Maven, and is still required for some
415 ;; plugins and their dependencies. This version is required for the plugins,
416 ;; even though there are newer versions of this project.
417 (define-public java-sonatype-aether-api
419 (name "java-sonatype-aether-api")
424 (url "https://github.com/sonatype/sonatype-aether")
425 (commit (string-append "aether-" version))))
426 (file-name (git-file-name name version))
429 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
430 (build-system ant-build-system)
432 `(#:jar-name "aether-api.jar"
433 #:source-dir "aether-api/src/main/java"
434 #:test-dir "aether-api/src/test"
436 (modify-phases %standard-phases
437 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
438 (replace 'install (install-from-pom "aether-api/pom.xml")))))
440 (list java-sonatype-forge-parent-pom-6))
441 (native-inputs (list java-junit))
442 (home-page "https://github.com/sonatype/sonatype-aether")
443 (synopsis "Maven repository system API")
444 (description "This package contains the API for the maven repository system.")
445 (license license:asl2.0)))
447 (define-public java-sonatype-aether-spi
449 (inherit java-sonatype-aether-api)
450 (name "java-sonatype-aether-spi")
452 `(#:jar-name "aether-spi.jar"
453 #:source-dir "aether-spi/src/main/java"
454 #:tests? #f; no tests
456 (modify-phases %standard-phases
457 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
459 (list java-sonatype-aether-api))
460 (synopsis "Maven repository system SPI")
461 (description "This package contains the service provider interface (SPI)
462 for repository system implementations and repository connectors.")))
464 (define-public java-sonatype-aether-test-util
466 (inherit java-sonatype-aether-api)
467 (name "java-sonatype-aether-test-util")
469 `(#:jar-name "java-sonatype-aether-test-util.jar"
470 #:source-dir "aether-test-util/src/main/java"
471 #:test-dir "aether-test-util/src/test"))
473 (list java-sonatype-aether-api java-sonatype-aether-spi))
474 (synopsis "Utility classes for testing the maven repository system")
475 (description "This package contains a collection of utility classes to
476 ease testing of the repository system.")))
478 (define-public java-sonatype-aether-util
480 (inherit java-sonatype-aether-api)
481 (name "java-sonatype-aether-util")
483 `(#:jar-name "aether-util.jar"
484 #:source-dir "aether-util/src/main/java"
485 #:test-dir "aether-util/src/test"
487 (modify-phases %standard-phases
488 (replace 'install (install-from-pom "aether-util/pom.xml")))))
490 (list java-sonatype-aether-api))
492 (list java-junit java-sonatype-aether-test-util))
493 (synopsis "Utility classes for the maven repository system")
494 (description "This package contains a collection of utility classes to
495 ease usage of the repository system.")))
497 (define-public java-sonatype-aether-impl
499 (inherit java-sonatype-aether-api)
500 (name "java-sonatype-aether-impl")
502 `(#:jar-name "aether-impl.jar"
503 #:source-dir "aether-impl/src/main/java"
504 #:test-dir "aether-impl/src/test"
506 (modify-phases %standard-phases
507 (add-before 'install 'fix-pom
509 (substitute* "aether-impl/pom.xml"
510 (("org.sonatype.sisu") "org.codehaus.plexus")
511 (("sisu-inject-plexus") "plexus-container-default"))
513 (add-after 'build 'generate-metadata
515 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
516 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
517 "--source" "src/main/java"
518 "--output" "build/classes/META-INF/plexus/components.xml"
519 "--classes" "build/classes"
520 "--descriptors" "build/classes/META-INF")
522 (add-after 'generate-metadata 'rebuild
526 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
528 (list java-sonatype-aether-api
529 java-sonatype-aether-spi
530 java-sonatype-aether-util
531 java-plexus-component-annotations
532 java-plexus-container-default
535 (list java-junit java-plexus-component-metadata
536 java-sonatype-aether-test-util))))
538 ;; This slightly newer version is also required by some plugins
539 (define-public java-sonatype-aether-api-1.13
541 (name "java-sonatype-aether-api")
546 (url "https://github.com/sonatype/sonatype-aether")
547 (commit (string-append "aether-" version))))
548 (file-name (git-file-name name version))
551 "1yl34dqhm6ykb7h63gkssyrdxv3dsa3n5b8d8cvy8rh4qsm6p2yb"))))
552 (build-system ant-build-system)
554 `(#:jar-name "aether-api.jar"
555 #:source-dir "aether-api/src/main/java"
556 #:test-dir "aether-api/src/test"
558 (modify-phases %standard-phases
559 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
560 (replace 'install (install-from-pom "aether-api/pom.xml")))))
562 `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-10)))
563 (native-inputs `(("java-junit" ,java-junit)))
564 (home-page "https://github.com/sonatype/sonatype-aether")
565 (synopsis "Maven repository system API")
566 (description "This package contains the API for the maven repository system.")
567 (license license:asl2.0)))
569 (define-public java-sonatype-aether-spi-1.13
571 (inherit java-sonatype-aether-api-1.13)
572 (name "java-sonatype-aether-spi")
574 `(#:jar-name "aether-spi.jar"
575 #:source-dir "aether-spi/src/main/java"
576 #:tests? #f; no tests
578 (modify-phases %standard-phases
579 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
581 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)))
582 (synopsis "Maven repository system SPI")
583 (description "This package contains the service provider interface (SPI)
584 for repository system implementations and repository connectors.")))
586 (define-public java-sonatype-aether-test-util-1.13
588 (inherit java-sonatype-aether-api-1.13)
589 (name "java-sonatype-aether-test-util")
591 `(#:jar-name "java-sonatype-aether-test-util.jar"
592 #:source-dir "aether-test-util/src/main/java"
593 #:test-dir "aether-test-util/src/test"))
595 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)
596 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi-1.13)))
597 (synopsis "Utility classes for testing the maven repository system")
598 (description "This package contains a collection of utility classes to
599 ease testing of the repository system.")))
601 (define-public java-sonatype-aether-util-1.13
603 (inherit java-sonatype-aether-api-1.13)
604 (name "java-sonatype-aether-util")
606 `(#:jar-name "aether-util.jar"
607 #:source-dir "aether-util/src/main/java"
608 #:test-dir "aether-util/src/test"
610 (modify-phases %standard-phases
611 (replace 'install (install-from-pom "aether-util/pom.xml")))))
613 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)))
615 `(("java-junit" ,java-junit)
616 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util-1.13)))
617 (synopsis "Utility classes for the maven repository system")
618 (description "This package contains a collection of utility classes to
619 ease usage of the repository system.")))
621 ;; Again, this old version is required by some maven plugins
622 (define-public java-eclipse-aether-api
624 (name "java-eclipse-aether-api")
629 (url "https://github.com/eclipse/aether-core")
630 (commit "aether-1.0.2.v20150114")))
631 (file-name (git-file-name name version))
634 "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
635 (build-system ant-build-system)
637 `(#:jar-name "aether-api.jar"
638 #:source-dir "aether-api/src/main/java"
639 #:test-dir "aether-api/src/test"
641 (modify-phases %standard-phases
642 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
643 (replace 'install (install-from-pom "aether-api/pom.xml")))))
644 (native-inputs (list java-junit))
645 (home-page "https://github.com/sonatype/sonatype-aether")
646 (synopsis "Maven repository system API")
647 (description "This package contains the API for the maven repository system.")
648 (license license:asl2.0)))
650 (define-public java-eclipse-aether-spi
652 (inherit java-eclipse-aether-api)
653 (name "java-eclipse-aether-spi")
655 `(#:jar-name "aether-spi.jar"
656 #:source-dir "aether-spi/src/main/java"
657 #:test-dir "aether-spi/src/test"
659 (modify-phases %standard-phases
660 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
662 (list java-eclipse-aether-api))
663 (synopsis "Maven repository system SPI")
664 (description "This package contains the service provider interface (SPI)
665 for repository system implementations and repository connectors.")))
667 (define-public java-eclipse-aether-test-util
669 (inherit java-eclipse-aether-api)
670 (name "java-eclipse-aether-test-util")
672 `(#:jar-name "aether-test-util.jar"
673 #:source-dir "aether-test-util/src/main/java"
674 #:test-dir "aether-test-util/src/test"
676 (modify-phases %standard-phases
677 (replace 'install (install-from-pom "aether-util/pom.xml")))))
679 (list java-eclipse-aether-api java-eclipse-aether-spi))
680 (synopsis "Utility classes for testing the maven repository system")
681 (description "This package contains a collection of utility classes to
682 ease testing of the repository system.")))
684 (define-public java-eclipse-aether-util
686 (inherit java-eclipse-aether-api)
687 (name "java-eclipse-aether-util")
689 `(#:jar-name "aether-util.jar"
690 #:source-dir "aether-util/src/main/java"
691 #:test-dir "aether-util/src/test"
693 (modify-phases %standard-phases
694 (replace 'install (install-from-pom "aether-util/pom.xml")))))
696 (list java-eclipse-aether-api))
698 (list java-eclipse-aether-test-util java-junit))
699 (synopsis "Utility classes for the maven repository system")
700 (description "This package contains a collection of utility classes to
701 ease usage of the repository system.")))
703 (define-public java-eclipse-aether-impl
705 (inherit java-eclipse-aether-api)
706 (name "java-eclipse-aether-impl")
708 `(#:jar-name "aether-impl.jar"
709 #:source-dir "aether-impl/src/main/java"
710 #:test-dir "aether-impl/src/test"
712 (modify-phases %standard-phases
713 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
715 (list java-eclipse-aether-api
716 java-eclipse-aether-spi
717 java-eclipse-aether-util
719 java-eclipse-sisu-inject
723 (list java-eclipse-aether-test-util java-junit))))
725 (define-public maven-shared-utils
727 (name "maven-shared-utils")
731 (uri (string-append "mirror://apache/maven/shared/"
732 "maven-shared-utils-" version "-source-release.zip"))
735 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
736 (build-system ant-build-system)
738 `(#:jar-name "maven-shared-utils.jar"
739 #:source-dir "src/main/java"
741 (modify-phases %standard-phases
742 (add-before 'build 'fix-/bin/sh-invocation
744 (substitute* (find-files "src" ".*.java$")
745 (("/bin/sh") (which "sh")))
747 (add-before 'check 'remove-cyclic-dep
750 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
753 (install-from-pom "pom.xml")))))
755 `(("java-jansi" ,java-jansi)
756 ("java-commons-io" ,java-commons-io)
757 ("java-jsr305" ,java-jsr305)
758 ("java-plexus-container-default" ,java-plexus-container-default)
759 ("maven-parent-pom-30" ,maven-parent-pom-30)))
761 (list unzip java-junit java-hamcrest-core java-commons-lang3))
762 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
763 (synopsis "Plexus-util replacement for maven")
764 (description "This project aims to be a functional replacement for
765 plexus-utils in Maven. It is not a 100% API compatible replacement but a
766 replacement with improvements.")
767 (license license:asl2.0)))
769 (define-public maven-plugin-annotations
771 (name "maven-plugin-annotations")
775 (uri (string-append "mirror://apache/maven/"
776 "plugin-tools/maven-plugin-tools-" version
777 "-source-release.zip"))
778 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
779 (build-system ant-build-system)
781 `(#:jar-name "maven-plugin-annotations.jar"
782 #:source-dir "maven-plugin-annotations/src/main/java"
785 (modify-phases %standard-phases
787 (install-from-pom "maven-plugin-annotations/pom.xml")))))
789 (list maven-artifact maven-plugin-tools-parent-pom))
792 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
793 (synopsis "Java 5 annotations to use in Mojos")
794 (description "This package contains Java 5 annotations for use in Mojos.")
795 (license license:asl2.0)))
797 (define maven-plugin-tools-parent-pom
799 (inherit maven-plugin-annotations)
800 (name "maven-plugin-tools-parent-pom")
804 (modify-phases %standard-phases
808 (install-pom-file "pom.xml")))))
809 (propagated-inputs '())))
811 (define-public maven-wagon-provider-api
813 (name "maven-wagon-provider-api")
817 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
818 "wagon-" version "-source-release.zip"))
821 "1rnviw0yr4g5902fb8pkd1gyvci4bz7hndjvhkqmnkj7ay0y6mf0"))))
822 (build-system ant-build-system)
824 `(#:jar-name "maven-wagon-provider-api.jar"
825 #:source-dir "wagon-provider-api/src/main/java"
826 #:test-dir "wagon-provider-api/src/test"
828 (modify-phases %standard-phases
830 (install-from-pom "wagon-provider-api/pom.xml")))))
832 `(("java-plexus-utils" ,java-plexus-utils)
833 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
835 (list unzip java-junit java-easymock))
836 (home-page "https://maven.apache.org/wagon")
837 (synopsis "Transport abstraction for Maven")
838 (description "Maven Wagon is a transport abstraction that is used in Maven's
839 artifact and repository handling code.")
840 (license license:asl2.0)))
842 (define maven-wagon-parent-pom
844 (inherit maven-wagon-provider-api)
848 (modify-phases %standard-phases
852 (install-pom-file "pom.xml")))))
854 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
856 `(("unzip" ,unzip)))))
858 (define-public maven-wagon-provider-test
860 (inherit maven-wagon-provider-api)
861 (name "maven-wagon-provider-test")
863 `(#:jar-name "maven-wagon-provider-test.jar"
864 #:source-dir "wagon-provider-test/src/main/java"
865 #:tests? #f; no tests
868 `(("java-plexus-utils" ,java-plexus-utils)
869 ("java-plexus-container-default" ,java-plexus-container-default)
870 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
871 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
872 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
873 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
874 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
875 ("java-slf4j-api" ,java-slf4j-api)
876 ("java-javaee-servletapi" ,java-javaee-servletapi)
877 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
878 (synopsis "Test classes from maven-wagon")
879 (description "Maven Wagon is a transport abstraction that is used in Maven's
880 artifact and repository handling code. This package contains common test
881 classes used in multiple maven-wagon components.")))
883 (define-public maven-wagon-file
885 (inherit maven-wagon-provider-api)
886 (name "maven-wagon-file")
888 `(#:jar-name "maven-wagon-file.jar"
889 #:source-dir "wagon-providers/wagon-file/src/main/java"
890 #:test-dir "wagon-providers/wagon-file/src/test"
893 (modify-phases %standard-phases
894 (add-before 'check 'fix-paths
896 ;; Tests assume they are run by maven, which copies test resources
897 ;; to target. Our ant-build-system does the same, but with the
899 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
900 (("target") "build"))
902 (add-after 'build 'generate-metadata
904 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
905 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
906 "--source" "wagon-providers/wagon-file/src/main/java"
907 "--output" "build/classes/META-INF/plexus/components.xml"
908 "--classes" "build/classes"
909 "--descriptors" "build/classes/META-INF")
911 (add-after 'generate-metadata 'rebuild
916 (list java-plexus-utils maven-wagon-provider-api))
918 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
919 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
920 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
921 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
922 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
923 ("java-plexus-classworlds" ,java-plexus-classworlds)
924 ("java-guava" ,java-guava)
925 ("java-guice" ,java-guice)
926 ("java-javax-inject" ,java-javax-inject)
927 ("java-cglib" ,java-cglib)
928 ("java-slf4j-api" ,java-slf4j-api)
929 ("java-plexus-utils" ,java-plexus-utils)
930 ("java-plexus-cli" ,java-plexus-cli)
931 ("maven-plugin-api" ,maven-plugin-api)
932 ("maven-plugin-annotations" ,maven-plugin-annotations)
933 ("maven-core" ,maven-core)
934 ("maven-model" ,maven-model)
935 ("java-commons-cli" ,java-commons-cli)
936 ("java-qdox" ,java-qdox)
937 ("java-jdom2" ,java-jdom2)
938 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
939 ,@(package-native-inputs maven-wagon-provider-api)))
940 (synopsis "Wagon provider that gets and puts artifacts using the file system")
941 (description "Maven Wagon is a transport abstraction that is used in Maven's
942 artifact and repository handling code. It uses providers, that are tools to
943 manage artifacts and deployment. This package contains the file provider which
944 gets and puts artifacts using the file system.")))
946 (define-public maven-wagon-tck-http
948 (inherit maven-wagon-provider-api)
949 (name "maven-wagon-tck-http")
951 `(#:jar-name "maven-wagon-tck-http.jar"
952 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
953 #:tests? #f; no tests
956 `(("java-plexus-util" ,java-plexus-utils)
957 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
958 ("java-javaee-servletapi" ,java-javaee-servletapi)
959 ("java-slf4j-api" ,java-slf4j-api)
960 ("java-commons-codec" ,java-commons-codec)
961 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
962 ("java-plexus-classworlds" ,java-plexus-classworlds)
963 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
964 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
965 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
966 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
967 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
968 (synopsis "Wagon HTTP Test Compatibility Kit")
969 (description "Maven Wagon is a transport abstraction that is used in Maven's
970 artifact and repository handling code. This package contains the HTTP
971 Test Compatibility Kit.")))
973 (define-public maven-wagon-http-shared
975 (inherit maven-wagon-provider-api)
976 (name "maven-wagon-http-shared")
978 `(#:jar-name "maven-wagon-http-shared.jar"
979 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
980 #:test-dir "wagon-providers/wagon-http-shared/src/test"
983 (modify-phases %standard-phases
984 (add-after 'build 'generate-metadata
986 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
987 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
988 "--source" "wagon-providers/wagon-http-shared/src/main/java"
989 "--output" "build/classes/META-INF/plexus/components.xml"
990 "--classes" "build/classes"
991 "--descriptors" "build/classes/META-INF")
993 (add-after 'generate-metadata 'rebuild
998 (list java-plexus-utils
999 java-httpcomponents-httpclient
1000 java-httpcomponents-httpcore
1003 maven-wagon-provider-api))
1005 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
1006 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1007 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1008 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1009 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1010 ("java-plexus-classworlds" ,java-plexus-classworlds)
1011 ("java-guava" ,java-guava)
1012 ("java-guice" ,java-guice)
1013 ("java-javax-inject" ,java-javax-inject)
1014 ("java-cglib" ,java-cglib)
1015 ("java-slf4j-api" ,java-slf4j-api)
1016 ("java-plexus-utils" ,java-plexus-utils)
1017 ("java-plexus-cli" ,java-plexus-cli)
1018 ("maven-plugin-api" ,maven-plugin-api)
1019 ("maven-plugin-annotations" ,maven-plugin-annotations)
1020 ("maven-core" ,maven-core)
1021 ("maven-model" ,maven-model)
1022 ("java-commons-cli" ,java-commons-cli)
1023 ("java-qdox" ,java-qdox)
1024 ("java-jdom2" ,java-jdom2)
1025 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1026 ,@(package-native-inputs maven-wagon-provider-api)))
1027 (synopsis "Shared Library for wagon providers supporting HTTP")
1028 (description "Maven Wagon is a transport abstraction that is used in Maven's
1029 artifact and repository handling code. It uses providers, that are tools to
1030 manage artifacts and deployment. This package contains a shared library for
1031 wagon providers supporting HTTP.")))
1033 (define-public maven-wagon-http
1035 (inherit maven-wagon-provider-api)
1036 (name "maven-wagon-http")
1038 `(#:jar-name "maven-wagon-http.jar"
1039 #:source-dir "wagon-providers/wagon-http/src/main/java"
1040 #:test-dir "wagon-providers/wagon-http/src/test"
1041 #:test-exclude (list
1043 ;; FIXME: javax.net.ssl.SSLHandshakeException:
1044 ;; sun.security.validator.ValidatorException:
1045 ;; PKIX path building failed:
1046 ;; sun.security.provider.certpath.SunCertPathBuilderException:
1047 ;; unable to find valid certification path to requested target
1048 "**/HttpsWagonPreemptiveTest.java"
1049 "**/HttpsWagonTest.java"
1051 "**/HugeFileDownloadTest.java"
1056 (modify-phases %standard-phases
1057 (add-before 'build 'copy-resources
1059 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
1060 "build/classes/META-INF/plexus")
1062 (add-before 'check 'fix-resource-path
1064 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
1065 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
1066 (("src/test") "wagon-providers/wagon-http/src/test"))
1069 (list java-plexus-utils
1070 java-httpcomponents-httpclient
1071 java-httpcomponents-httpcore
1072 maven-wagon-http-shared
1073 maven-wagon-tck-http
1074 maven-wagon-provider-api))
1076 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
1077 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1078 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1079 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1080 ("java-plexus-container-default" ,java-plexus-container-default)
1081 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1082 ("java-plexus-classworlds" ,java-plexus-classworlds)
1083 ("java-guava" ,java-guava)
1084 ("java-guice" ,java-guice)
1085 ("java-inject" ,java-javax-inject)
1086 ("java-cglib" ,java-cglib)
1087 ("java-slf4j-api" ,java-slf4j-api)
1088 ("java-plexus-utils" ,java-plexus-utils)
1089 ("java-plexus-cli" ,java-plexus-cli)
1090 ("maven-plugin-api" ,maven-plugin-api)
1091 ("maven-plugin-annotations" ,maven-plugin-annotations)
1092 ("maven-slf4j-provider" ,maven-slf4j-provider)
1093 ("maven-core" ,maven-core)
1094 ("maven-model" ,maven-model)
1095 ("java-commons-cli" ,java-commons-cli)
1096 ("java-qdox" ,java-qdox)
1097 ("java-jdom2" ,java-jdom2)
1098 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1099 ("java-javaee-servletapi" ,java-javaee-servletapi)
1100 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
1101 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
1102 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
1103 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
1104 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
1105 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
1106 ("java-hamcrest-core" ,java-hamcrest-core)
1107 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1108 ("java-commons-codec" ,java-commons-codec)
1109 ("java-commons-io" ,java-commons-io)
1110 ("java-jsoup" ,java-jsoup)
1111 ,@(package-native-inputs maven-wagon-provider-api)))
1112 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
1113 (description "Maven Wagon is a transport abstraction that is used in Maven's
1114 artifact and repository handling code. It uses providers, that are tools to
1115 manage artifacts and deployment. This package contains a Wagon provider that
1116 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
1124 (uri (string-append "mirror://apache/maven/"
1125 "maven-3/" version "/source/"
1126 "apache-maven-" version "-src.tar.gz"))
1127 (sha256 (base32 "01y0fjvlvgy1bl3mdhbjll2xhzpli6aklqb3w29xpbgk6frxn3d6"))
1128 (modules '((guix build utils)))
1131 (for-each delete-file (find-files "." "\\.jar$"))
1134 (search-patches "maven-generate-component-xml.patch"
1135 "maven-generate-javax-inject-named.patch"))))
1136 (build-system ant-build-system)
1140 (modify-phases %standard-phases
1143 (add-before 'install 'fix-dependencies
1145 (substitute* "pom.xml"
1146 (("classWorldsVersion>.*")
1148 "classWorldsVersion>"
1149 ,(package-version java-plexus-classworlds)
1150 "</classWorldsVersion>\n"))
1151 (("commonsCliVersion>.*")
1153 "commonsCliVersion>"
1154 ,(package-version java-commons-cli)
1155 "</commonsCliVersion>\n"))
1156 (("commonsLangVersion>.*")
1158 "commonsLangVersion>"
1159 ,(package-version java-commons-lang3)
1160 "</commonsLangVersion>\n"))
1161 (("plexusUtilsVersion>.*")
1163 "plexusUtilsVersion>"
1164 ,(package-version java-plexus-utils)
1165 "</plexusUtilsVersion>\n"))
1166 (("plexusInterpolationVersion>.*")
1168 "plexusInterpolationVersion>"
1169 ,(package-version java-plexus-interpolation)
1170 "</plexusInterpolationVersion>\n"))
1171 (("guiceVersion>.*")
1174 ,(package-version java-guice)
1175 "</guiceVersion>\n"))
1176 (("sisuInjectVersion>.*")
1178 "sisuInjectVersion>"
1179 ,(package-version java-eclipse-sisu-inject)
1180 "</sisuInjectVersion>\n"))
1181 (("securityDispatcherVersion>.*")
1183 "securityDispatcherVersion>"
1184 ,(package-version java-plexus-sec-dispatcher)
1185 "</securityDispatcherVersion>\n"))
1186 (("cipherVersion>.*")
1189 ,(package-version java-plexus-cipher)
1190 "</cipherVersion>\n"))
1191 (("slf4jVersion>.*")
1194 ,(package-version java-slf4j-api)
1195 "</slf4jVersion>\n"))
1196 (("<classifier>no_aop</classifier>") ""))
1199 (install-pom-file "pom.xml")))))
1201 (list maven-parent-pom-35))
1202 (home-page "https://maven.apache.org/")
1203 (synopsis "Build system")
1204 (description "Apache Maven is a software project management and comprehension
1205 tool. This package contains the Maven pom file, used by all maven components.")
1206 (license license:asl2.0)))
1208 (define-public maven-artifact
1211 (name "maven-artifact")
1213 `(#:jar-name "maven-artifact.jar"
1214 #:source-dir "maven-artifact/src/main/java"
1215 #:test-dir "maven-artifact/src/test"
1216 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1218 (modify-phases %standard-phases
1220 (install-from-pom "maven-artifact/pom.xml")))))
1222 (list java-plexus-utils java-commons-lang3 maven-pom))
1225 (description "Apache Maven is a software project management and comprehension
1226 tool. This package contains the Maven Artifact classes, providing the
1227 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1228 jar file is executable and provides a little tool to display how Maven parses
1229 and compares versions:")))
1231 (define-public maven-model
1233 (inherit maven-artifact)
1234 (name "maven-model")
1236 `(#:jar-name "maven-model.jar"
1237 #:source-dir "maven-model/src/main/java"
1238 #:test-dir "maven-model/src/test"
1240 (modify-phases %standard-phases
1241 (add-before 'build 'generate-models
1242 (lambda* (#:key inputs #:allow-other-keys)
1243 (define (modello-single-mode file version mode)
1244 (invoke "java" "org.codehaus.modello.ModelloCli"
1245 file mode "maven-model/src/main/java" version
1247 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1248 (modello-single-mode file "4.0.0" "java")
1249 (modello-single-mode file "4.0.0" "xpp3-reader")
1250 (modello-single-mode file "4.0.0" "xpp3-extended-reader")
1251 (modello-single-mode file "4.0.0" "xpp3-writer")
1252 (modello-single-mode file "4.0.0" "xpp3-extended-writer"))
1254 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1256 (list java-commons-lang3 java-plexus-utils maven-pom))
1258 (list java-modello-core
1260 java-eclipse-sisu-plexus
1261 java-plexus-component-annotations
1265 java-eclipse-sisu-inject
1267 java-plexus-classworlds
1269 java-geronimo-xbean-reflect
1270 java-plexus-build-api
1272 java-modello-plugins-java
1273 java-modello-plugins-xml
1274 java-modello-plugins-xpp3
1277 (description "Apache Maven is a software project management and comprehension
1278 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1279 so really just plain Java objects.")))
1281 (define-public maven-builder-support
1283 (inherit maven-artifact)
1284 (name "maven-builder-support")
1286 `(#:jar-name "maven-builder-support.jar"
1287 #:source-dir "maven-builder-support/src/main/java"
1289 #:test-dir "maven-builder-support/src/test"
1291 (modify-phases %standard-phases
1292 (add-before 'check 'fix-paths
1294 (with-directory-excursion "maven-builder-support/src/test/java"
1296 '("org/apache/maven/building/FileSourceTest.java"
1297 "org/apache/maven/building/UrlSourceTest.java")
1298 (("target/test-classes") "maven-builder-support/src/test/resources")))
1300 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1305 (description "Apache Maven is a software project management and comprehension
1306 tool. This package contains a support library for descriptor builders (model,
1307 setting, toolchains)")))
1309 (define-public maven-settings
1311 (inherit maven-artifact)
1312 (name "maven-settings")
1314 `(#:jar-name "maven-settings.jar"
1315 #:source-dir "maven-settings/src/main/java"
1316 #:tests? #f; no tests
1318 (modify-phases %standard-phases
1319 (add-before 'build 'generate-models
1320 (lambda* (#:key inputs #:allow-other-keys)
1321 (define (modello-single-mode file version mode)
1322 (invoke "java" "org.codehaus.modello.ModelloCli"
1323 file mode "maven-settings/src/main/java" version
1325 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1326 (modello-single-mode file "1.2.0" "java")
1327 (modello-single-mode file "1.2.0" "xpp3-reader")
1328 (modello-single-mode file "1.2.0" "xpp3-writer"))
1330 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1332 (list java-plexus-utils maven-pom))
1334 (list java-modello-core
1336 ;("container" ,java-plexus-container-default)
1337 java-eclipse-sisu-plexus
1338 java-plexus-component-annotations
1341 java-eclipse-sisu-inject
1343 java-plexus-classworlds
1346 java-geronimo-xbean-reflect
1347 java-plexus-build-api
1349 java-modello-plugins-java
1350 java-modello-plugins-xml
1351 java-modello-plugins-xpp3))
1352 (description "Apache Maven is a software project management and comprehension
1353 tool. This package contains strictly the model for Maven settings, that is
1354 simply plain java objects.")))
1356 (define-public maven-settings-builder
1358 (inherit maven-artifact)
1359 (name "maven-settings-builder")
1361 `(#:jar-name "maven-settings-builder.jar"
1362 #:source-dir "maven-settings-builder/src/main/java"
1364 #:test-dir "maven-settings-builder/src/test"
1366 (modify-phases %standard-phases
1367 (add-before 'build 'generate-sisu-named
1369 (mkdir-p "build/classes/META-INF/sisu")
1370 (chmod "sisu.sh" #o755)
1371 (invoke "./sisu.sh" "maven-settings-builder/src/main/java"
1372 "build/classes/META-INF/sisu/javax.inject.Named")))
1373 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1375 (list java-plexus-utils
1376 java-plexus-interpolation
1377 java-plexus-sec-dispatcher
1378 maven-builder-support
1382 (list java-junit java-javax-inject java-plexus-component-annotations))
1383 (description "Apache Maven is a software project management and comprehension
1384 tool. This package contains the effective model builder, with profile activation,
1385 inheritance, interpolation, @dots{}")))
1387 (define-public maven-model-builder
1389 (inherit maven-artifact)
1390 (name "maven-model-builder")
1392 `(#:jar-name "maven-model-builder.jar"
1393 #:source-dir "src/main/java"
1395 #:test-dir "src/test"
1397 (modify-phases %standard-phases
1398 (add-before 'configure 'chdir
1400 ;; Required for tests that rely on the package's default
1401 ;; locations, that reference ${basedir}/src/test.
1402 (chdir "maven-model-builder")))
1403 (add-before 'build 'copy-resources
1405 (copy-recursively "src/main/resources"
1408 (add-before 'build 'generate-sisu-named
1410 (mkdir-p "build/classes/META-INF/sisu")
1411 (chmod "../sisu.sh" #o755)
1412 (invoke "../sisu.sh" "src/main/java"
1413 "build/classes/META-INF/sisu/javax.inject.Named")))
1415 (install-from-pom "pom.xml")))))
1417 (list java-plexus-interpolation
1420 maven-builder-support
1424 `(("java-junit" ,java-junit)
1425 ("java-guava" ,java-guava)
1426 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1427 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1428 ("java-powermock-reflect" ,java-powermock-reflect)
1429 ("java-objenesis" ,java-objenesis)
1430 ("guice" ,java-guice)
1431 ("java-cglib" ,java-cglib)
1432 ("sisu-inject" ,java-eclipse-sisu-inject)
1433 ("javax-inject" ,java-javax-inject)
1434 ("java-xmlunit" ,java-xmlunit)
1435 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1436 ("xbean" ,java-geronimo-xbean-reflect)
1437 ("classworlds" ,java-plexus-classworlds)))
1438 (description "Apache Maven is a software project management and comprehension
1439 tool. This package contains the effective model builder, with profile activation,
1440 inheritance, interpolation, @dots{}")))
1442 (define-public maven-repository-metadata
1444 (inherit maven-artifact)
1445 (name "maven-repository-metadata")
1447 `(#:jar-name "maven-repository-metadata.jar"
1448 #:source-dir "maven-repository-metadata/src/main/java"
1450 #:tests? #f; no tests
1452 (modify-phases %standard-phases
1453 (add-before 'build 'generate-models
1454 (lambda* (#:key inputs #:allow-other-keys)
1455 (define (modello-single-mode file version mode)
1456 (invoke "java" "org.codehaus.modello.ModelloCli"
1457 file mode "maven-repository-metadata/src/main/java" version
1459 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1460 (modello-single-mode file "1.1.0" "java")
1461 (modello-single-mode file "1.1.0" "xpp3-reader")
1462 (modello-single-mode file "1.1.0" "xpp3-writer"))
1465 (install-from-pom "maven-repository-metadata/pom.xml")))))
1467 (list java-plexus-utils maven-pom))
1469 `(("modello" ,java-modello-core)
1471 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1472 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1473 ("java-guice" ,java-guice)
1474 ("java-cglib" ,java-cglib)
1475 ("java-asm" ,java-asm)
1476 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1477 ("java-javax-inject" ,java-javax-inject)
1478 ("java-plexus-utils" ,java-plexus-utils)
1479 ("java-plexus-classworlds" ,java-plexus-classworlds)
1480 ("java-guava" ,java-guava)
1481 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1482 ("java-plexus-build-api" ,java-plexus-build-api)
1484 ("java-modello-plugins-java" ,java-modello-plugins-java)
1485 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1486 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1487 (description "Apache Maven is a software project management and comprehension
1488 tool. This package contains strictly the model for Maven Repository Metadata,
1489 so really just plain objects.")))
1491 (define-public maven-resolver-provider
1493 (inherit maven-artifact)
1494 (name "maven-resolver-provider")
1496 `(#:jar-name "maven-resolver-provider.jar"
1497 #:source-dir "maven-resolver-provider/src/main/java"
1498 #:test-dir "maven-resolver-provider/src/test"
1500 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1502 (modify-phases %standard-phases
1503 (add-before 'build 'generate-sisu-named
1505 (mkdir-p "build/classes/META-INF/sisu")
1506 (chmod "./sisu.sh" #o755)
1507 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1508 "build/classes/META-INF/sisu/javax.inject.Named")
1511 (install-from-pom "maven-resolver-provider/pom.xml")))))
1519 maven-builder-support
1520 maven-repository-metadata
1522 java-plexus-component-annotations
1524 java-javax-inject))))
1526 (define-public maven-plugin-api
1528 (inherit maven-artifact)
1529 (name "maven-plugin-api")
1531 `(#:jar-name "maven-plugin-api.jar"
1532 #:source-dir "maven-plugin-api/src/main/java"
1534 #:test-dir "maven-plugin-api/src/test"
1536 (modify-phases %standard-phases
1537 (add-before 'build 'generate-models
1538 (lambda* (#:key inputs #:allow-other-keys)
1539 (define (modello-single-mode file version mode)
1540 (invoke "java" "org.codehaus.modello.ModelloCli"
1541 file mode "maven-plugin-api/src/main/java" version
1543 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1544 (modello-single-mode file "1.0.0" "java")
1545 (modello-single-mode file "1.0.0" "xpp3-reader")
1546 (modello-single-mode file "1.0.0" "xpp3-writer"))
1549 (install-from-pom "maven-plugin-api/pom.xml")))))
1551 `(("maven-artifact" ,maven-artifact)
1552 ("maven-model" ,maven-model)
1553 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1554 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1555 ("guice" ,java-guice)
1556 ("java-cglib" ,java-cglib)
1557 ("sisu-inject" ,java-eclipse-sisu-inject)
1558 ("javax-inject" ,java-javax-inject)
1559 ("utils" ,java-plexus-utils)))
1561 `(("modello" ,java-modello-core)
1563 ("classworlds" ,java-plexus-classworlds)
1564 ("guava" ,java-guava)
1565 ("xbean" ,java-geronimo-xbean-reflect)
1566 ("build-api" ,java-plexus-build-api)
1568 ("java" ,java-modello-plugins-java)
1569 ("xml" ,java-modello-plugins-xml)
1570 ("xpp3" ,java-modello-plugins-xpp3)
1572 ("java-junit" ,java-junit)))
1573 (description "Apache Maven is a software project management and comprehension
1574 tool. This package contains strictly the API for plugins -- composed of goals
1575 implemented by Mojos -- development.
1577 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1578 generally generated from plugin sources using maven-plugin-plugin.")))
1580 (define-public maven-core-bootstrap
1583 (inherit maven-artifact)
1586 `(#:jar-name "maven-core.jar"
1587 #:source-dir "src/main/java"
1589 ;; Tests need maven-compat, which requires maven-core
1592 (modify-phases %standard-phases
1593 (add-before 'configure 'chdir
1595 ;; Required for generating components.xml in maven-core
1596 (chdir "maven-core")
1598 (add-before 'build 'copy-resources
1600 (mkdir-p "build/classes/")
1601 (copy-recursively "src/main/resources" "build/classes")
1603 (add-after 'copy-resources 'fill-properties
1605 ;; This file controls the output of some mvn subcommands, such as
1607 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1608 (("\\$\\{buildNumber\\}") "guix_build")
1609 (("\\$\\{timestamp\\}") "0")
1610 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1611 (("\\$\\{distributionId\\}") "apache-maven")
1612 (("\\$\\{distributionShortName\\}") "Maven")
1613 (("\\$\\{distributionName\\}") "Apache Maven"))
1615 (add-before 'build 'generate-sisu-named
1617 (mkdir-p "build/classes/META-INF/sisu")
1618 (chmod "../sisu.sh" #o755)
1619 (invoke "../sisu.sh" "src/main/java"
1620 "build/classes/META-INF/sisu/javax.inject.Named")
1622 (add-before 'build 'generate-models
1623 (lambda* (#:key inputs #:allow-other-keys)
1624 (define (modello-single-mode file version mode)
1625 (invoke "java" "org.codehaus.modello.ModelloCli"
1626 file mode "src/main/java" version
1628 (let ((file "src/main/mdo/toolchains.mdo"))
1629 (modello-single-mode file "1.1.0" "java")
1630 (modello-single-mode file "1.1.0" "xpp3-reader")
1631 (modello-single-mode file "1.1.0" "xpp3-writer"))
1633 (add-before 'install 'fix-pom
1635 (substitute* "pom.xml"
1636 (("<classifier>no_aop</classifier>") ""))
1639 (install-from-pom "pom.xml")))))
1641 `(("maven-artifact" ,maven-artifact)
1642 ("maven-resolver-provider" ,maven-resolver-provider)
1643 ("maven-builder-support" ,maven-builder-support)
1644 ("maven-model" ,maven-model)
1645 ("maven-model-builder" ,maven-model-builder)
1646 ("maven-settings" ,maven-settings)
1647 ("maven-settings-builder" ,maven-settings-builder)
1648 ("maven-plugin-api" ,maven-plugin-api)
1649 ("maven-repository-metadata" ,maven-repository-metadata)
1650 ("maven-shared-utils" ,maven-shared-utils)
1651 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1652 ("java-plexus-utils" ,java-plexus-utils)
1653 ("java-commons-lang3" ,java-commons-lang3)
1654 ("java-guava" ,java-guava)
1655 ("java-guice" ,java-guice)
1656 ("maven-resolver-api" ,maven-resolver-api)
1657 ("maven-resolver-spi" ,maven-resolver-spi)
1658 ("maven-resolver-util" ,maven-resolver-util)
1659 ("maven-resolver-impl" ,maven-resolver-impl)
1660 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1661 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1662 ("java-javax-inject" ,java-javax-inject)
1663 ("java-plexus-classworld" ,java-plexus-classworlds)))
1665 `(("java-modello-core" ,java-modello-core)
1666 ("java-cglib" ,java-cglib)
1667 ("java-plexus-classworlds" ,java-plexus-classworlds)
1668 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1669 ("java-plexus-build-api" ,java-plexus-build-api)
1670 ("java-modello-plugins-java" ,java-modello-plugins-java)
1671 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1672 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1674 ("java-junit" ,java-junit)
1675 ("java-mockito-1" ,java-mockito-1)
1676 ("java-commons-jxpath" ,java-commons-jxpath)))
1677 (description "Apache Maven is a software project management and comprehension
1678 tool. This package contains the maven core classes managing the whole build
1681 (define-public maven-core
1683 (inherit maven-core-bootstrap)
1685 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1687 `(modify-phases ,phases
1688 (add-before 'build 'modify-metainf
1690 (substitute* "build.xml"
1692 (string-append "message=\"Implementation-Version: "
1693 (package-version maven) "\n\"")))
1695 (add-before 'build 'add-maven-files
1697 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1698 (copy-file "pom.xml"
1699 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1700 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1702 (format #t "version=~a~%
1703 groupId=org.apache.maven~%
1704 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1706 (add-after 'build 'generate-metadata
1708 (define (components file)
1709 (let ((sxml (with-input-from-file file
1710 (lambda _ (xml->sxml (current-input-port)
1711 #:trim-whitespace? #t)))))
1712 ;; Select the list of <component>s inside the <component-set>
1713 ;; and <components>.
1714 ((@ (ice-9 match) match) sxml
1718 ('components x ...))) x))))
1719 (use-modules (sxml simple))
1720 (delete-file "build/classes/META-INF/plexus/components.xml")
1721 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1722 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1723 "--source" "build/classes/META-INF/plexus"
1724 "--output" "build/classes/META-INF/plexus/components.t.xml"
1725 "--classes" "build/classes"
1726 "--descriptors" "build/classes")
1727 ;; Now we merge all other components from hand-written xml
1728 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1729 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1730 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1731 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1732 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1734 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1738 ,@(append generated-xml components-xml
1739 default-bindings-xml
1740 artifact-handlers-xml)))))))
1742 (add-after 'generate-metadata 'fix-plugin-versions
1744 ;; This file controls the default plugins used by Maven. Ensure
1745 ;; we use the versions we have packaged by default
1746 (substitute* '("build/classes/META-INF/plexus/default-bindings.xml"
1747 "build/classes/META-INF/plexus/components.xml")
1748 (("maven-install-plugin:[0-9.]+")
1749 (string-append "maven-install-plugin:"
1750 ,(package-version maven-install-plugin)))
1751 (("maven-resources-plugin:[0-9.]+")
1752 (string-append "maven-resources-plugin:"
1753 ,(package-version maven-resources-plugin)))
1754 (("maven-compiler-plugin:[0-9.]+")
1755 (string-append "maven-compiler-plugin:"
1756 ,(package-version maven-compiler-plugin)))
1757 (("maven-surefire-plugin:[0-9.]+")
1758 (string-append "maven-surefire-plugin:"
1759 ,(package-version maven-surefire-plugin)))
1760 (("maven-jar-plugin:[0-9.]+")
1761 (string-append "maven-jar-plugin:"
1762 ,(package-version maven-jar-plugin))))))
1763 (add-after 'fix-plugin-versions 'rebuild
1765 (invoke "ant" "jar")
1768 `(("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1769 ("java-commons-cli" ,java-commons-cli)
1770 ("java-plexus-cli" ,java-plexus-cli)
1771 ("java-jdom2" ,java-jdom2)
1772 ("java-qdox" ,java-qdox)
1773 ("maven-core-boot" ,maven-core-bootstrap)
1774 ,@(package-native-inputs maven-core-bootstrap)))))
1776 (define-public maven-slf4j-provider
1778 (inherit maven-artifact)
1779 (name "maven-slf4j-provider")
1781 `(#:jar-name "maven-slf4j-provider.jar"
1782 #:source-dir "maven-slf4j-provider/src/main/java"
1783 #:tests? #f; no tests
1785 (modify-phases %standard-phases
1786 (add-after 'unpack 'unpack-slf4j
1787 (lambda* (#:key inputs #:allow-other-keys)
1788 (mkdir-p "generated-sources")
1789 (with-directory-excursion "generated-sources"
1790 (invoke "tar" "xf" (assoc-ref inputs "java-slf4j-simple-source"))
1791 (for-each delete-file (find-files "." "StaticLoggerBinder.java")))
1798 "maven-slf4j-provider/src/main/java/org/slf4j/impl/"
1800 (find-files (string-append simple "/src/main/java/") "\\.java$")))
1801 (find-files "generated-sources" "slf4j-simple" #:directories? #t))))
1803 (install-from-pom "maven-slf4j-provider/pom.xml")))))
1805 `(("java-slf4j-api" ,java-slf4j-api)
1806 ("java-slf4j-simple-source" ,(package-source java-slf4j-simple))
1807 ("maven-shared-utils" ,maven-shared-utils)))
1808 (native-inputs (list unzip))))
1810 (define-public maven-embedder
1812 (inherit maven-artifact)
1813 (name "maven-embedder")
1815 `(#:jar-name "maven-embedder.jar"
1816 #:source-dir "maven-embedder/src/main/java"
1817 #:test-dir "maven-embedder/src/test"
1818 #:test-exclude (list "**/MavenCliTest.java")
1821 (modify-phases %standard-phases
1822 (add-before 'build 'generate-sisu-named
1824 (mkdir-p "build/classes/META-INF/sisu")
1825 (chmod "sisu.sh" #o755)
1826 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1827 "build/classes/META-INF/sisu/javax.inject.Named")
1829 (add-before 'build 'copy-resources
1831 (mkdir-p "build/classes/")
1832 (copy-recursively "maven-embedder/src/main/resources" "build/classes")))
1833 (add-before 'build 'generate-models
1834 (lambda* (#:key inputs #:allow-other-keys)
1835 (define (modello-single-mode file version mode)
1836 (invoke "java" "org.codehaus.modello.ModelloCli"
1837 file mode "maven-embedder/src/main/java" version
1839 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1840 (modello-single-mode file "1.0.0" "java")
1841 (modello-single-mode file "1.0.0" "xpp3-reader")
1842 (modello-single-mode file "1.0.0" "xpp3-writer"))
1844 (add-before 'check 'fix-test-paths
1846 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1847 (("target/test-classes") "build/test-classes"))
1849 (add-before 'check 'fix-test-compilation
1851 ;; Tests are in the java/ subdir. Other subdirectories contain
1852 ;; additional test plugins, with duplicate classes, so we can't
1853 ;; compile them. Also, they are meant to be built with maven, to
1854 ;; test its build process.
1855 (substitute* "build.xml"
1856 (("srcdir=\"maven-embedder/src/test\"")
1857 "srcdir=\"maven-embedder/src/test/java\""))
1859 (add-before 'check 'disable-failing-test
1861 (delete-file "maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java")))
1862 (add-before 'install 'fix-pom
1864 (substitute* "maven-embedder/pom.xml"
1865 (("jsr250-api") "javax.annotation-api"))))
1867 (install-from-pom "maven-embedder/pom.xml")))))
1869 `(("maven-core" ,maven-core)
1870 ("maven-artifact" ,maven-artifact)
1871 ("maven-plugin-api" ,maven-plugin-api)
1872 ("maven-builder-support" ,maven-builder-support)
1873 ("maven-model" ,maven-model)
1874 ("maven-model-builder" ,maven-model-builder)
1875 ("maven-settings" ,maven-settings)
1876 ("maven-settings-builder" ,maven-settings-builder)
1877 ("maven-shared-utils" ,maven-shared-utils)
1878 ("maven-slf4j-provider" ,maven-slf4j-provider)
1879 ("java-plexus-classworlds" ,java-plexus-classworlds)
1880 ("java-plexus-util" ,java-plexus-utils)
1881 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1882 ("java-plexus-cipher" ,java-plexus-cipher)
1883 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1884 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1885 ("maven-resolevr-util" ,maven-resolver-util)
1886 ("maven-resolevr-api" ,maven-resolver-api)
1887 ("java-logback-core" ,java-logback-core)
1888 ("java-logback-classic" ,java-logback-classic)
1889 ("java-commons-cli" ,java-commons-cli)
1890 ("java-commons-io" ,java-commons-io)
1891 ("java-commons-lang3" ,java-commons-lang3)
1892 ("java-guava" ,java-guava)
1893 ("java-guice" ,java-guice)
1894 ("java-javax-inject" ,java-javax-inject)
1895 ("java-slf4j-api" ,java-slf4j-api)
1896 ("java-jsr250" ,java-jsr250)))
1898 `(("java-asm-8" ,java-asm-8)
1899 ("java-modello-core" ,java-modello-core)
1900 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1901 ("java-plexus-build-api" ,java-plexus-build-api)
1902 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1903 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1904 ("java-cglib" ,java-cglib)
1905 ("java-modello-plugins-java" ,java-modello-plugins-java)
1906 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1907 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1909 ("java-junit" ,java-junit)
1910 ("java-objenesis" ,java-objenesis)
1911 ("java-mockito-1" ,java-mockito-1)
1912 ("java-hamcrest-core" ,java-hamcrest-core)))
1913 (description "Apache Maven is a software project management and comprehension
1914 tool. This package contains a Maven embeddable component, with CLI and
1915 logging support.")))
1917 (define-public maven-compat
1919 (inherit maven-artifact)
1920 (name "maven-compat")
1922 `(#:jar-name "maven-compat.jar"
1923 #:source-dir "src/main/java"
1925 #:test-dir "src/test"
1927 (modify-phases %standard-phases
1928 ;; Tests assume we're in this directory
1929 (add-before 'configure 'chdir
1931 (chdir "maven-compat")
1933 (add-before 'build 'recreate-removed-jar
1935 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1937 (with-directory-excursion "src/test/resources"
1938 (with-output-to-file "artifact-install/artifact-1.0.jar"
1940 (format #t "dummy~%")))
1943 (with-output-to-file file
1945 (format #t "foo~%"))))
1946 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1947 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1948 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1949 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1950 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1951 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1952 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1953 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1954 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1955 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1956 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1957 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1958 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1959 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1960 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1961 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1962 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1963 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1964 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1965 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1966 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1967 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1968 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1969 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1970 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1971 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1972 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1973 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1974 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1975 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1976 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1977 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1978 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1979 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1980 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1981 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1982 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1983 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1984 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1985 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1986 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1987 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1988 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1989 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1990 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1991 (with-directory-excursion "local-repo/snapshot-test/jars"
1994 (with-output-to-file file
1997 (format #t "local"))))
1998 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1999 "maven-snapshot-b-1.0-SNAPSHOT.jar"
2000 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
2003 (with-directory-excursion
2004 (string-append "src/test/remote-repo/org/apache/maven/its/"
2006 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
2009 (copy-file (string-append letter "-0.1.pom")
2010 (string-append dir "/pom.xml"))
2011 (with-output-to-file (string-append dir "/pom.properties")
2013 (format #t "version=0.1~%")
2014 (format #t "groupId=org.apache.maven.its")
2015 (format #t (string-append "artifactId=" letter))))
2016 (with-output-to-file "META-INF/MANIFEST.MF"
2018 (format #t "Manifest-Version: 1.0~%"))))
2019 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
2020 (string-append letter "-0.1.jar") "META-INF")))
2023 (add-before 'build 'generate-models
2024 (lambda* (#:key inputs #:allow-other-keys)
2025 (define (modello-single-mode file version mode)
2026 (invoke "java" "org.codehaus.modello.ModelloCli"
2027 file mode "src/main/java" version
2029 (let ((file "src/main/mdo/profiles.mdo"))
2030 (modello-single-mode file "1.0.0" "java")
2031 (modello-single-mode file "1.0.0" "xpp3-reader")
2032 (modello-single-mode file "1.0.0" "xpp3-writer"))
2033 (let ((file "src/main/mdo/paramdoc.mdo"))
2034 (modello-single-mode file "1.0.0" "java")
2035 (modello-single-mode file "1.0.0" "xpp3-reader")
2036 (modello-single-mode file "1.0.0" "xpp3-writer"))
2038 (add-before 'build 'copy-resources
2040 (mkdir-p "build/classes/")
2041 (copy-recursively "src/main/resources" "build/classes")))
2042 (add-after 'build 'generate-metadata
2044 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2045 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2046 "--source" "src/main/java"
2047 "--output" "build/classes/META-INF/plexus/components.xml"
2048 "--classes" "build/classes"
2049 "--descriptors" "build/classes/META-INF")
2051 (add-before 'check 'build-tests
2053 (invoke "ant" "compile-tests")
2055 (add-after 'build-tests 'generate-test-metadata
2057 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
2059 ":build/test-classes")
2060 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2061 "--source" "src/test/java"
2062 "--output" "build/test-classes/META-INF/plexus/components.xml"
2063 "--classes" "build/test-classes"
2064 "--descriptors" "build/test-classes/META-INF")
2066 (add-before 'check 'disable-failing-test
2068 (delete-file "src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java")))
2069 (add-after 'generate-metadata 'rebuild
2071 (invoke "ant" "jar")
2074 (install-from-pom "pom.xml")))))
2076 (list maven-artifact
2077 maven-repository-metadata
2078 maven-builder-support
2082 maven-settings-builder
2084 maven-wagon-provider-api
2089 java-plexus-interpolation))
2091 `(("java-modello-core" ,java-modello-core)
2092 ("java-plexus-utils" ,java-plexus-utils)
2093 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
2094 ("java-plexus-classworlds" ,java-plexus-classworlds)
2095 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
2096 ("java-plexus-build-api" ,java-plexus-build-api)
2097 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2098 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
2099 ("java-javax-inject" ,java-javax-inject)
2100 ("java-guice" ,java-guice)
2101 ("java-guava" ,java-guava)
2102 ("java-cglib" ,java-cglib)
2103 ("java-asm" ,java-asm)
2104 ("java-modello-plugins-java" ,java-modello-plugins-java)
2105 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
2106 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
2108 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
2109 ("java-commons-cli" ,java-commons-cli)
2110 ("java-plexus-cli" ,java-plexus-cli)
2111 ("java-jdom2" ,java-jdom2)
2112 ("maven-plugin-api" ,maven-plugin-api)
2113 ("java-qdox" ,java-qdox)
2115 ("java-plexus-cipher" ,java-plexus-cipher)
2116 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2117 ("java-jsr250" ,java-jsr250)
2118 ("java-cdi-api" ,java-cdi-api)
2119 ("java-junit" ,java-junit)
2120 ("maven-resolver-impl" ,maven-resolver-impl)
2121 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
2122 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
2123 ("java-commons-lang3" ,java-commons-lang3)
2124 ("java-aop" ,java-aopalliance)
2125 ("maven-resolver-provider" ,maven-resolver-provider)
2126 ("maven-slf4j-provider" ,maven-slf4j-provider)
2127 ("java-slf4j-api" ,java-slf4j-api)
2128 ,@(package-inputs java-slf4j-api)))
2129 (description "Apache Maven is a software project management and comprehension
2130 tool. This package contains Maven2 classes maintained as compatibility
2131 layer for plugins that need to keep Maven2 compatibility.")))
2133 (define-public maven
2135 (inherit maven-artifact)
2139 (modify-phases %standard-phases
2141 (lambda* (#:key inputs #:allow-other-keys)
2142 ;; Recreate the configuration for the loader
2143 (with-output-to-file "apache-maven/src/bin/m2.conf"
2145 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
2147 (format #t "set maven.conf default ${maven.home}/conf~%")
2149 (format #t "[plexus.core]~%")
2150 (format #t "load ${maven.conf}/logging~%")
2151 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
2152 ;; Reference every jar so plexus-classworlds can find them.
2154 (lambda (dependency)
2157 (format #t "load ~a~%" file))
2158 (find-files (assoc-ref inputs dependency) ".*.jar$")))
2159 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
2160 "maven-builder-support" "maven-model" "maven-model-builder"
2161 "maven-settings" "maven-settings-builder" "maven-plugin-api"
2162 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
2163 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
2164 "maven-resolver-connector-basic" "maven-resolver-provider"
2165 "maven-resolver-transport-wagon" "maven-slf4j-provider"
2166 "maven-wagon-provider-api"
2167 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
2168 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
2169 "maven-wagon-http-shared" "maven-wagon-tck-http"
2170 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
2171 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
2172 "java-javax-inject" "java-plexus-component-annotations"
2173 "java-plexus-utils" "java-plexus-interpolation"
2174 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
2175 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
2176 "java-commons-io" "java-commons-lang3" "java-slf4j-api"))))
2177 (substitute* "apache-maven/src/bin/mvn"
2182 (assoc-ref inputs "java-plexus-classworlds")
2185 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
2189 (lambda* (#:key outputs #:allow-other-keys)
2190 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
2191 (conf (string-append (assoc-ref outputs "out") "/conf/")))
2192 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
2193 (for-each (lambda (file)
2194 (install-file (string-append "apache-maven/src/bin/" file)
2196 (chmod (string-append bin file) #o755))
2197 '("mvn" "mvnDebug" "mvnyjp"))
2198 (install-file "apache-maven/src/bin/m2.conf" bin)
2199 (copy-recursively "apache-maven/src/conf" conf))
2202 (list java-plexus-classworlds
2207 maven-builder-support
2211 maven-settings-builder
2213 maven-repository-metadata
2219 maven-resolver-connector-basic
2220 maven-resolver-provider
2221 maven-resolver-transport-wagon
2222 maven-slf4j-provider
2223 maven-wagon-provider-api
2226 java-commons-logging-minimal
2227 java-httpcomponents-httpclient
2228 java-httpcomponents-httpcore
2229 maven-wagon-http-shared
2230 maven-wagon-tck-http
2231 java-eclipse-sisu-plexus
2236 java-eclipse-sisu-inject
2238 java-plexus-component-annotations
2240 java-plexus-interpolation
2241 java-plexus-sec-dispatcher
2252 (list coreutils which))
2253 (description "Apache Maven is a software project management and comprehension
2254 tool. Based on the concept of a project object model: builds, dependency
2255 management, documentation creation, site publication, and distribution
2256 publication are all controlled from the @file{pom.xml} declarative file. Maven
2257 can be extended by plugins to utilise a number of other development tools for
2258 reporting or the build process.")))
2260 ;; Many plugins require maven 3.0 as a dependency.
2261 (define maven-3.0-pom
2268 (url "https://github.com/apache/maven")
2269 (commit (string-append "maven-" version))))
2270 (file-name (git-file-name "maven" version))
2273 "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
2274 (modules '((guix build utils)))
2277 (for-each delete-file (find-files "." "\\.jar$"))
2278 (for-each (lambda (file) (chmod file #o644))
2279 (find-files "." "."))
2282 (search-patches "maven-generate-component-xml.patch"
2283 "maven-generate-javax-inject-named.patch"))))
2285 `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
2287 (define-public maven-3.0-artifact
2289 (inherit maven-artifact)
2290 (version (package-version maven-3.0-pom))
2291 (source (package-source maven-3.0-pom))
2295 (if (equal? (car input) "maven-pom")
2296 `("maven-pom" ,maven-3.0-pom)
2298 (package-propagated-inputs maven-artifact)))))
2300 (define-public maven-3.0-model
2302 (inherit maven-model)
2303 (version (package-version maven-3.0-pom))
2304 (source (package-source maven-3.0-pom))
2308 (if (equal? (car input) "maven-pom")
2309 `("maven-pom" ,maven-3.0-pom)
2311 (package-propagated-inputs maven-artifact)))
2313 `(#:jar-name "maven-model.jar"
2314 #:source-dir "maven-model/src/main/java"
2315 #:test-dir "maven-model/src/test"
2317 ((guix build ant-build-system)
2318 (guix build java-utils)
2319 (guix build syscalls)
2322 (modify-phases %standard-phases
2323 (add-after 'configure 'use-newer-model
2324 (lambda* (#:key inputs #:allow-other-keys)
2325 ;; The model has almost not changed, but the newer version is
2326 ;; needed to prevent an error in the newer modello we have
2327 (let ((source (assoc-ref inputs "maven-source"))
2328 (dir (mkdtemp! "maven-source-XXXXXXXX")))
2329 (with-directory-excursion dir
2330 (invoke "tar" "xf" source)
2331 (copy-file (car (find-files "." "maven.mdo"))
2332 "../maven-model/src/main/mdo/maven.mdo")))
2334 (add-before 'build 'generate-models
2335 (lambda* (#:key inputs #:allow-other-keys)
2336 (define (modello-single-mode file version mode)
2337 (invoke "java" "org.codehaus.modello.ModelloCli"
2338 file mode "maven-model/src/main/java" version
2339 "false" "true" "UTF-8"))
2340 (let ((file "maven-model/src/main/mdo/maven.mdo"))
2341 (modello-single-mode file "4.0.0" "java")
2342 (modello-single-mode file "4.0.0" "xpp3-reader")
2343 (modello-single-mode file "4.0.0" "xpp3-writer")
2344 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
2347 (install-from-pom "maven-model/pom.xml")))))
2349 `(("maven-source" ,(package-source maven-pom))
2350 ,@(package-inputs maven-model)))))
2352 (define-public maven-3.0-settings
2354 (inherit maven-settings)
2355 (version (package-version maven-3.0-pom))
2356 (source (package-source maven-3.0-pom))
2360 (if (equal? (car input) "maven-pom")
2361 `("maven-pom" ,maven-3.0-pom)
2363 (package-propagated-inputs maven-settings)))))
2365 (define-public maven-3.0-settings-builder
2367 (inherit maven-settings-builder)
2368 (version (package-version maven-3.0-pom))
2369 (source (package-source maven-3.0-pom))
2371 (substitute-keyword-arguments (package-arguments maven-settings-builder)
2373 `(modify-phases ,phases
2374 (add-before 'build 'generate-components.xml
2376 (mkdir-p "build/classes/META-INF/plexus")
2377 (chmod "components.sh" #o755)
2378 (invoke "./components.sh" "maven-settings-builder/src/main/java"
2379 "build/classes/META-INF/plexus/components.xml")))))))
2381 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2387 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2388 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
2389 ("maven-builder-support" #f)
2390 ("java-plexus-sec-dispatcher"
2391 `("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher-1.4))
2393 (package-propagated-inputs maven-settings-builder)))))))
2395 (define-public maven-3.0-model-builder
2397 (inherit maven-model-builder)
2398 (version (package-version maven-3.0-pom))
2399 (source (package-source maven-3.0-pom))
2401 (substitute-keyword-arguments (package-arguments maven-model-builder)
2403 `(modify-phases ,phases
2404 (add-before 'build 'generate-components.xml
2406 (mkdir-p "build/classes/META-INF/plexus")
2407 (chmod "../components.sh" #o755)
2408 (invoke "../components.sh" "src/main/java"
2409 "build/classes/META-INF/plexus/components.xml")))
2410 (add-before 'check 'remove-failing-test
2412 (delete-file "src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
2414 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2420 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2421 ("maven-model" `("maven-model" ,maven-3.0-model))
2422 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2423 ("maven-builder-support" #f)
2425 (package-propagated-inputs maven-model-builder)))))))
2427 (define-public maven-3.0-plugin-api
2429 (inherit maven-plugin-api)
2430 (version (package-version maven-3.0-pom))
2431 (source (package-source maven-3.0-pom))
2433 (substitute-keyword-arguments (package-arguments maven-plugin-api)
2435 `(modify-phases ,phases
2436 (add-before 'install 'fix-pom
2438 (substitute* "maven-plugin-api/pom.xml"
2439 (("org.sonatype.sisu") "org.codehaus.plexus")
2440 (("sisu-inject-plexus") "plexus-container-default"))
2446 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2447 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2448 ("maven-model" `("maven-model" ,maven-3.0-model))
2450 (package-propagated-inputs maven-model-builder)))
2452 (modify-inputs (package-native-inputs maven-plugin-api)
2453 (prepend java-plexus-container-default)))))
2455 (define-public maven-3.0-repository-metadata
2457 (inherit maven-repository-metadata)
2458 (version (package-version maven-3.0-pom))
2459 (source (package-source maven-3.0-pom))
2463 (if (equal? (car input) "maven-pom")
2464 `("maven-pom" ,maven-3.0-pom)
2466 (package-propagated-inputs maven-repository-metadata)))))
2468 (define-public maven-3.0-aether-provider
2470 (inherit maven-3.0-pom)
2471 (name "maven-aether-provider")
2473 `(#:jar-name "maven-aether-provider.jar"
2474 #:source-dir "maven-aether-provider/src/main/java"
2475 #:tests? #f; no tests in 3.0
2477 (modify-phases %standard-phases
2478 (add-after 'build 'generate-metadata
2480 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2481 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2482 "--source" "src/main/java"
2483 "--output" "build/classes/META-INF/plexus/components.xml"
2484 "--classes" "build/classes"
2485 "--descriptors" "build/classes/META-INF")
2487 (add-after 'generate-metadata 'rebuild
2489 (invoke "ant" "jar")
2492 (install-from-pom "maven-aether-provider/pom.xml")))))
2494 `(("maven-model" ,maven-3.0-model)
2495 ("maven-model-builder" ,maven-3.0-model-builder)
2496 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2497 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2498 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
2499 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2500 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
2501 ("java-plexus-utils" ,java-plexus-utils)
2502 ("maven-pom" ,maven-3.0-pom)))
2504 (list java-plexus-component-metadata))))
2506 (define-public maven-3.0-core
2508 (inherit maven-core)
2509 (version (package-version maven-3.0-pom))
2510 (source (package-source maven-3.0-pom))
2512 `(#:jar-name "maven-core.jar"
2513 #:source-dir "src/main/java"
2516 (modify-phases %standard-phases
2517 (add-before 'configure 'chdir
2519 ;; Required for generating components.xml in maven-core
2520 (chdir "maven-core")
2522 (add-before 'build 'generate-models
2523 (lambda* (#:key inputs #:allow-other-keys)
2524 (define (modello-single-mode file version mode)
2525 (invoke "java" "org.codehaus.modello.ModelloCli"
2526 file mode "src/main/java" version
2527 "false" "true" "UTF-8"))
2528 (let ((file "src/main/mdo/toolchains.mdo"))
2529 (modello-single-mode file "1.0.0" "java")
2530 (modello-single-mode file "1.0.0" "xpp3-reader")
2531 (modello-single-mode file "1.0.0" "xpp3-writer"))
2533 (add-before 'build 'copy-resources
2535 (mkdir-p "build/classes/")
2536 (copy-recursively "src/main/resources" "build/classes")
2538 (add-after 'build 'generate-metadata
2540 (define (components file)
2541 (let ((sxml (with-input-from-file file
2542 (lambda _ (xml->sxml (current-input-port)
2543 #:trim-whitespace? #t)))))
2544 ;; Select the list of <component>s inside the <component-set>
2545 ;; and <components>.
2546 ((@ (ice-9 match) match) sxml
2550 ('components x ...))) x))))
2551 (use-modules (sxml simple))
2552 (delete-file "build/classes/META-INF/plexus/components.xml")
2553 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2554 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2555 "--source" "build/classes/META-INF/plexus"
2556 "--output" "build/classes/META-INF/plexus/components.t.xml"
2557 "--classes" "build/classes"
2558 "--descriptors" "build/classes")
2559 ;; Now we merge all other components from hand-written xml
2560 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
2561 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
2562 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
2563 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
2565 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
2569 ,@(append generated-xml components-xml
2570 artifact-handlers-xml)))))))
2572 (add-after 'generate-metadata 'rebuild
2574 (invoke "ant" "jar")
2576 (add-before 'install 'fix-pom
2578 (substitute* "pom.xml"
2579 (("org.sonatype.sisu") "org.codehaus.plexus")
2580 (("sisu-inject-plexus") "plexus-container-default"))
2583 (install-from-pom "pom.xml")))))
2585 (list maven-3.0-model
2587 maven-3.0-settings-builder
2588 maven-3.0-repository-metadata
2590 maven-3.0-model-builder
2591 maven-3.0-aether-provider
2592 java-sonatype-aether-impl
2593 java-sonatype-aether-api
2594 java-sonatype-aether-util
2595 java-plexus-interpolation
2597 java-plexus-classworlds
2598 java-plexus-component-annotations
2599 java-plexus-container-default
2600 java-plexus-sec-dispatcher-1.4
2603 (define-public maven-3.0-compat
2605 (inherit maven-compat)
2606 (version (package-version maven-3.0-pom))
2607 (source (package-source maven-3.0-pom))
2609 `(#:tests? #f ;require an old version of java-easymock
2610 ,@(substitute-keyword-arguments (package-arguments maven-compat)
2612 `(modify-phases ,phases
2613 (add-before 'install 'fix-pom
2615 (substitute* "pom.xml"
2616 (("org.sonatype.sisu") "org.codehaus.plexus")
2617 (("sisu-inject-plexus") "plexus-container-default"))
2619 (delete 'build-tests))))))
2621 (list maven-3.0-model
2622 maven-3.0-model-builder
2624 maven-3.0-settings-builder
2627 maven-3.0-aether-provider
2628 maven-3.0-repository-metadata
2629 java-sonatype-aether-api
2630 java-sonatype-aether-util
2631 java-sonatype-aether-impl
2633 java-plexus-interpolation
2634 java-eclipse-sisu-plexus
2635 java-plexus-component-annotations
2636 java-plexus-container-default
2637 maven-wagon-provider-api
2640 (define-public maven-shared-utils-3.0
2642 (inherit maven-shared-utils)
2646 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2647 "maven-shared-utils-" version "-source-release.zip"))
2650 "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
2652 (modify-inputs (package-propagated-inputs maven-shared-utils)
2653 (prepend maven-3.0-core maven-components-parent-pom-21)))))
2655 (define-public maven-shared-utils-3.1
2657 (inherit maven-shared-utils)
2661 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2662 "maven-shared-utils-" version "-source-release.zip"))
2665 "0vfaas4g09ch0agrd1dcxcmhdd3w971ssvfr9mx9gi2lp5nv8w66"))))))
2667 (define-public maven-shared-io
2669 (name "maven-shared-io")
2673 (uri (string-append "mirror://apache/maven/shared/"
2674 "maven-shared-io-" version
2675 "-source-release.zip"))
2678 "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
2679 (build-system ant-build-system)
2681 `(#:jar-name "maven-shared-io.jar"
2682 #:source-dir "src/main/java"
2683 #:test-dir "src/test"
2685 (modify-phases %standard-phases
2686 (add-before 'build 'copy-resources
2688 (copy-recursively "src/main/resources" "build/classes/")
2689 (copy-recursively "src/test/resources" "build/test-classes/")
2692 (install-from-pom "pom.xml")))))
2694 (list maven-3.0-artifact
2696 maven-3.0-plugin-api
2698 maven-wagon-provider-api
2700 maven-components-parent-pom-22))
2702 (list unzip java-junit java-easymock))
2703 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2704 (synopsis "Tree-based API for resolution of Maven project dependencies")
2705 (description "This package provides a tree-based API for resolution of
2706 Maven project dependencies.")
2707 (license license:asl2.0)))
2709 (define-public maven-file-management
2711 (name "maven-file-management")
2715 (uri (string-append "mirror://apache/maven/shared/"
2716 "file-management-" version
2717 "-source-release.zip"))
2720 "0wisz6sm67axrwvx8a75mb9s03h7kzkzfw8j3aaa4sx4k9ph58da"))))
2721 (build-system ant-build-system)
2723 `(#:jar-name "maven-file-management.jar"
2724 #:source-dir "src/main/java"
2726 (modify-phases %standard-phases
2727 (add-before 'build 'copy-resources
2729 (copy-recursively "src/main/resources" "build/classes/")
2731 (add-before 'build 'generate-models
2732 (lambda* (#:key inputs #:allow-other-keys)
2733 (define (modello-single-mode file version mode)
2735 "org.codehaus.modello.ModelloCli"
2736 file mode "src/main/java" version
2738 (let ((file "src/main/mdo/fileset.mdo"))
2739 (modello-single-mode file "1.1.0" "java")
2740 (modello-single-mode file "1.1.0" "xpp3-reader")
2741 (modello-single-mode file "1.1.0" "xpp3-writer"))
2744 (install-from-pom "pom.xml")))))
2746 (list maven-3.0-plugin-api maven-shared-io maven-shared-utils
2747 java-plexus-utils maven-components-parent-pom-22))
2749 `(("java-modello-core" ,java-modello-core)
2751 ("java-modellop-plugins-java" ,java-modello-plugins-java)
2752 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
2754 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2755 (synopsis "Tree-based API for resolution of Maven project dependencies")
2756 (description "This package provides a tree-based API for resolution of
2757 Maven project dependencies.")
2758 (license license:asl2.0)))
2760 (define-public maven-archiver
2762 (name "maven-archiver")
2766 (uri (string-append "mirror://apache/maven/shared/"
2767 "maven-archiver-" version
2768 "-source-release.zip"))
2771 "1204xkqj259brpk3yscprml0lbfbyn1vn5nrgqjk44z5vx127lbw"))))
2772 (build-system ant-build-system)
2774 `(#:jar-name "maven-archiver.jar"
2775 #:source-dir "src/main/java"
2777 (modify-phases %standard-phases
2779 (install-from-pom "pom.xml")))))
2781 `(("java-commons-io" ,java-commons-io)
2782 ("maven-artifact" ,maven-3.0-artifact)
2783 ("maven-core" ,maven-3.0-core)
2784 ("maven-model" ,maven-3.0-model)
2785 ("maven-shared-utils" ,maven-shared-utils)
2786 ("java-plexus-archiver" ,java-plexus-archiver)
2787 ("java-plexus-interpolation" ,java-plexus-interpolation)
2788 ("java-plexus-utils" ,java-plexus-utils)
2789 ("maen-parent-pom" ,maven-parent-pom-33)))
2791 (list java-junit java-assertj unzip))
2792 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2793 (synopsis "Tree-based API for resolution of Maven project dependencies")
2794 (description "This package provides a tree-based API for resolution of
2795 Maven project dependencies.")
2796 (license license:asl2.0)))
2798 (define-public maven-dependency-tree
2800 (name "maven-dependency-tree")
2804 (uri (string-append "mirror://apache/maven/shared/"
2805 "maven-dependency-tree-" version
2806 "-source-release.zip"))
2809 "1vhcd3lmbyy8q61c37sqgbllqj4ypkxm344l6pb05mkchlyk5dy5"))))
2810 (build-system ant-build-system)
2812 `(#:jar-name "maven-dependency-tree.jar"
2813 #:source-dir "src/main/java"
2814 #:tests? #f; no tests
2816 (modify-phases %standard-phases
2818 (install-from-pom "pom.xml")))))
2820 (list maven-3.0-core java-plexus-component-annotations
2821 maven-parent-pom-34))
2823 (list java-sonatype-aether-api-1.13 java-sonatype-aether-util-1.13
2824 java-eclipse-aether-api java-eclipse-aether-util))
2826 (list unzip java-junit))
2827 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2828 (synopsis "Tree-based API for resolution of Maven project dependencies")
2829 (description "This package provides a tree-based API for resolution of
2830 Maven project dependencies.")
2831 (license license:asl2.0)))
2833 (define-public maven-common-artifact-filters
2835 (name "maven-common-artifact-filters")
2839 (uri (string-append "mirror://apache/maven/shared/"
2840 "maven-common-artifact-filters-" version
2841 "-source-release.zip"))
2844 "1mr92s4zz6gf028wiskjg8rd1znxzdnmskg42ac55ifg9v1p1884"))))
2845 (build-system ant-build-system)
2847 `(#:jar-name "maven-common-artifact-filters.jar"
2848 #:source-dir "src/main/java"
2849 #:tests? #f; require maven-plugin-testing-harness, which requires maven 3.2.
2851 (modify-phases %standard-phases
2852 (add-before 'build 'fix-aether
2854 (substitute* "pom.xml"
2855 (("eclipse.aether") "sonatype.aether"))
2856 (substitute* "src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java"
2857 (("eclipse") "sonatype"))))
2859 (install-from-pom "pom.xml")))))
2861 (list maven-3.0-artifact
2864 maven-3.0-plugin-api
2867 java-eclipse-sisu-plexus
2868 java-sonatype-aether-api
2869 java-sonatype-aether-util))
2871 (list maven-resolver-api maven-resolver-util))
2874 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2875 (synopsis "Tree-based API for resolution of Maven project dependencies")
2876 (description "This package provides a tree-based API for resolution of
2877 Maven project dependencies.")
2878 (license license:asl2.0)))
2880 (define-public maven-common-artifact-filters-3.1.0
2882 (inherit maven-common-artifact-filters)
2886 (uri (string-append "mirror://apache/maven/shared/"
2887 "maven-common-artifact-filters-" version
2888 "-source-release.zip"))
2891 "1cl1qk4r0gp62bjzfm7lml9raz1my2kd4yf0ci0lnfsn0h5qivnb"))))
2893 (substitute-keyword-arguments (package-arguments maven-common-artifact-filters)
2895 `(modify-phases ,phases
2896 (delete 'fix-aether)
2897 (add-before 'build 'remove-sisu
2899 (substitute* "pom.xml"
2900 (("sisu-inject-plexus") "maven-plugin-api")
2901 (("org.sonatype.sisu") "org.apache.maven"))))))))))
2903 (define-public maven-enforcer-api
2905 (name "maven-enforcer-api")
2909 (uri (string-append "mirror://apache/maven/enforcer/"
2910 "enforcer-" version "-source-release.zip"))
2913 "1479yp58jv788xc1jc2sbdxpajlbvwlk60639vd2h4s8r6x7naqh"))))
2914 (build-system ant-build-system)
2916 `(#:jar-name "maven-enforcer-api.jar"
2917 #:source-dir "enforcer-api/src/main/java"
2918 #:tests? #f; no tests
2920 (modify-phases %standard-phases
2922 (install-from-pom "enforcer-api/pom.xml")))))
2924 (list maven-plugin-api java-plexus-container-default java-jsr305
2925 maven-enforcer-parent-pom))
2928 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2929 (synopsis "Tree-based API for resolution of Maven project dependencies")
2930 (description "This package provides a tree-based API for resolution of
2931 Maven project dependencies.")
2932 (license license:asl2.0)))
2934 (define maven-enforcer-parent-pom
2936 (inherit maven-enforcer-api)
2937 (name "maven-enforcer-parent-pom")
2941 (modify-phases %standard-phases
2944 (add-before 'install 'fix-pom-versions
2946 (substitute* "pom.xml"
2947 (("<maven.version>.*</maven.version>")
2948 ,(string-append "<maven.version>" (package-version maven)
2949 "</maven.version>"))
2950 (("2.11.0") ,(package-version java-commons-io))
2951 (("3.12.0") ,(package-version java-commons-lang3))
2952 (("1.6.1") ,(package-version maven-resolver-util))
2953 (("1.15") ,(package-version java-commons-codec)))))
2955 (install-pom-file "pom.xml")))))
2957 `(("maven-parent-pom" ,maven-parent-pom-30)))))
2959 (define-public maven-enforcer-rules
2961 (inherit maven-enforcer-api)
2962 (name "maven-enforcer-rules")
2964 `(#:tests? #f; requires maven-plugin-testing-harness
2965 #:jar-name "maven-enforcer-rules.jar"
2966 #:source-dir "enforcer-rules/src/main/java"
2967 #:test-dir "enforcer-rules/src/test"
2969 (modify-phases %standard-phases
2971 (install-from-pom "enforcer-rules/pom.xml")))))
2973 (list maven-artifact
2976 maven-common-artifact-filters
2982 maven-dependency-tree
2984 maven-enforcer-parent-pom))))
2986 (define-public maven-enforcer-plugin
2988 (inherit maven-enforcer-api)
2989 (name "maven-enforcer-plugin")
2992 #:jar-name "maven-enforcer-plugin.jar"
2993 #:source-dir "maven-enforcer-plugin/src/main/java"
2995 (modify-phases %standard-phases
2996 (add-before 'build 'generate-plugin.xml
2997 (generate-plugin.xml "maven-enforcer-plugin/pom.xml"
2999 "maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/"
3001 (list "DisplayInfoMojo.java")
3002 (list "EnforceMojo.java"))))
3004 (install-from-pom "maven-enforcer-plugin/pom.xml")))))
3006 (list maven-artifact
3011 maven-enforcer-rules
3012 maven-plugin-annotations
3013 maven-enforcer-parent-pom))))
3015 (define-public maven-artifact-transfer
3017 (name "maven-artifact-transfer")
3021 (uri (string-append "mirror://apache/maven/shared/"
3022 "maven-artifact-transfer-" version
3023 "-source-release.zip"))
3026 "0xl7lkksljacrhmvwf924zb6h0h5zw9494jaz9cz4hll0lrhlpz6"))))
3027 (build-system ant-build-system)
3029 `(#:tests? #f; require mockito 2
3030 #:jar-name "maven-artifact-transfer.jar"
3031 #:source-dir "src/main/java"
3033 (modify-phases %standard-phases
3034 (add-after 'build 'generate-metadata
3036 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3037 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3038 "--source" "src/main/java"
3039 "--output" "build/classes/META-INF/plexus/components.xml"
3040 "--classes" "build/classes"
3041 "--descriptors" "build/classes/META-INF")
3043 (add-after 'generate-metadata 'rebuild
3045 (invoke "ant" "jar")
3048 (install-from-pom "pom.xml")))))
3050 (list java-commons-codec
3053 maven-common-artifact-filters-3.1.0
3054 java-plexus-component-annotations
3057 java-plexus-classworlds
3058 java-sonatype-aether-api
3059 java-eclipse-aether-api
3060 java-eclipse-aether-util
3061 java-eclipse-aether-impl))
3063 (list unzip java-plexus-component-metadata))
3064 (home-page "https://maven.apache.org/shared/maven-artifact-transfer")
3065 (synopsis "API to install, deploy and resolve artifacts in Maven")
3066 (description "This package contains an API to install, deploy and resolve
3067 artifacts in Maven 3.")
3068 (license license:asl2.0)))
3070 (define-public maven-install-plugin
3072 (name "maven-install-plugin")
3073 (version "3.0.0-M1")
3076 (uri (string-append "mirror://apache/maven/plugins/"
3077 "maven-install-plugin-" version
3078 "-source-release.zip"))
3081 "1l9iydxririrair0i5sk2iypn9wspzbb666lc0ddg20yyr8w39dm"))))
3082 (build-system ant-build-system)
3084 `(#:tests? #f; require maven-plugin-testing-harness
3085 #:jar-name "maven-install-plugin.jar"
3086 #:source-dir "src/main/java"
3088 (modify-phases %standard-phases
3089 (add-before 'build 'fix-pom
3091 (substitute* "pom.xml"
3092 (("maven-project") "maven-core")
3093 (("maven-artifact-manager") "maven-artifact")
3096 (add-before 'build 'generate-plugin.xml
3097 (generate-plugin.xml "pom.xml"
3099 "src/main/java/org/apache/maven/plugins/install"
3101 (list "AbstractInstallMojo.java" "InstallFileMojo.java")
3102 (list "AbstractInstallMojo.java" "InstallMojo.java"))))
3104 (install-from-pom "pom.xml")))))
3106 `(("maven-artifact" ,maven-artifact)
3107 ("maven-plugin-api" ,maven-plugin-api)
3108 ("maven-compat" ,maven-compat)
3109 ("maven-artifact-transfer" ,maven-artifact-transfer)
3110 ("maven-plugins-pom-23" ,maven-plugins-pom-23)
3111 ("java-plexus-digest" ,java-plexus-digest)))
3113 (list maven-plugin-annotations java-slf4j-api))
3116 (home-page "https://maven.apache.org/plugin/maven-install-plugin")
3117 (synopsis "Maven's install plugin")
3118 (description "The Install Plugin is used during the install phase to add
3119 artifact(s) to the local repository. The Install Plugin uses the information
3120 in the POM (groupId, artifactId, version) to determine the proper location for
3121 the artifact within the local repository.
3123 The local repository is the local cache where all artifacts needed for the
3124 build are stored. By default, it is located within the user's home directory
3125 (@file{~/.m2/repository}) but the location can be configured in
3126 @file{~/.m2/settings.xml} using the @code{<localRepository>} element.")
3127 (license license:asl2.0)))
3129 (define-public maven-filtering
3131 (name "maven-filtering")
3135 (uri (string-append "https://archive.apache.org/dist/maven/"
3136 "shared/maven-filtering-" version
3137 "-source-release.zip"))
3140 "09wrdhchnszd2l6h4z30ra0bv1a19qyjgac9z8zf1pn0m4nw05yz"))))
3141 (build-system ant-build-system)
3143 `(#:jar-name "maven-filtering.jar"
3144 #:source-dir "src/main/java"
3145 #:test-dir "src/test"
3146 ;; this test comes from plexus-build-api, not this package
3147 #:test-exclude (list "**/IncrementalResourceFilteringTest.java"
3148 "**/Abstract*.java")
3150 (modify-phases %standard-phases
3151 (add-after 'build 'generate-metadata
3153 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3154 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3155 "--source" "src/main/java"
3156 "--output" "build/classes/META-INF/plexus/components.xml"
3157 "--classes" "build/classes"
3158 "--descriptors" "build/classes/META-INF")
3160 (add-after 'generate-metadata 'rebuild
3162 (invoke "ant" "jar")
3164 (add-before 'check 'decompress-tests
3165 (lambda* (#:key inputs #:allow-other-keys)
3166 (let* ((build-api-source (assoc-ref inputs "java-plexus-build-api-origin"))
3167 (classes (string-append build-api-source "/src/test/java")))
3168 (copy-recursively classes "src/test/"))
3170 (add-before 'check 'fix-directory
3172 (substitute* (find-files "src/test" ".*.java$")
3173 (("target/test-classes/") "build/test-classes/"))))
3174 (add-before 'check 'copy-test-resources
3176 (copy-recursively "src/test/resources" "build/test-classes/")
3179 (install-from-pom "pom.xml")))))
3181 (list maven-3.0-core
3183 java-plexus-utils-3.2.1
3184 java-plexus-interpolation
3185 java-plexus-build-api
3186 maven-parent-pom-30))
3191 ("java-assertj" ,java-assertj)
3192 ("java-junit" ,java-junit)
3193 ("java-mockito" ,java-mockito-1)
3194 ("java-objenesis" ,java-objenesis)
3195 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
3196 ("java-plexus-build-api-origin" ,(package-source java-plexus-build-api))))
3197 (home-page "https://maven.apache.org/shared/maven-filtering")
3198 (synopsis "Shared component for all plugins that needs to filter resources")
3199 (description "This component provides an API to filter resources in Maven
3201 (license license:asl2.0)))
3203 (define-public maven-resources-plugin
3205 (name "maven-resources-plugin")
3210 (url "https://github.com/apache/maven-resources-plugin")
3211 (commit (string-append "maven-resources-plugin-" version))))
3212 (file-name (git-file-name name version))
3215 "090k5j2y7ak54czfjjg3v7pdmdlgd96fbs91d1fd3vslm9zzndg8"))))
3216 (build-system ant-build-system)
3218 `(#:jar-name "maven-resources-plugin.jar"
3219 #:source-dir "src/main/java"
3220 #:test-dir "src/test"
3221 #:tests? #f; test depends on maven-plugin-test-harness
3223 (modify-phases %standard-phases
3224 (add-before 'build 'generate-plugin.xml
3225 (generate-plugin.xml "pom.xml" "resources"
3226 "src/main/java/org/apache/maven/plugins/resources"
3228 (list "ResourcesMojo.java" "CopyResourcesMojo.java")
3229 (list "ResourcesMojo.java")
3230 (list "ResourcesMojo.java" "TestResourcesMojo.java"))))
3232 (install-from-pom "pom.xml")))))
3234 (list maven-plugin-api
3238 java-plexus-interpolation
3239 maven-parent-pom-31))
3241 (list maven-plugin-annotations java-commons-io))
3243 (list java-plexus-component-metadata))
3244 (home-page "https://maven.apache.org/plugins/maven-resources-plugin")
3245 (synopsis "Maven plugin to collect and install resources")
3246 (description "The Resources Plugin handles the copying of project resources
3247 to the output directory. There are two different kinds of resources: main
3248 resources and test resources. The difference is that the main resources are
3249 the resources associated to the main source code while the test resources are
3250 associated to the test source code.
3252 Thus, this allows the separation of resources for the main source code and its
3254 (license license:asl2.0)))
3256 (define-public maven-shared-incremental
3258 (name "maven-shared-incremental")
3262 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
3263 "maven-shared-incremental-" version
3264 "-source-release.zip"))
3267 "03n4nfswyg9ahkz2zx4skcr3ghs01zh95g9js51hc75mfqx9b976"))))
3268 (build-system ant-build-system)
3270 `(#:jar-name "shared-incremental.java"
3271 #:source-dir "src/main/java"
3272 #:test-dir "src/test"
3274 (modify-phases %standard-phases
3275 (add-before 'build 'change-parent
3277 (substitute* "pom.xml"
3280 (add-before 'build 'fix-pom
3282 (substitute* "pom.xml"
3283 (("plexus-component-api") "plexus-component-annotations"))
3285 (add-after 'build 'generate-metadata
3287 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3288 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3289 "--source" "src/main/java"
3290 "--output" "build/classes/META-INF/plexus/components.xml"
3291 "--classes" "build/classes"
3292 "--descriptors" "build/classes/META-INF")
3295 (install-from-pom "pom.xml")))))
3297 (list maven-plugin-api maven-core maven-shared-utils
3298 java-plexus-component-annotations maven-parent-pom-30))
3300 (list unzip java-plexus-component-metadata))
3301 (home-page "https://maven.apache.org/shared/maven-shared-incremental")
3302 (synopsis "Maven Incremental Build support utilities")
3303 (description "This package contains various utility classes and plexus
3304 components for supporting incremental build functionality in maven plugins.")
3305 (license license:asl2.0)))
3307 (define-public maven-compiler-plugin
3309 (name "maven-compiler-plugin")
3314 (url "https://github.com/apache/maven-compiler-plugin")
3315 (commit (string-append "maven-compiler-plugin-" version))))
3316 (file-name (git-file-name name version))
3319 "0jkbq02vykd09ws8k9bzqxv6fjrpmir8gcxydbmj05kkhl242bma"))))
3320 (build-system ant-build-system)
3322 `(#:jar-name "maven-compiler-plugin.jar"
3323 #:source-dir "src/main/java"
3324 #:test-dir "src/test"
3325 #:tests? #f; test depends on maven-plugin-test-harness
3327 (modify-phases %standard-phases
3328 (add-before 'build 'generate-plugin.xml
3329 (generate-plugin.xml "pom.xml"
3331 "src/main/java/org/apache/maven/plugin/compiler"
3333 (list "AbstractCompilerMojo.java" "CompilerMojo.java")
3334 (list "AbstractCompilerMojo.java" "TestCompilerMojo.java"))))
3335 (add-after 'generate-plugin.xml 'fix-plugin.xml
3337 (substitute* "build/classes/META-INF/maven/plugin.xml"
3338 ;; These are defined in AbstractCompilerMojo.java, but not
3339 ;; parsed correctly in the previous phase
3340 (("DEFAULT_TARGET") "1.6")
3341 (("DEFAULT_SOURCE") "1.6"))
3344 (install-from-pom "pom.xml")))))
3346 (list maven-plugin-api
3350 maven-shared-incremental
3352 java-plexus-compiler-api
3353 java-plexus-compiler-manager
3354 java-plexus-compiler-javac
3355 maven-parent-pom-33))
3357 (list maven-plugin-annotations java-commons-io))
3358 (home-page "https://maven.apache.org/plugins/maven-compiler-plugin")
3359 (synopsis "Compiler plugin for Maven")
3360 (description "The Compiler Plugin is used to compile the sources of your
3361 project. Since 3.0, the default compiler is @code{javax.tools.JavaCompiler}
3362 (if you are using java 1.6) and is used to compile Java sources. If you want
3363 to force the plugin using javac, you must configure the plugin option
3364 @code{forceJavacCompilerUse}.
3366 Also note that at present the default source setting is 1.6 and the default
3367 target setting is 1.6, independently of the JDK you run Maven with. You are
3368 highly encouraged to change these defaults by setting source and target as
3369 described in Setting the -source and -target of the Java Compiler.
3371 Other compilers than javac can be used and work has already started on
3372 AspectJ, .NET, and C#.")
3373 (license license:asl2.0)))
3375 (define-public java-surefire-logger-api
3377 (name "java-surefire-logger-api")
3378 (version "3.0.0-M4")
3381 (uri (string-append "mirror://apache/maven/surefire/"
3382 "surefire-" version "-source-release.zip"))
3385 "1s6d4pzk3bjm9l38mj9sfgbgmk145rppdj1dmqwc4d5105mr9q9w"))))
3386 (build-system ant-build-system)
3388 `(#:jar-name "java-surefire-logger-api.jar"
3389 #:source-dir "surefire-logger-api/src/main/java"
3390 #:tests? #f; require mockito 2
3392 (modify-phases %standard-phases
3394 (install-from-pom "surefire-logger-api/pom.xml")))))
3396 (list java-surefire-parent-pom))
3399 (home-page "https://maven.apache.org/surefire/surefire-logger-api")
3400 (synopsis "Interfaces and Utilities related only to internal SureFire Logger API")
3401 (description "This package contains interfaces and utilities that are
3402 internal to the SureFire Logger API. It is designed to have no dependency.")
3403 (license license:asl2.0)))
3405 (define-public java-surefire-parent-pom
3407 (inherit java-surefire-logger-api)
3408 (name "java-surefire-parent-pom")
3412 (modify-phases %standard-phases
3415 (add-before 'install 'fix-pom-dependency-versions
3417 (substitute* "pom.xml"
3418 (("1.11") ,(package-version java-commons-compress))
3419 (("1.13") ,(package-version java-commons-codec)))
3420 (substitute* "pom.xml"
3421 (("commonsLang3Version>.*")
3423 "commonsLang3Version>"
3424 ,(package-version java-commons-lang3)
3425 "</commonsLang3Version>\n"))
3426 (("commonsCompress>.*")
3429 ,(package-version java-commons-compress)
3430 "</commonsCompress>\n"))
3431 (("commonsIoVersion>.*")
3434 ,(package-version java-commons-io)
3435 "</commonsIoVersion>\n"))
3436 (("0.11.0") ,(package-version maven-artifact-transfer))
3437 (("1.0.3") ,(package-version java-plexus-java)))
3439 (add-after 'install 'install-providers
3440 (install-pom-file "surefire-providers/pom.xml"))
3442 (install-pom-file "pom.xml")))))
3444 (list maven-parent-pom-33))))
3446 (define-public java-surefire-api
3448 (inherit java-surefire-logger-api)
3449 (name "java-surefire-api")
3452 #:jar-name "java-surefire-api.jar"
3453 #:source-dir "surefire-api/src/main/java"
3455 (modify-phases %standard-phases
3456 (add-before 'build 'copy-resources
3458 (mkdir-p "build/classes")
3459 (copy-recursively "surefire-api/src/main/resources" "build/classes")
3461 (add-before 'build 'prepare-shade
3462 (lambda* (#:key inputs #:allow-other-keys)
3463 (mkdir-p "build/classes")
3464 (with-directory-excursion "build/classes"
3469 (invoke "jar" "xf" jar-file)
3470 (delete-file-recursively "META-INF"))
3471 (find-files (assoc-ref inputs input) ".*.jar$")))
3472 '("maven-shared-utils" "java-commons-codec")))
3474 (add-after 'build 'shade
3475 (lambda* (#:key inputs #:allow-other-keys)
3477 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3478 (injar "java-surefire-api.jar")
3479 (outjar "java-surefire-api-shaded.jar"))
3480 (with-directory-excursion "build/jar"
3481 (with-output-to-file "rules"
3483 (format #t (string-append
3485 "org.apache.maven.shared.utils.** "
3486 "org.apache.maven.surefire.shade.api."
3487 "org.apache.maven.shared.utils.@1~%"))
3488 (format #t (string-append
3490 "org.apache.commons.codec.** "
3491 "org.apache.maven.surefire.shade.api."
3492 "org.apache.commons.codec.@1~%"))))
3493 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3495 (rename-file outjar injar)))
3498 (install-from-pom "surefire-api/pom.xml")))))
3500 (list java-surefire-logger-api java-commons-codec
3501 java-surefire-parent-pom maven-shared-utils-3.1))
3505 (list unzip java-jarjar))
3506 (synopsis "Maven SureFire API")
3507 (description "This package contains the API to use Maven SureFire.")))
3509 (define-public java-surefire-booter
3511 (inherit java-surefire-logger-api)
3512 (name "java-surefire-booter")
3514 `(#:tests? #f; require mockito 2
3515 #:jar-name "java-surefire-booter.jar"
3516 #:source-dir "surefire-booter/src/main/java"
3518 (modify-phases %standard-phases
3519 (add-before 'build 'fix-/bin/sh
3521 (substitute* "surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java"
3522 (("/bin/sh") (which "sh")))
3525 (install-from-pom "surefire-booter/pom.xml")))))
3527 (list java-surefire-api java-commons-lang3 java-commons-io
3528 java-surefire-parent-pom))
3531 (synopsis "API and Facilities used by forked tests running in JVM sub-process")
3532 (description "SureFire runs tests inside a forked JVM subprocess. This
3533 package contains an API and facilities used inside that forked JVM.")))
3535 (define-public java-surefire-extensions-api
3537 (inherit java-surefire-logger-api)
3538 (name "java-surefire-extensions-api")
3540 `(#:tests? #f; requires mockito 2
3541 #:jar-name "java-surefire-extensions-api.jar"
3542 #:source-dir "surefire-extensions-api/src/main/java"
3544 (modify-phases %standard-phases
3546 (install-from-pom "surefire-extensions-api/pom.xml")))))
3548 (list java-surefire-api java-surefire-parent-pom))
3550 (list java-plexus-component-annotations))
3551 (synopsis "Extension API for Maven SureFire")
3552 (description "Surefire is a test framework project. This is the aggregator
3553 POM in Apache Maven Surefire project.")))
3555 (define-public java-surefire-common-java5
3557 (inherit java-surefire-logger-api)
3558 (name "java-surefire-common-java5")
3560 `(#:jar-name "java-surefire-common-java5.jar"
3561 #:source-dir "surefire-providers/common-java5/src/main/java"
3562 #:test-dir "surefire-providers/common-java5/src/test"
3563 #:test-exclude (list
3565 "**/PojoStackTraceWriterTest.java"
3567 "**/SmartStackTraceParserTest.java")
3569 (modify-phases %standard-phases
3570 (add-before 'build 'prepare-shade
3571 (lambda* (#:key inputs #:allow-other-keys)
3572 (mkdir-p "build/classes")
3573 (with-directory-excursion "build/classes"
3576 (invoke "jar" "xf" jar-file)
3577 (delete-file-recursively "META-INF"))
3578 (find-files (assoc-ref inputs "maven-shared-utils") ".*.jar$")))
3580 (add-after 'build 'shade
3581 (lambda* (#:key inputs #:allow-other-keys)
3583 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3584 (injar "java-surefire-common-java5.jar")
3585 (outjar "java-surefire-common-java5-shaded.jar"))
3586 (with-directory-excursion "build/jar"
3587 (with-output-to-file "rules"
3589 (format #t (string-append
3591 "org.apache.maven.shared.utils.** "
3592 "org.apache.maven.surefire.shade.common."
3593 "org.apache.maven.shared.utils.@1~%"))))
3594 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3596 (rename-file outjar injar)))
3599 (install-from-pom "surefire-providers/common-java5/pom.xml")))))
3601 (list maven-shared-utils-3.1 java-surefire-api
3602 java-surefire-parent-pom))
3604 (list unzip java-jarjar java-junit java-fest-assert))
3605 (synopsis "Common java5 facilities for Maven SureFire")
3606 (description "This package contains shared Java 5 code for all providers.")))
3608 (define-public java-surefire-common-junit3
3610 (inherit java-surefire-logger-api)
3611 (name "java-surefire-common-junit3")
3613 `(#:jar-name "java-surefire-common-junit3.jar"
3614 #:source-dir "surefire-providers/common-junit3/src/main/java"
3615 #:test-dir "surefire-providers/common-junit3/src/test"
3617 (modify-phases %standard-phases
3619 (install-from-pom "surefire-providers/common-junit3/pom.xml")))))
3621 (list java-junit java-surefire-api java-surefire-parent-pom))
3623 (list unzip java-junit java-fest-assert))
3624 (synopsis "Shared JUnit3 provider code for Maven SureFire")
3625 (description "This package contains shared code for all JUnit providers.")))
3627 (define-public java-surefire-common-junit4
3629 (inherit java-surefire-logger-api)
3630 (name "java-surefire-common-junit4")
3632 `(#:jar-name "java-surefire-common-junit4.jar"
3633 #:source-dir "surefire-providers/common-junit4/src/main/java"
3634 #:tests? #f; tests require junit 4.0
3636 (modify-phases %standard-phases
3638 (install-from-pom "surefire-providers/common-junit4/pom.xml")))))
3642 java-surefire-common-java5
3643 java-surefire-common-junit3
3644 maven-shared-utils-3.1
3645 java-surefire-parent-pom))
3646 (synopsis "Shared JUnit4 provider code for Maven SureFire")
3647 (description "This package contains shared code for all JUnit providers,
3648 starting from JUnit 4.")))
3650 (define-public java-surefire-junit4
3652 (inherit java-surefire-logger-api)
3653 (name "java-surefire-junit4")
3656 #:jar-name "java-surefire-junit4.jar"
3657 #:source-dir "surefire-providers/surefire-junit4/src/main/java"
3658 #:test-dir "surefire-providers/surefire-junit4/src/test"
3659 #:modules ((guix build ant-build-system)
3661 (guix build java-utils)
3664 (modify-phases %standard-phases
3665 (add-before 'install 'regenerate-own-pom
3666 ;; Surefire struggles resolving artifacts because of this pom
3667 ;; file, resulting in a NullPointerException when collecting
3668 ;; Artifacts (and a "Failure detected." message from
3669 ;; DefaultArtifactResolver). Replace the pom file with a much
3670 ;; simpler one. Everything is shaded anyway (as used to be the
3671 ;; case in 2.22), so there will not be missing dependencies.
3673 "surefire-providers/surefire-junit4/pom.xml"
3674 "org.apache.maven.surefire" "surefire-junit4"
3675 ,(package-version java-surefire-common-java5)
3676 #:name "Surefire JUnit4"))
3677 (add-before 'build 'copy-resources
3679 (mkdir-p "build/classes")
3680 (copy-recursively "surefire-providers/surefire-junit4/src/main/resources"
3683 (add-before 'build 'prepare-shade
3684 (lambda* (#:key inputs #:allow-other-keys)
3685 (mkdir-p "build/classes")
3686 (with-directory-excursion "build/classes"
3691 (invoke "jar" "xf" jar-file)
3692 (delete-file-recursively "META-INF"))
3693 (find-files (assoc-ref inputs input) ".*.jar$")))
3694 '("maven-shared-utils" "java-surefire-common-java5"
3695 "java-surefire-common-junit3" "java-surefire-common-junit4"
3696 "java-surefire-api")))
3698 (add-after 'build 'shade
3699 (lambda* (#:key inputs #:allow-other-keys)
3701 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3702 (injar "java-surefire-junit4.jar")
3703 (outjar "java-surefire-junit4-shaded.jar"))
3704 (with-directory-excursion "build/jar"
3705 (with-output-to-file "rules"
3707 (format #t (string-append
3709 "org.apache.maven.shared.utils.** "
3710 "org.apache.maven.surefire.shade."
3711 "org.apache.maven.shared.utils.@1~%"))))
3712 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3714 (rename-file outjar injar)))
3717 (install-from-pom "surefire-providers/surefire-junit4/pom.xml")))))
3719 (list java-junit java-surefire-parent-pom))
3721 (list java-surefire-common-junit4 java-surefire-common-junit3
3722 java-surefire-common-java5 java-surefire-api))
3724 (list java-jarjar unzip java-junit java-hamcrest-all
3726 (synopsis "SureFire JUnit 4.0+ runner")
3727 (description "This package contains the runner for tests run on a forked
3728 JVM, using JUnit 4.0 or later.")))
3730 (define-public maven-surefire-common
3732 (inherit java-surefire-logger-api)
3733 (name "maven-surefire-common")
3735 `(#:tests? #f; require mockito 2
3736 #:jar-name "maven-surefire-common.jar"
3737 #:source-dir "maven-surefire-common/src/main/java"
3739 (modify-phases %standard-phases
3740 (add-before 'build 'prepare-shade
3741 (lambda* (#:key inputs #:allow-other-keys)
3742 (mkdir-p "build/classes")
3743 (with-directory-excursion "build/classes"
3748 (invoke "jar" "xf" jar-file)
3749 (delete-file-recursively "META-INF"))
3750 (find-files (assoc-ref inputs input) ".*.jar$")))
3751 '("maven-shared-utils" "java-commons-io" "java-commons-lang3"
3752 "java-commons-compress" "maven-common-artifact-filters")))
3754 (add-after 'build 'shade
3755 (lambda* (#:key inputs #:allow-other-keys)
3757 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3758 (injar "maven-surefire-common.jar")
3759 (outjar "maven-surefire-common-shaded.jar"))
3760 (with-directory-excursion "build/jar"
3761 (with-output-to-file "rules"
3763 (format #t (string-append
3765 "org.apache.maven.shared.utils.** "
3766 "org.apache.maven.surefire.shade.common."
3767 "org.apache.maven.shared.utils.@1~%"))
3768 (format #t (string-append
3770 "org.apache.commons.io.** "
3771 "org.apache.maven.surefire.shade.common."
3772 "org.apache.commons.io.@1~%"))
3773 (format #t (string-append
3775 "org.apache.commons.lang3.** "
3776 "org.apache.maven.surefire.shade.common."
3777 "org.apache.commons.lang3.@1~%"))
3778 (format #t (string-append
3780 "org.apache.commons.compress.** "
3781 "org.apache.maven.surefire.shade.common."
3782 "org.apache.commons.compress.@1~%"))))
3783 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3785 (rename-file outjar injar)))
3787 (add-before 'install 'fix-pom
3789 (substitute* "maven-surefire-common/pom.xml"
3790 (("maven-toolchain") "maven-core"))
3793 (install-from-pom "maven-surefire-common/pom.xml")))))
3795 (list java-surefire-api
3796 java-surefire-extensions-api
3797 java-surefire-booter
3799 maven-plugin-annotations
3800 maven-common-artifact-filters
3801 maven-artifact-transfer
3806 java-commons-compress
3807 maven-shared-utils-3.1
3808 java-surefire-parent-pom))
3812 (list unzip java-jarjar))
3813 (synopsis "API used in Surefire and Failsafe MOJO")
3814 (description "This package contains an API used in SureFire and Failsafe
3817 (define-public maven-surefire-plugin
3819 (inherit java-surefire-logger-api)
3820 (name "maven-surefire-plugin")
3822 `(#:jar-name "maven-surefire-plugin.jar"
3823 #:source-dir "maven-surefire-plugin/src/main/java"
3824 #:tests? #f; test depends on maven-plugin-test-harness
3826 (modify-phases %standard-phases
3827 (add-before 'build 'generate-plugin.xml
3828 (generate-plugin.xml "maven-surefire-plugin/pom.xml"
3833 "maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java"
3834 "maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java"))))
3836 (install-from-pom "maven-surefire-plugin/pom.xml")))))
3838 (list maven-surefire-common maven-core))
3840 (list maven-plugin-annotations unzip))
3841 (synopsis "SureFire Maven plugin that runs tests")
3842 (description "The Surefire Plugin is used during the test phase of the
3843 build lifecycle to execute the unit tests of an application. It generates
3844 reports in two different file formats, plain text and xml.")))
3846 (define-public maven-jar-plugin
3848 (name "maven-jar-plugin")
3853 (url "https://github.com/apache/maven-jar-plugin")
3854 (commit (string-append "maven-jar-plugin-" version))))
3855 (file-name (git-file-name name version))
3858 "04y2rlmcabmc55ljqlkgbb5xx94a59cz1dvrnpfj1vzz024pqkyg"))))
3859 (build-system ant-build-system)
3861 `(#:jar-name "maven-jar-plugin.jar"
3862 #:source-dir "src/main/java"
3863 #:tests? #f; test depends on maven-plugin-test-harness
3865 (modify-phases %standard-phases
3866 (add-before 'build 'generate-plugin.xml
3867 (generate-plugin.xml "pom.xml"
3869 "src/main/java/org/apache/maven/plugins/jar"
3871 (list "AbstractJarMojo.java" "JarMojo.java")
3872 (list "AbstractJarMojo.java" "TestJarMojo.java"))))
3874 (install-from-pom "pom.xml")))))
3876 (list maven-archiver
3879 maven-3.0-plugin-api
3880 maven-file-management
3882 java-plexus-archiver
3885 (list maven-plugin-annotations))
3886 (home-page "https://maven.apache.org/plugins/maven-jar-plugin")
3887 (synopsis "Jar builder plugin for Maven")
3888 (description "This plugin provides the capability to build jars. If you
3889 would like to sign jars please use the Maven Jarsigner Plugin instead.")
3890 (license license:asl2.0)))
3892 (define-public maven-doxia-sink-api
3894 (name "maven-doxia-sink-api")
3895 (version "2.0.0-M2")
3899 (url "https://gitbox.apache.org/repos/asf/maven-doxia.git")
3900 (commit (string-append "doxia-" version))))
3901 (file-name (git-file-name "doxia" version))
3904 "0jx96lg0hgjsrm8mynhac4hwh2hmgiwjpwpx2k03yr14040zcr48"))))
3905 (build-system ant-build-system)
3907 (list maven-doxia-parent-pom))
3909 `(#:jar-name "doxia-sink-api.jar"
3910 #:source-dir "doxia-sink-api/src/main/java"
3911 #:tests? #f ; no tests
3912 #:phases (modify-phases %standard-phases
3914 (install-from-pom "doxia-sink-api/pom.xml")))))
3915 (home-page "https://maven.apache.org/doxia/index.html")
3916 (synopsis "Generic markup language interface")
3918 "The @code{Sink} interface is a generic markup language
3919 interface provided as a Java API. It contains several methods that
3920 encapsulate common text syntax. A start tag is denoted by @code{xxxx()}
3921 method and a end of tag by @code{xxxx_()} method.")
3922 (license license:asl2.0)))
3924 (define maven-doxia-parent-pom
3926 (inherit maven-doxia-sink-api)
3927 (name "maven-doxia-parent-pom")
3930 #:phases (modify-phases %standard-phases
3934 (install-pom-file "pom.xml")))))
3936 (list maven-parent-pom-34))
3937 (synopsis "Content generation framework")
3938 (description "@samp{Doxia} is a content generation framework that provides
3939 powerful techniques for generating static and dynamic content, supporting a
3940 variety of markup languages.")))
3942 (define-public maven-doxia-core
3944 (inherit maven-doxia-sink-api)
3945 (name "maven-doxia-core")
3947 `(#:jar-name "doxia-core.jar"
3948 #:source-dir "doxia-core/src/main/java"
3949 #:test-dir "doxia-core/src/test/java"
3950 #:tests? #f ; tests require JUnit5
3951 #:phases (modify-phases %standard-phases
3953 (install-from-pom "doxia-core/pom.xml")))))
3954 (propagated-inputs (list maven-doxia-parent-pom
3955 maven-doxia-sink-api
3959 java-eclipse-sisu-plexus
3961 (synopsis "Doxia core classes and interfaces")
3963 "Doxia is a content generation framework that provides powerful
3964 techniques for generating static and dynamic content, supporting a variety of
3967 This package contains Doxia core classes and interfaces.")))