1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
3 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
4 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
5 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
7 ;;; This file is part of GNU Guix.
9 ;;; GNU Guix is free software; you can redistribute it and/or modify it
10 ;;; under the terms of the GNU General Public License as published by
11 ;;; the Free Software Foundation; either version 3 of the License, or (at
12 ;;; your option) any later version.
14 ;;; GNU Guix is distributed in the hope that it will be useful, but
15 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
16 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 ;;; GNU General Public License for more details.
19 ;;; You should have received a copy of the GNU General Public License
20 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
22 (define-module (gnu packages maven)
23 #:use-module ((guix licenses) #:prefix license:)
24 #:use-module (guix packages)
25 #:use-module (guix download)
26 #:use-module (guix git-download)
27 #:use-module (guix utils)
28 #:use-module (guix build-system ant)
29 #:use-module (gnu packages)
30 #:use-module (gnu packages base)
31 #:use-module (gnu packages compression)
32 #:use-module (gnu packages java)
33 #:use-module (gnu packages maven-parent-pom)
34 #:use-module (gnu packages web)
35 #:use-module (gnu packages xml))
37 (define-public java-plexus-component-metadata
39 (inherit java-plexus-container-default)
40 (name "java-plexus-component-metadata")
42 `(#:jar-name "plexus-component-metadata.jar"
43 #:source-dir "src/main/java"
47 (modify-phases %standard-phases
48 (add-before 'configure 'chdir
50 (chdir "plexus-component-metadata")
52 (add-before 'build 'copy-resources
54 (copy-recursively "src/main/resources"
58 `(("java-plexus-container-default" ,java-plexus-container-default)
59 ("java-plexu-component-annotations" ,java-plexus-component-annotations)
60 ("java-plexus-utils" ,java-plexus-utils)
61 ("java-plexus-cli" ,java-plexus-cli)
62 ("java-plexus-classworlds" ,java-plexus-classworlds)
63 ("maven-plugin-api" ,maven-plugin-api)
64 ("maven-plugin-annotations" ,maven-plugin-annotations)
65 ("maven-core-bootstrap" ,maven-core-bootstrap)
66 ("maven-model" ,maven-model)
67 ("java-commons-cli" ,java-commons-cli)
68 ("java-qdox" ,java-qdox)
69 ("java-jdom2" ,java-jdom2)
70 ("java-asm" ,java-asm)))
72 `(("java-junit" ,java-junit)
73 ("java-guava" ,java-guava)
74 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
75 (synopsis "Inversion-of-control container for Maven")
76 (description "The Plexus project provides a full software stack for creating
77 and executing software projects. Based on the Plexus container, the
78 applications can utilise component-oriented programming to build modular,
79 reusable components that can easily be assembled and reused. This package
80 provides the Maven plugin generating the component metadata.")))
82 (define-public maven-resolver-api
84 (name "maven-resolver-api")
89 (url "https://github.com/apache/maven-resolver")
90 (commit (string-append "maven-resolver-" version))))
91 (file-name (git-file-name name version))
94 "1x1gll8nkfl6zgnab78fxxvvhg42b2grxgdh1wp2h4qxsjkxg93d"))))
95 (build-system ant-build-system)
97 `(#:jar-name "maven-resolver-api.jar"
98 #:source-dir "maven-resolver-api/src/main/java"
99 #:test-dir "maven-resolver-api/src/test"
101 (modify-phases %standard-phases
103 (install-from-pom "maven-resolver-api/pom.xml")))))
105 `(("java-asm" ,java-asm)
106 ("java-cglib" ,java-cglib)
107 ("java-hamcrest-core" ,java-hamcrest-core)
108 ("java-junit" ,java-junit)
109 ("java-mockito-1" ,java-mockito-1)
110 ("java-objenesis" ,java-objenesis)))
112 `(("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
113 (home-page "https://github.com/apache/maven-resolver")
114 (synopsis "Maven repository system API")
115 (description "This package contains the API for the maven repository system.")
116 (license license:asl2.0)))
118 (define maven-resolver-parent-pom
120 (inherit maven-resolver-api)
121 (name "maven-resolver-parent-pom")
125 (modify-phases %standard-phases
128 (add-before 'install 'fix-pom
130 (substitute* "pom.xml"
131 (("<classifier>no_aop</classifier>") ""))
134 (install-pom-file "pom.xml")))))
135 (propagated-inputs '())))
137 (define-public maven-resolver-spi
139 (inherit maven-resolver-api)
140 (name "maven-resolver-spi")
142 `(#:jar-name "maven-resolver-spi.jar"
143 #:source-dir "maven-resolver-spi/src/main/java"
144 #:test-dir "maven-resolver-spi/src/test"
146 (modify-phases %standard-phases
148 (install-from-pom "maven-resolver-spi/pom.xml")))))
150 `(("maven-resolver-api" ,maven-resolver-api)))
151 (synopsis "Maven repository system SPI")
152 (description "This package contains the service provider interface (SPI)
153 for repository system implementations and repository connectors.")))
155 (define-public maven-resolver-test-util
157 (inherit maven-resolver-api)
158 (name "maven-resolver-test-util")
160 `(#:jar-name "maven-resolver-test-util.jar"
161 #:source-dir "maven-resolver-test-util/src/main/java"
162 #:test-dir "maven-resolver-test-util/src/test"
165 `(("maven-resolver-api" ,maven-resolver-api)
166 ("maven-resolver-spi" ,maven-resolver-spi)))
167 (synopsis "Utility classes for testing the maven repository system")
168 (description "This package contains a collection of utility classes to
169 ease testing of the repository system.")))
171 (define-public maven-resolver-util
173 (inherit maven-resolver-api)
174 (name "maven-resolver-util")
176 `(#:jar-name "maven-resolver-util.jar"
177 #:source-dir "maven-resolver-util/src/main/java"
178 #:test-dir "maven-resolver-util/src/test"
180 (modify-phases %standard-phases
182 (install-from-pom "maven-resolver-util/pom.xml")))))
184 `(("maven-resolver-api" ,maven-resolver-api)))
186 `(("java-junit" ,java-junit)
187 ("java-hamcrest-core" ,java-hamcrest-core)
188 ("maven-resolver-test-util" ,maven-resolver-test-util)))
189 (synopsis "Utility classes for the maven repository system")
190 (description "This package contains a collection of utility classes to
191 ease usage of the repository system.")))
193 (define-public maven-resolver-connector-basic
195 (inherit maven-resolver-api)
196 (name "maven-resolver-connector-basic")
198 `(#:jar-name "maven-resolver-connector-basic.jar"
199 #:source-dir "maven-resolver-connector-basic/src/main/java"
200 #:test-dir "maven-resolver-connector-basic/src/test"
203 (modify-phases %standard-phases
204 (add-before 'build 'generate-sisu
206 (mkdir-p "build/classes/META-INF/sisu")
207 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
209 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
212 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
214 `(("maven-resolver-api" ,maven-resolver-api)
215 ("maven-resolver-spi" ,maven-resolver-spi)
216 ("maven-resolver-util" ,maven-resolver-util)
217 ("java-slf4j-api" ,java-slf4j-api)))
219 `(("java-javax-inject" ,java-javax-inject)
220 ("java-junit" ,java-junit)
221 ("maven-resolver-test-util" ,maven-resolver-test-util)))
222 (synopsis "Maven repository connector implementation")
223 (description "This package contains a repository connector implementation
224 for repositories using URI-based layouts.")))
226 (define-public maven-resolver-impl
228 (inherit maven-resolver-api)
229 (name "maven-resolver-impl")
231 `(#:jar-name "maven-resolver-impl.jar"
232 #:source-dir "maven-resolver-impl/src/main/java"
233 #:test-dir "maven-resolver-impl/src/test"
235 (modify-phases %standard-phases
236 (add-before 'build 'generate-sisu
238 (mkdir-p "build/classes/META-INF/sisu")
239 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
243 ;; Build this list by looking for files containing "@Named"
244 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
245 "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
246 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
247 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
248 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
249 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
250 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
251 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
252 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
253 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
254 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
255 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
256 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
257 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
258 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
259 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
260 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
261 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
262 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
263 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
264 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
265 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
266 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
269 (install-from-pom "maven-resolver-impl/pom.xml")))))
271 `(("maven-resolver-api" ,maven-resolver-api)
272 ("maven-resolver-spi" ,maven-resolver-spi)
273 ("maven-resolver-util" ,maven-resolver-util)
274 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
275 ("java-javax-inject" ,java-javax-inject)
276 ("java-guice" ,java-guice)
277 ("java-slf4j-api" ,java-slf4j-api)
278 ("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
280 `(("java-junit" ,java-junit)
281 ("maven-resolver-test-util" ,maven-resolver-test-util)))))
283 (define-public maven-resolver-transport-wagon
285 (inherit maven-resolver-api)
286 (name "maven-resolver-transport-wagon")
288 `(#:jar-name "maven-resolver-transport-wagon.jar"
289 #:source-dir "maven-resolver-transport-wagon/src/main/java"
290 #:test-dir "maven-resolver-transport-wagon/src/test"
293 (modify-phases %standard-phases
294 (add-before 'build 'generate-sisu
296 (mkdir-p "build/classes/META-INF/sisu")
297 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
299 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
301 (add-before 'build 'generate-components.xml
303 (mkdir-p "build/classes/META-INF/plexus")
304 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
308 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
312 <role>org.eclipse.aether.transport.wagon.WagonConfigurator</role>
313 <role-hint>plexus</role-hint>
314 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator</implementation>
316 <isolated-realm>false</isolated-realm>
319 <role>org.codehaus.plexus.PlexusContainer</role>
321 <field-name>container</field-name>
326 <role>org.eclipse.aether.transport.wagon.WagonProvider</role>
327 <role-hint>plexus</role-hint>
328 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider</implementation>
330 <isolated-realm>false</isolated-realm>
333 <role>org.codehaus.plexus.PlexusContainer</role>
335 <field-name>container</field-name>
340 </component-set>\n"))))
343 `(("maven-resolver-api" ,maven-resolver-api)
344 ("maven-resolver-spi" ,maven-resolver-spi)
345 ("maven-resolver-util" ,maven-resolver-util)
346 ("java-javax-inject" ,java-javax-inject)
347 ("mavne-wagon-provider-api" ,maven-wagon-provider-api)
348 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
349 ("java-plexus-classworld" ,java-plexus-classworlds)
350 ("java-plexus-plexus-util" ,java-plexus-utils)
351 ("java-slf4j-api" ,java-slf4j-api)
352 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
353 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
355 `(("java-junit" ,java-junit)
356 ("java-hamcrest-core" ,java-hamcrest-core)
357 ("maven-resolver-test-util" ,maven-resolver-test-util)
358 ("java-guava" ,java-guava)
359 ("java-cglib" ,java-cglib)
360 ("java-asm" ,java-asm)
361 ("java-aopalliance" ,java-aopalliance)
362 ("java-guice" ,java-guice)))
363 (synopsis "Transport implementation for Maven")
364 (description "This package contains a transport implementation based on
365 Maven Wagon, for use in Maven.")))
367 ;; aether is the parent project that was forked into maven-resolver. It used
368 ;; to be used with older versions of Maven, and is still required for some
369 ;; plugins and their dependencies. This version is required for the plugins,
370 ;; even though there are newer versions of this project.
371 (define-public java-sonatype-aether-api
373 (name "java-sonatype-aether-api")
378 (url "https://github.com/sonatype/sonatype-aether")
379 (commit (string-append "aether-" version))))
380 (file-name (git-file-name name version))
383 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
384 (build-system ant-build-system)
386 `(#:jar-name "aether-api.jar"
387 #:source-dir "aether-api/src/main/java"
388 #:test-dir "aether-api/src/test"
390 (modify-phases %standard-phases
391 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
392 (replace 'install (install-from-pom "aether-api/pom.xml")))))
394 `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-6)))
395 (native-inputs `(("java-junit" ,java-junit)))
396 (home-page "https://github.com/sonatype/sonatype-aether")
397 (synopsis "Maven repository system API")
398 (description "This package contains the API for the maven repository system.")
399 (license license:asl2.0)))
401 (define-public java-sonatype-aether-spi
403 (inherit java-sonatype-aether-api)
404 (name "java-sonatype-aether-spi")
406 `(#:jar-name "aether-spi.jar"
407 #:source-dir "aether-spi/src/main/java"
408 #:tests? #f; no tests
410 (modify-phases %standard-phases
411 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
413 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
414 (synopsis "Maven repository system SPI")
415 (description "This package contains the service provider interface (SPI)
416 for repository system implementations and repository connectors.")))
418 (define-public maven-shared-utils
420 (name "maven-shared-utils")
424 (uri (string-append "mirror://apache/maven/shared/"
425 "maven-shared-utils-" version "-source-release.zip"))
428 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
429 (build-system ant-build-system)
431 `(#:jar-name "maven-shared-utils.jar"
432 #:source-dir "src/main/java"
434 (modify-phases %standard-phases
435 (add-before 'build 'fix-/bin/sh-invocation
437 (substitute* (find-files "src" ".*.java$")
438 (("/bin/sh") (which "sh")))
440 (add-before 'check 'remove-cyclic-dep
443 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
446 (install-from-pom "pom.xml")))))
448 `(("java-jansi" ,java-jansi)
449 ("java-commons-io" ,java-commons-io)
450 ("java-jsr305" ,java-jsr305)
451 ("java-plexus-container-default" ,java-plexus-container-default)
452 ("maven-parent-pom-30" ,maven-parent-pom-30)))
455 ("java-junit" ,java-junit)
456 ("java-hamcrest-core" ,java-hamcrest-core)
457 ("java-commons-lang3" ,java-commons-lang3)))
458 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
459 (synopsis "Plexus-util replacement for maven")
460 (description "This project aims to be a functional replacement for
461 plexus-utils in Maven. It is not a 100% API compatible replacement but a
462 replacement with improvements.")
463 (license license:asl2.0)))
465 (define-public maven-plugin-annotations
467 (name "maven-plugin-annotations")
471 (uri (string-append "mirror://apache/maven/"
472 "plugin-tools/maven-plugin-tools-" version
473 "-source-release.zip"))
474 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
475 (build-system ant-build-system)
477 `(#:jar-name "maven-plugin-annotations.jar"
478 #:source-dir "maven-plugin-annotations/src/main/java"
481 `(("maven-artifact" ,maven-artifact)))
484 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
485 (synopsis "Java 5 annotations to use in Mojos")
486 (description "This package contains Java 5 annotations for use in Mojos.")
487 (license license:asl2.0)))
489 (define-public maven-wagon-provider-api
491 (name "maven-wagon-provider-api")
495 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
496 "wagon-" version "-source-release.zip"))
499 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
500 (build-system ant-build-system)
502 `(#:jar-name "maven-wagon-provider-api.jar"
503 #:source-dir "wagon-provider-api/src/main/java"
504 #:test-dir "wagon-provider-api/src/test"
506 (modify-phases %standard-phases
508 (install-from-pom "wagon-provider-api/pom.xml")))))
510 `(("java-plexus-utils" ,java-plexus-utils)
511 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
514 ("java-junit" ,java-junit)
515 ("java-easymock" ,java-easymock)))
516 (home-page "https://maven.apache.org/wagon")
517 (synopsis "Transport abstraction for Maven")
518 (description "Maven Wagon is a transport abstraction that is used in Maven's
519 artifact and repository handling code.")
520 (license license:asl2.0)))
522 (define maven-wagon-parent-pom
524 (inherit maven-wagon-provider-api)
528 (modify-phases %standard-phases
532 (install-pom-file "pom.xml")))))
534 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
536 `(("unzip" ,unzip)))))
538 (define-public maven-wagon-provider-test
540 (inherit maven-wagon-provider-api)
541 (name "maven-wagon-provider-test")
543 `(#:jar-name "maven-wagon-provider-test.jar"
544 #:source-dir "wagon-provider-test/src/main/java"
545 #:tests? #f; no tests
548 `(("java-plexus-utils" ,java-plexus-utils)
549 ("java-plexus-container-default" ,java-plexus-container-default)
550 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
551 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
552 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
553 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
554 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
555 ("java-slf4j-api" ,java-slf4j-api)
556 ("java-javaee-servletapi" ,java-javaee-servletapi)
557 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
558 (synopsis "Test classes from maven-wagon")
559 (description "Maven Wagon is a transport abstraction that is used in Maven's
560 artifact and repository handling code. This package contains common test
561 classes used in multiple maven-wagon components.")))
563 (define-public maven-wagon-file
565 (inherit maven-wagon-provider-api)
566 (name "maven-wagon-file")
568 `(#:jar-name "maven-wagon-file.jar"
569 #:source-dir "wagon-providers/wagon-file/src/main/java"
570 #:test-dir "wagon-providers/wagon-file/src/test"
573 (modify-phases %standard-phases
574 (add-before 'check 'fix-paths
576 ;; Tests assume they are run by maven, which copies test resources
577 ;; to target. Our ant-build-system does the same, but with the
579 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
580 (("target") "build"))
582 (add-after 'build 'generate-metadata
584 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
585 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
586 "--source" "wagon-providers/wagon-file/src/main/java"
587 "--output" "build/classes/META-INF/plexus/components.xml"
588 "--classes" "build/classes"
589 "--descriptors" "build/classes/META-INF")
591 (add-after 'generate-metadata 'rebuild
596 `(("java-plexus-utils" ,java-plexus-utils)
597 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
599 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
600 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
601 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
602 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
603 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
604 ("java-plexus-classworlds" ,java-plexus-classworlds)
605 ("java-guava" ,java-guava)
606 ("java-guice" ,java-guice)
607 ("java-javax-inject" ,java-javax-inject)
608 ("java-cglib" ,java-cglib)
609 ("java-slf4j-api" ,java-slf4j-api)
610 ("java-plexus-utils" ,java-plexus-utils)
611 ("java-plexus-cli" ,java-plexus-cli)
612 ("maven-plugin-api" ,maven-plugin-api)
613 ("maven-plugin-annotations" ,maven-plugin-annotations)
614 ("maven-core" ,maven-core)
615 ("maven-model" ,maven-model)
616 ("java-commons-cli" ,java-commons-cli)
617 ("java-qdox" ,java-qdox)
618 ("java-jdom2" ,java-jdom2)
619 ("java-asm" ,java-asm)
620 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
621 ,@(package-native-inputs maven-wagon-provider-api)))
622 (synopsis "Wagon provider that gets and puts artifacts using the file system")
623 (description "Maven Wagon is a transport abstraction that is used in Maven's
624 artifact and repository handling code. It uses providers, that are tools to
625 manage artifacts and deployment. This package contains the file provider which
626 gets and puts artifacts using the file system.")))
628 (define-public maven-wagon-tck-http
630 (inherit maven-wagon-provider-api)
631 (name "maven-wagon-tck-http")
633 `(#:jar-name "maven-wagon-tck-http.jar"
634 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
635 #:tests? #f; no tests
638 `(("java-plexus-util" ,java-plexus-utils)
639 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
640 ("java-javaee-servletapi" ,java-javaee-servletapi)
641 ("java-slf4j-api" ,java-slf4j-api)
642 ("java-commons-codec" ,java-commons-codec)
643 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
644 ("java-plexus-classworlds" ,java-plexus-classworlds)
645 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
646 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
647 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
648 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
649 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
650 (synopsis "Wagon HTTP Test Compatibility Kit")
651 (description "Maven Wagon is a transport abstraction that is used in Maven's
652 artifact and repository handling code. This package contains the HTTP
653 Test Compatibility Kit.")))
655 (define-public maven-wagon-http-shared
657 (inherit maven-wagon-provider-api)
658 (name "maven-wagon-http-shared")
660 `(#:jar-name "maven-wagon-http-shared.jar"
661 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
662 #:test-dir "wagon-providers/wagon-http-shared/src/test"
665 (modify-phases %standard-phases
666 (add-after 'build 'generate-metadata
668 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
669 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
670 "--source" "wagon-providers/wagon-http-shared/src/main/java"
671 "--output" "build/classes/META-INF/plexus/components.xml"
672 "--classes" "build/classes"
673 "--descriptors" "build/classes/META-INF")
675 (add-after 'generate-metadata 'rebuild
680 `(("java-plexus-utils" ,java-plexus-utils)
681 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
682 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
683 ("java-commons-io" ,java-commons-io)
684 ("java-jsoup" ,java-jsoup)
685 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
687 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
688 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
689 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
690 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
691 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
692 ("java-plexus-classworlds" ,java-plexus-classworlds)
693 ("java-guava" ,java-guava)
694 ("java-guice" ,java-guice)
695 ("java-javax-inject" ,java-javax-inject)
696 ("java-cglib" ,java-cglib)
697 ("java-slf4j-api" ,java-slf4j-api)
698 ("java-plexus-utils" ,java-plexus-utils)
699 ("java-plexus-cli" ,java-plexus-cli)
700 ("maven-plugin-api" ,maven-plugin-api)
701 ("maven-plugin-annotations" ,maven-plugin-annotations)
702 ("maven-core" ,maven-core)
703 ("maven-model" ,maven-model)
704 ("java-commons-cli" ,java-commons-cli)
705 ("java-qdox" ,java-qdox)
706 ("java-jdom2" ,java-jdom2)
707 ("java-asm" ,java-asm)
708 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
709 ,@(package-native-inputs maven-wagon-provider-api)))
710 (synopsis "Shared Library for wagon providers supporting HTTP.")
711 (description "Maven Wagon is a transport abstraction that is used in Maven's
712 artifact and repository handling code. It uses providers, that are tools to
713 manage artifacts and deployment. This package contains a shared library for
714 wagon providers supporting HTTP.")))
716 (define-public maven-wagon-http
718 (inherit maven-wagon-provider-api)
719 (name "maven-wagon-http")
721 `(#:jar-name "maven-wagon-http.jar"
722 #:source-dir "wagon-providers/wagon-http/src/main/java"
723 #:test-dir "wagon-providers/wagon-http/src/test"
726 ;; FIXME: javax.net.ssl.SSLHandshakeException:
727 ;; sun.security.validator.ValidatorException:
728 ;; PKIX path building failed:
729 ;; sun.security.provider.certpath.SunCertPathBuilderException:
730 ;; unable to find valid certification path to requested target
731 "**/HttpsWagonPreemptiveTest.java"
732 "**/HttpsWagonTest.java"
737 (modify-phases %standard-phases
738 (add-before 'build 'copy-resources
740 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
741 "build/classes/META-INF/plexus")
743 (add-before 'check 'fix-resource-path
745 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
746 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
747 (("src/test") "wagon-providers/wagon-http/src/test"))
750 `(("java-plexus-utils" ,java-plexus-utils)
751 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
752 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
753 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
754 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
755 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
757 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
758 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
759 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
760 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
761 ("java-plexus-container-default" ,java-plexus-container-default)
762 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
763 ("java-plexus-classworlds" ,java-plexus-classworlds)
764 ("java-guava" ,java-guava)
765 ("java-guice" ,java-guice)
766 ("java-inject" ,java-javax-inject)
767 ("java-cglib" ,java-cglib)
768 ("java-slf4j-api" ,java-slf4j-api)
769 ("java-plexus-utils" ,java-plexus-utils)
770 ("java-plexus-cli" ,java-plexus-cli)
771 ("maven-plugin-api" ,maven-plugin-api)
772 ("maven-plugin-annotations" ,maven-plugin-annotations)
773 ("maven-core" ,maven-core)
774 ("maven-model" ,maven-model)
775 ("java-commons-cli" ,java-commons-cli)
776 ("java-qdox" ,java-qdox)
777 ("java-jdom2" ,java-jdom2)
778 ("java-asm" ,java-asm)
779 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
780 ("java-javaee-servletapi" ,java-javaee-servletapi)
781 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
782 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
783 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
784 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
785 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
786 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
787 ("java-hamcrest-core" ,java-hamcrest-core)
788 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
789 ("java-commons-codec" ,java-commons-codec)
790 ("java-commons-io" ,java-commons-io)
791 ("java-jsoup" ,java-jsoup)
792 ("java-slf4j-simple" ,java-slf4j-simple)
793 ,@(package-native-inputs maven-wagon-provider-api)))
794 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
795 (description "Maven Wagon is a transport abstraction that is used in Maven's
796 artifact and repository handling code. It uses providers, that are tools to
797 manage artifacts and deployment. This package contains a Wagon provider that
798 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
806 (uri (string-append "mirror://apache/maven/"
807 "maven-3/" version "/source/"
808 "apache-maven-" version "-src.tar.gz"))
809 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
810 (modules '((guix build utils)))
813 (for-each delete-file (find-files "." "\\.jar$"))
816 (search-patches "maven-generate-component-xml.patch"
817 "maven-generate-javax-inject-named.patch"))))
818 (build-system ant-build-system)
822 (modify-phases %standard-phases
825 (add-before 'install 'fix-dependencies
827 (substitute* "pom.xml"
828 (("classWorldsVersion>.*")
830 "classWorldsVersion>"
831 ,(package-version java-plexus-classworlds)
832 "</classWorldsVersion>\n"))
833 (("commonsCliVersion>.*")
836 ,(package-version java-commons-cli)
837 "</commonsCliVersion>\n"))
838 (("commonsLangVersion>.*")
840 "commonsLangVersion>"
841 ,(package-version java-commons-lang3)
842 "</commonsLangVersion>\n"))
843 (("plexusUtilsVersion>.*")
845 "plexusUtilsVersion>"
846 ,(package-version java-plexus-utils)
847 "</plexusUtilsVersion>\n"))
848 (("plexusInterpolationVersion>.*")
850 "plexusInterpolationVersion>"
851 ,(package-version java-plexus-interpolation)
852 "</plexusInterpolationVersion>\n"))
856 ,(package-version java-guice)
857 "</guiceVersion>\n"))
858 (("sisuInjectVersion>.*")
861 ,(package-version java-eclipse-sisu-inject)
862 "</sisuInjectVersion>\n"))
863 (("securityDispatcherVersion>.*")
865 "securityDispatcherVersion>"
866 ,(package-version java-plexus-sec-dispatcher)
867 "</securityDispatcherVersion>\n"))
868 (("cipherVersion>.*")
871 ,(package-version java-plexus-cipher)
872 "</cipherVersion>\n"))
876 ,(package-version java-slf4j-api)
877 "</slf4jVersion>\n"))
878 (("<classifier>no_aop</classifier>") ""))
881 (install-pom-file "pom.xml")))))
883 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
884 (home-page "https://maven.apache.org/")
885 (synopsis "Build system")
886 (description "Apache Maven is a software project management and comprehension
887 tool. This package contains the Maven pom file, used by all maven components.")
888 (license license:asl2.0)))
890 (define-public maven-artifact
893 (name "maven-artifact")
895 `(#:jar-name "maven-artifact.jar"
896 #:source-dir "maven-artifact/src/main/java"
897 #:test-dir "maven-artifact/src/test"
898 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
900 (modify-phases %standard-phases
902 (install-from-pom "maven-artifact/pom.xml")))))
904 `(("java-plexus-utils" ,java-plexus-utils)
905 ("java-commons-lang3" ,java-commons-lang3)
906 ("maven-pom" ,maven-pom)))
908 `(("java-junit" ,java-junit)))
909 (description "Apache Maven is a software project management and comprehension
910 tool. This package contains the Maven Artifact classes, providing the
911 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
912 jar file is executable and provides a little tool to display how Maven parses
913 and compares versions:")))
915 (define-public maven-model
917 (inherit maven-artifact)
920 `(#:jar-name "maven-model.jar"
921 #:source-dir "maven-model/src/main/java"
922 #:test-dir "maven-model/src/test"
924 (modify-phases %standard-phases
925 (add-before 'build 'generate-models
926 (lambda* (#:key inputs #:allow-other-keys)
927 (define (modello-single-mode file version mode)
928 (invoke "java" "org.codehaus.modello.ModelloCli"
929 file mode "maven-model/src/main/java" version
931 (let ((file "maven-model/src/main/mdo/maven.mdo"))
932 (modello-single-mode file "4.0.0" "java")
933 (modello-single-mode file "4.0.0" "xpp3-reader")
934 (modello-single-mode file "4.0.0" "xpp3-writer")
935 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
937 (replace 'install (install-from-pom "maven-model/pom.xml")))))
939 `(("java-commons-lang3" ,java-commons-lang3)
940 ("java-plexus-utils" ,java-plexus-utils)
941 ("maven-pom" ,maven-pom)))
943 `(("java-modello-core" ,java-modello-core)
945 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
946 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
947 ("java-guice" ,java-guice)
948 ("java-cglib" ,java-cglib)
949 ("java-asm" ,java-asm)
950 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
951 ("java-javax-inject" ,java-javax-inject)
952 ("java-plexus-classworlds" ,java-plexus-classworlds)
953 ("java-guava" ,java-guava)
954 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
955 ("java-sisu-build-api" ,java-sisu-build-api)
957 ("java-modello-plugins-java" ,java-modello-plugins-java)
958 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
959 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
961 ("java-junit" ,java-junit)))
962 (description "Apache Maven is a software project management and comprehension
963 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
964 so really just plain Java objects.")))
966 (define-public maven-builder-support
968 (inherit maven-artifact)
969 (name "maven-builder-support")
971 `(#:jar-name "maven-builder-support.jar"
972 #:source-dir "maven-builder-support/src/main/java"
974 #:test-dir "maven-builder-support/src/test"
976 (modify-phases %standard-phases
977 (add-before 'check 'fix-paths
979 (with-directory-excursion "maven-builder-support/src/test/java"
981 '("org/apache/maven/building/FileSourceTest.java"
982 "org/apache/maven/building/UrlSourceTest.java")
983 (("target/test-classes") "maven-builder-support/src/test/resources")))
985 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
987 `(("maven-pom" ,maven-pom)))
989 `(("java-junit" ,java-junit)))
990 (description "Apache Maven is a software project management and comprehension
991 tool. This package contains a support library for descriptor builders (model,
992 setting, toolchains)")))
994 (define-public maven-settings
996 (inherit maven-artifact)
997 (name "maven-settings")
999 `(#:jar-name "maven-settings.jar"
1000 #:source-dir "maven-settings/src/main/java"
1001 #:tests? #f; no tests
1003 (modify-phases %standard-phases
1004 (add-before 'build 'generate-models
1005 (lambda* (#:key inputs #:allow-other-keys)
1006 (define (modello-single-mode file version mode)
1007 (invoke "java" "org.codehaus.modello.ModelloCli"
1008 file mode "maven-settings/src/main/java" version
1010 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1011 (modello-single-mode file "1.1.0" "java")
1012 (modello-single-mode file "1.1.0" "xpp3-reader")
1013 (modello-single-mode file "1.1.0" "xpp3-writer"))
1015 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1017 `(("java-plexus-utils" ,java-plexus-utils)
1018 ("maven-pom" ,maven-pom)))
1020 `(("java-modello-core" ,java-modello-core)
1022 ;("container" ,java-plexus-container-default)
1023 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1024 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1025 ("java-guice" ,java-guice)
1026 ("java-cglib" ,java-cglib)
1027 ("java-asm" ,java-asm)
1028 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1029 ("java-javax-inject" ,java-javax-inject)
1030 ("java-plexus-classworlds" ,java-plexus-classworlds)
1031 ("java-plexus-utils" ,java-plexus-utils)
1032 ("java-guava" ,java-guava)
1033 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1034 ("java-sisu-build-api" ,java-sisu-build-api)
1036 ("java-modello-plugins-java" ,java-modello-plugins-java)
1037 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1038 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1039 (description "Apache Maven is a software project management and comprehension
1040 tool. This package contains strictly the model for Maven settings, that is
1041 simply plain java objects.")))
1043 (define-public maven-settings-builder
1045 (inherit maven-artifact)
1046 (name "maven-settings-builder")
1048 `(#:jar-name "maven-settings-builder.jar"
1049 #:source-dir "maven-settings-builder/src/main/java"
1051 #:test-dir "maven-settings-builder/src/test"
1053 (modify-phases %standard-phases
1054 (add-before 'build 'generate-components.xml
1056 (mkdir-p "build/classes/META-INF/plexus")
1057 (chmod "components.sh" #o755)
1058 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1059 "build/classes/META-INF/plexus/components.xml")
1061 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1063 `(("java-plexus-utils" ,java-plexus-utils)
1064 ("java-plexus-interpolation" ,java-plexus-interpolation)
1065 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1066 ("maven-builder-support" ,maven-builder-support)
1067 ("maven-settings" ,maven-settings)
1068 ("maven-pom" ,maven-pom)))
1070 `(("java-junit" ,java-junit)
1071 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
1072 (description "Apache Maven is a software project management and comprehension
1073 tool. This package contains the effective model builder, with profile activation,
1074 inheritance, interpolation, @dots{}")))
1076 (define-public maven-model-builder
1078 (inherit maven-artifact)
1079 (name "maven-model-builder")
1081 `(#:jar-name "maven-model-builder.jar"
1082 #:source-dir "maven-model-builder/src/main/java"
1084 #:test-dir "maven-model-builder/src/test"
1086 (modify-phases %standard-phases
1087 (add-before 'build 'copy-resources
1089 (copy-recursively "maven-model-builder/src/main/resources"
1092 (add-before 'build 'generate-components.xml
1094 (mkdir-p "build/classes/META-INF/plexus")
1095 (chmod "components.sh" #o755)
1096 (invoke "./components.sh" "maven-model-builder/src/main/java"
1097 "build/classes/META-INF/plexus/components.xml")
1099 (add-before 'check 'fix-paths
1101 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1102 (("src/test") "maven-model-builder/src/test"))
1105 (install-from-pom "maven-model-builder/pom.xml")))))
1107 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1108 ("java-plexus-utils" ,java-plexus-utils)
1109 ("maven-artifact" ,maven-artifact)
1110 ("maven-builder-support" ,maven-builder-support)
1111 ("maven-model" ,maven-model)
1112 ("maven-pom" ,maven-pom)))
1114 `(("java-junit" ,java-junit)
1115 ("java-guava" ,java-guava)
1116 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1117 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1118 ("guice" ,java-guice)
1119 ("java-cglib" ,java-cglib)
1120 ("java-asm" ,java-asm)
1121 ("sisu-inject" ,java-eclipse-sisu-inject)
1122 ("javax-inject" ,java-javax-inject)
1123 ("java-xmlunit" ,java-xmlunit)
1124 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1125 ("xbean" ,java-geronimo-xbean-reflect)
1126 ("classworlds" ,java-plexus-classworlds)))
1127 (description "Apache Maven is a software project management and comprehension
1128 tool. This package contains the effective model builder, with profile activation,
1129 inheritance, interpolation, @dots{}")))
1131 (define-public maven-repository-metadata
1133 (inherit maven-artifact)
1134 (name "maven-repository-metadata")
1136 `(#:jar-name "maven-repository-metadata.jar"
1137 #:source-dir "maven-repository-metadata/src/main/java"
1139 #:tests? #f; no tests
1141 (modify-phases %standard-phases
1142 (add-before 'build 'generate-models
1143 (lambda* (#:key inputs #:allow-other-keys)
1144 (define (modello-single-mode file version mode)
1145 (invoke "java" "org.codehaus.modello.ModelloCli"
1146 file mode "maven-repository-metadata/src/main/java" version
1148 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1149 (modello-single-mode file "1.1.0" "java")
1150 (modello-single-mode file "1.1.0" "xpp3-reader")
1151 (modello-single-mode file "1.1.0" "xpp3-writer"))
1154 (install-from-pom "maven-repository-metadata/pom.xml")))))
1156 `(("java-plexus-utils" ,java-plexus-utils)
1157 ("maven-pom" ,maven-pom)))
1159 `(("modello" ,java-modello-core)
1161 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1162 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1163 ("java-guice" ,java-guice)
1164 ("java-cglib" ,java-cglib)
1165 ("java-asm" ,java-asm)
1166 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1167 ("java-javax-inject" ,java-javax-inject)
1168 ("java-plexus-utils" ,java-plexus-utils)
1169 ("java-plexus-classworlds" ,java-plexus-classworlds)
1170 ("java-guava" ,java-guava)
1171 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1172 ("java-sisu-build-api" ,java-sisu-build-api)
1174 ("java-modello-plugins-java" ,java-modello-plugins-java)
1175 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1176 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1177 (description "Apache Maven is a software project management and comprehension
1178 tool. This package contains strictly the model for Maven Repository Metadata,
1179 so really just plain objects.")))
1181 (define-public maven-resolver-provider
1183 (inherit maven-artifact)
1184 (name "maven-resolver-provider")
1186 `(#:jar-name "maven-resolver-provider.jar"
1187 #:source-dir "maven-resolver-provider/src/main/java"
1188 #:test-dir "maven-resolver-provider/src/test"
1190 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1192 (modify-phases %standard-phases
1193 (add-before 'build 'generate-sisu-named
1195 (mkdir-p "build/classes/META-INF/sisu")
1196 (chmod "./sisu.sh" #o755)
1197 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1198 "build/classes/META-INF/sisu/javax.inject.Named")
1201 (install-from-pom "maven-resolver-provider/pom.xml")))))
1203 `(("maven-model" ,maven-model)
1204 ("maven-model-builder" ,maven-model-builder)
1205 ("maven-resolver-spi" ,maven-resolver-spi)
1206 ("maven-resolver-api" ,maven-resolver-api)
1207 ("maven-resolver-impl" ,maven-resolver-impl)
1208 ("maven-resolver-util" ,maven-resolver-util)
1209 ("maven-builder-support" ,maven-builder-support)
1210 ("maven-repository-metadata" ,maven-repository-metadata)
1211 ("java-plexus-utils" ,java-plexus-utils)
1212 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1213 ("java-guice" ,java-guice)
1214 ("java-javax-inject" ,java-javax-inject)))))
1216 (define-public maven-plugin-api
1218 (inherit maven-artifact)
1219 (name "maven-plugin-api")
1221 `(#:jar-name "maven-plugin-api.jar"
1222 #:source-dir "maven-plugin-api/src/main/java"
1224 #:test-dir "maven-plugin-api/src/test"
1226 (modify-phases %standard-phases
1227 (add-before 'build 'generate-models
1228 (lambda* (#:key inputs #:allow-other-keys)
1229 (define (modello-single-mode file version mode)
1230 (invoke "java" "org.codehaus.modello.ModelloCli"
1231 file mode "maven-plugin-api/src/main/java" version
1233 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1234 (modello-single-mode file "1.0.0" "java")
1235 (modello-single-mode file "1.0.0" "xpp3-reader")
1236 (modello-single-mode file "1.0.0" "xpp3-writer"))
1239 (install-from-pom "maven-plugin-api/pom.xml")))))
1241 `(("maven-artifact" ,maven-artifact)
1242 ("maven-model" ,maven-model)
1243 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1244 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1245 ("guice" ,java-guice)
1246 ("java-cglib" ,java-cglib)
1247 ("java-asm" ,java-asm)
1248 ("sisu-inject" ,java-eclipse-sisu-inject)
1249 ("javax-inject" ,java-javax-inject)
1250 ("utils" ,java-plexus-utils)))
1252 `(("modello" ,java-modello-core)
1254 ("classworlds" ,java-plexus-classworlds)
1255 ("guava" ,java-guava)
1256 ("xbean" ,java-geronimo-xbean-reflect)
1257 ("build-api" ,java-sisu-build-api)
1259 ("java" ,java-modello-plugins-java)
1260 ("xml" ,java-modello-plugins-xml)
1261 ("xpp3" ,java-modello-plugins-xpp3)
1263 ("java-junit" ,java-junit)))
1264 (description "Apache Maven is a software project management and comprehension
1265 tool. This package contains strictly the API for plugins -- composed of goals
1266 implemented by Mojos -- development.
1268 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1269 generally generated from plugin sources using maven-plugin-plugin.")))
1271 (define maven-core-bootstrap
1273 (inherit maven-artifact)
1276 `(#:jar-name "maven-core.jar"
1277 #:source-dir "src/main/java"
1279 ;; Tests need maven-compat, which requires maven-core
1282 (modify-phases %standard-phases
1283 (add-before 'configure 'chdir
1285 ;; Required for generating components.xml in maven-core
1286 (chdir "maven-core")
1288 (add-before 'build 'copy-resources
1290 (mkdir-p "build/classes/")
1291 (copy-recursively "src/main/resources" "build/classes")
1293 (add-after 'copy-resources 'fill-properties
1295 ;; This file controls the output of some mvn subcommands, such as
1297 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1298 (("\\$\\{buildNumber\\}") "guix_build")
1299 (("\\$\\{timestamp\\}") "0")
1300 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1301 (("\\$\\{distributionId\\}") "apache-maven")
1302 (("\\$\\{distributionShortName\\}") "Maven")
1303 (("\\$\\{distributionName\\}") "Apache Maven"))
1305 (add-before 'build 'generate-sisu-named
1307 (mkdir-p "build/classes/META-INF/sisu")
1308 (chmod "../sisu.sh" #o755)
1309 (invoke "../sisu.sh" "src/main/java"
1310 "build/classes/META-INF/sisu/javax.inject.Named")
1312 (add-before 'build 'generate-models
1313 (lambda* (#:key inputs #:allow-other-keys)
1314 (define (modello-single-mode file version mode)
1315 (invoke "java" "org.codehaus.modello.ModelloCli"
1316 file mode "src/main/java" version
1318 (let ((file "src/main/mdo/toolchains.mdo"))
1319 (modello-single-mode file "1.1.0" "java")
1320 (modello-single-mode file "1.1.0" "xpp3-reader")
1321 (modello-single-mode file "1.1.0" "xpp3-writer"))
1323 (add-before 'install 'fix-pom
1325 (substitute* "pom.xml"
1326 (("<classifier>no_aop</classifier>") ""))
1329 (install-from-pom "pom.xml")))))
1331 `(("maven-artifact" ,maven-artifact)
1332 ("maven-resolver-provider" ,maven-resolver-provider)
1333 ("maven-builder-support" ,maven-builder-support)
1334 ("maven-model" ,maven-model)
1335 ("maven-model-builder" ,maven-model-builder)
1336 ("maven-settings" ,maven-settings)
1337 ("maven-settings-builder" ,maven-settings-builder)
1338 ("maven-plugin-api" ,maven-plugin-api)
1339 ("maven-repository-metadata" ,maven-repository-metadata)
1340 ("maven-shared-utils" ,maven-shared-utils)
1341 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1342 ("java-plexus-utils" ,java-plexus-utils)
1343 ("java-commons-lang3" ,java-commons-lang3)
1344 ("java-guava" ,java-guava)
1345 ("java-guice" ,java-guice)
1346 ("maven-resolver-api" ,maven-resolver-api)
1347 ("maven-resolver-spi" ,maven-resolver-spi)
1348 ("maven-resolver-util" ,maven-resolver-util)
1349 ("maven-resolver-impl" ,maven-resolver-impl)
1350 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1351 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1352 ("java-javax-inject" ,java-javax-inject)
1353 ("java-plexus-classworld" ,java-plexus-classworlds)))
1355 `(("java-modello-core" ,java-modello-core)
1356 ("java-cglib" ,java-cglib)
1357 ("java-asm" ,java-asm)
1358 ("java-plexus-classworlds" ,java-plexus-classworlds)
1359 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1360 ("java-sisu-build-api" ,java-sisu-build-api)
1361 ("java-modello-plugins-java" ,java-modello-plugins-java)
1362 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1363 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1365 ("java-junit" ,java-junit)
1366 ("java-mockito-1" ,java-mockito-1)
1367 ("java-commons-jxpath" ,java-commons-jxpath)))
1368 (description "Apache Maven is a software project management and comprehension
1369 tool. This package contains the maven core classes managing the whole build
1372 (define-public maven-core
1374 (inherit maven-core-bootstrap)
1376 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1378 `(modify-phases ,phases
1379 (add-before 'build 'modify-metainf
1381 (substitute* "build.xml"
1382 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
1384 (add-before 'build 'add-maven-files
1386 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1387 (copy-file "pom.xml"
1388 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1389 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1391 (format #t "version=~a~%
1392 groupId=org.apache.maven~%
1393 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1395 (add-after 'build 'generate-metadata
1397 (define (components file)
1398 (let ((sxml (with-input-from-file file
1399 (lambda _ (xml->sxml (current-input-port)
1400 #:trim-whitespace? #t)))))
1401 ;; Select the list of <component>s inside the <component-set>
1402 ;; and <components>.
1403 ((@ (ice-9 match) match) sxml
1407 ('components x ...))) x))))
1408 (use-modules (sxml simple))
1409 (delete-file "build/classes/META-INF/plexus/components.xml")
1410 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1411 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1412 "--source" "build/classes/META-INF/plexus"
1413 "--output" "build/classes/META-INF/plexus/components.t.xml"
1414 "--classes" "build/classes"
1415 "--descriptors" "build/classes")
1416 ;; Now we merge all other components from hand-written xml
1417 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1418 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1419 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1420 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1421 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1423 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1427 ,@(append generated-xml components-xml
1428 default-bindings-xml
1429 artifact-handlers-xml)))))))
1431 (add-after 'generate-metadata 'rebuild
1433 (invoke "ant" "jar")
1436 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1437 ("java-commons-cli" ,java-commons-cli)
1438 ("java-plexus-cli" ,java-plexus-cli)
1439 ("java-jdom2" ,java-jdom2)
1440 ("java-qdox" ,java-qdox)
1441 ("maven-core-boot" ,maven-core-bootstrap)
1442 ,@(package-native-inputs maven-core-bootstrap)))))
1444 (define-public maven-embedder
1446 (inherit maven-artifact)
1447 (name "maven-embedder")
1449 `(#:jar-name "maven-embedder.jar"
1450 #:source-dir "maven-embedder/src/main/java"
1451 #:test-dir "maven-embedder/src/test"
1452 #:test-exclude (list "**/MavenCliTest.java")
1455 (modify-phases %standard-phases
1456 (add-before 'build 'generate-sisu-named
1458 (mkdir-p "build/classes/META-INF/sisu")
1459 (chmod "sisu.sh" #o755)
1460 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1461 "build/classes/META-INF/sisu/javax.inject.Named")
1463 (add-before 'build 'generate-models
1464 (lambda* (#:key inputs #:allow-other-keys)
1465 (define (modello-single-mode file version mode)
1466 (invoke "java" "org.codehaus.modello.ModelloCli"
1467 file mode "maven-embedder/src/main/java" version
1469 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1470 (modello-single-mode file "1.0.0" "java")
1471 (modello-single-mode file "1.0.0" "xpp3-reader")
1472 (modello-single-mode file "1.0.0" "xpp3-writer"))
1474 (add-before 'check 'fix-test-paths
1476 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1477 (("target/test-classes") "build/test-classes"))
1479 (add-before 'check 'fix-test-compilation
1481 ;; Tests are in the java/ subdir. Other subdirectories contain
1482 ;; additional test plugins, with duplicate classes, so we can't
1483 ;; compile them. Also, they are meant to be built with maven, to
1484 ;; test its build process.
1485 (substitute* "build.xml"
1486 (("srcdir=\"maven-embedder/src/test\"")
1487 "srcdir=\"maven-embedder/src/test/java\""))
1490 (install-from-pom "maven-embedder/pom.xml")))))
1492 `(("maven-core" ,maven-core)
1493 ("maven-artifact" ,maven-artifact)
1494 ("maven-plugin-api" ,maven-plugin-api)
1495 ("maven-builder-support" ,maven-builder-support)
1496 ("maven-model" ,maven-model)
1497 ("maven-model-builder" ,maven-model-builder)
1498 ("maven-settings" ,maven-settings)
1499 ("maven-settings-builder" ,maven-settings-builder)
1500 ("maven-shared-utils" ,maven-shared-utils)
1501 ("java-plexus-classworlds" ,java-plexus-classworlds)
1502 ("java-plexus-util" ,java-plexus-utils)
1503 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1504 ("java-plexus-cipher" ,java-plexus-cipher)
1505 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1506 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1507 ("maven-resolevr-util" ,maven-resolver-util)
1508 ("maven-resolevr-api" ,maven-resolver-api)
1509 ("java-logback-core" ,java-logback-core)
1510 ("java-logback-classic" ,java-logback-classic)
1511 ("java-commons-cli" ,java-commons-cli)
1512 ("java-commons-io" ,java-commons-io)
1513 ("java-commons-lang3" ,java-commons-lang3)
1514 ("java-guava" ,java-guava)
1515 ("java-guice" ,java-guice)
1516 ("java-javax-inject" ,java-javax-inject)
1517 ("java-slf4j-api" ,java-slf4j-api)
1518 ("java-slf4j-simple" ,java-slf4j-simple)
1519 ("java-jsr250" ,java-jsr250)))
1521 `(("java-modello-core" ,java-modello-core)
1522 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1523 ("java-sisu-build-api" ,java-sisu-build-api)
1524 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1525 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1526 ("java-cglib" ,java-cglib)
1527 ("java-asm" ,java-asm)
1528 ("java-modello-plugins-java" ,java-modello-plugins-java)
1529 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1530 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1532 ("java-junit" ,java-junit)
1533 ("java-objenesis" ,java-objenesis)
1534 ("java-mockito-1" ,java-mockito-1)
1535 ("java-hamcrest-core" ,java-hamcrest-core)))
1536 (description "Apache Maven is a software project management and comprehension
1537 tool. This package contains a Maven embeddable component, with CLI and
1538 logging support.")))
1540 (define-public maven-compat
1542 (inherit maven-artifact)
1543 (name "maven-compat")
1545 `(#:jar-name "maven-compat.jar"
1546 #:source-dir "src/main/java"
1548 #:test-dir "src/test"
1550 (modify-phases %standard-phases
1551 ;; Tests assume we're in this directory
1552 (add-before 'configure 'chdir
1554 (chdir "maven-compat")
1556 (add-before 'build 'recreate-removed-jar
1558 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1560 (with-directory-excursion "src/test/resources"
1561 (with-output-to-file "artifact-install/artifact-1.0.jar"
1563 (format #t "dummy~%")))
1566 (with-output-to-file file
1568 (format #t "foo~%"))))
1569 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1570 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1571 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1572 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1573 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1574 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1575 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1576 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1577 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1578 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1579 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1580 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1581 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1582 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1583 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1584 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1585 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1586 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1587 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1588 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1589 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1590 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1591 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1592 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1593 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1594 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1595 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1596 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1597 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1598 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1599 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1600 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1601 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1602 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1603 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1604 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1605 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1606 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1607 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1608 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1609 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1610 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1611 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1612 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1613 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1614 (with-directory-excursion "local-repo/snapshot-test/jars"
1617 (with-output-to-file file
1620 (format #t "local"))))
1621 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1622 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1623 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1626 (with-directory-excursion
1627 (string-append "src/test/remote-repo/org/apache/maven/its/"
1629 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1632 (copy-file (string-append letter "-0.1.pom")
1633 (string-append dir "/pom.xml"))
1634 (with-output-to-file (string-append dir "/pom.properties")
1636 (format #t "version=0.1~%")
1637 (format #t "groupId=org.apache.maven.its")
1638 (format #t (string-append "artifactId=" letter))))
1639 (with-output-to-file "META-INF/MANIFEST.MF"
1641 (format #t "Manifest-Version: 1.0~%"))))
1642 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1643 (string-append letter "-0.1.jar") "META-INF")))
1646 (add-before 'build 'generate-models
1647 (lambda* (#:key inputs #:allow-other-keys)
1648 (define (modello-single-mode file version mode)
1649 (invoke "java" "org.codehaus.modello.ModelloCli"
1650 file mode "src/main/java" version
1652 (let ((file "src/main/mdo/profiles.mdo"))
1653 (modello-single-mode file "1.0.0" "java")
1654 (modello-single-mode file "1.0.0" "xpp3-reader")
1655 (modello-single-mode file "1.0.0" "xpp3-writer"))
1656 (let ((file "src/main/mdo/paramdoc.mdo"))
1657 (modello-single-mode file "1.0.0" "java")
1658 (modello-single-mode file "1.0.0" "xpp3-reader")
1659 (modello-single-mode file "1.0.0" "xpp3-writer"))
1661 (add-after 'build 'generate-metadata
1663 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1664 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1665 "--source" "src/main/java"
1666 "--output" "build/classes/META-INF/plexus/components.xml"
1667 "--classes" "build/classes"
1668 "--descriptors" "build/classes/META-INF")
1670 (add-before 'check 'build-tests
1672 (invoke "ant" "compile-tests")
1674 (add-after 'build-tests 'generate-test-metadata
1676 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1678 ":build/test-classes")
1679 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1680 "--source" "src/test/java"
1681 "--output" "build/test-classes/META-INF/plexus/components.xml"
1682 "--classes" "build/test-classes"
1683 "--descriptors" "build/test-classes/META-INF")
1685 (add-after 'generate-metadata 'rebuild
1687 (invoke "ant" "jar")
1690 (install-from-pom "pom.xml")))))
1692 `(("maven-artifact" ,maven-artifact)
1693 ("maven-repository-metadata" ,maven-repository-metadata)
1694 ("maven-builder-support" ,maven-builder-support)
1695 ("maven-model" ,maven-model)
1696 ("maven-model-builder" ,maven-model-builder)
1697 ("maven-settings" ,maven-settings)
1698 ("maven-settings-builder" ,maven-settings-builder)
1699 ("maven-core" ,maven-core)
1700 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1701 ("maven-wagon-file" ,maven-wagon-file)
1702 ("maven-resolver-api" ,maven-resolver-api)
1703 ("maven-resolver-util" ,maven-resolver-util)
1704 ("maven-resolver-spi" ,maven-resolver-spi)
1705 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1707 `(("java-modello-core" ,java-modello-core)
1708 ("java-plexus-utils" ,java-plexus-utils)
1709 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1710 ("java-plexus-classworlds" ,java-plexus-classworlds)
1711 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1712 ("java-sisu-build-api" ,java-sisu-build-api)
1713 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1714 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1715 ("java-javax-inject" ,java-javax-inject)
1716 ("java-guice" ,java-guice)
1717 ("java-guava" ,java-guava)
1718 ("java-cglib" ,java-cglib)
1719 ("java-asm" ,java-asm)
1720 ("java-modello-plugins-java" ,java-modello-plugins-java)
1721 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1722 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1724 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
1725 ("java-commons-cli" ,java-commons-cli)
1726 ("java-plexus-cli" ,java-plexus-cli)
1727 ("java-jdom2" ,java-jdom2)
1728 ("maven-plugin-api" ,maven-plugin-api)
1729 ("java-qdox" ,java-qdox)
1731 ("java-plexus-cipher" ,java-plexus-cipher)
1732 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1733 ("java-jsr250" ,java-jsr250)
1734 ("java-cdi-api" ,java-cdi-api)
1735 ("java-junit" ,java-junit)
1736 ("maven-resolver-impl" ,maven-resolver-impl)
1737 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1738 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1739 ("java-commons-lang3" ,java-commons-lang3)
1740 ("java-aop" ,java-aopalliance)
1741 ("maven-resolver-provider" ,maven-resolver-provider)
1742 ("java-slf4j-api" ,java-slf4j-api)
1743 ("java-slf4j-simple" ,java-slf4j-simple)
1744 ,@(package-inputs java-slf4j-api)))
1745 (description "Apache Maven is a software project management and comprehension
1746 tool. This package contains Maven2 classes maintained as compatibility
1747 layer for plugins that need to keep Maven2 compatibility.")))
1749 (define-public maven
1751 (inherit maven-artifact)
1755 (modify-phases %standard-phases
1757 (lambda* (#:key inputs #:allow-other-keys)
1758 ;; Recreate the configuration for the loader
1759 (with-output-to-file "apache-maven/src/bin/m2.conf"
1761 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1763 (format #t "set maven.conf default ${maven.home}/conf~%")
1765 (format #t "[plexus.core]~%")
1766 (format #t "load ${maven.conf}/logging~%")
1767 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1768 ;; Reference every jar so plexus-classworlds can find them.
1770 (lambda (dependency)
1773 (format #t "load ~a~%" file))
1774 (find-files (assoc-ref inputs dependency) ".*.jar$")))
1775 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1776 "maven-builder-support" "maven-model" "maven-model-builder"
1777 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1778 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1779 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1780 "maven-resolver-connector-basic" "maven-resolver-provider"
1781 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1782 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1783 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1784 "maven-wagon-http-shared" "maven-wagon-tck-http"
1785 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1786 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1787 "java-javax-inject" "java-plexus-component-annotations"
1788 "java-plexus-utils" "java-plexus-interpolation"
1789 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1790 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1791 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1792 "java-slf4j-simple"))))
1793 (substitute* "apache-maven/src/bin/mvn"
1798 (assoc-ref inputs "java-plexus-classworlds")
1801 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
1805 (lambda* (#:key outputs #:allow-other-keys)
1806 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
1807 (conf (string-append (assoc-ref outputs "out") "/conf/")))
1808 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
1809 (for-each (lambda (file)
1810 (install-file (string-append "apache-maven/src/bin/" file)
1812 (chmod (string-append bin file) #o755))
1813 '("mvn" "mvnDebug" "mvnyjp"))
1814 (install-file "apache-maven/src/bin/m2.conf" bin)
1815 (copy-recursively "apache-maven/src/conf" conf))
1818 `(("java-plexus-classworlds" ,java-plexus-classworlds)
1819 ("maven-artifact" ,maven-artifact)
1820 ("maven-embedder" ,maven-embedder)
1821 ("maven-core" ,maven-core)
1822 ("maven-compat" ,maven-compat)
1823 ("maven-builder-support" ,maven-builder-support)
1824 ("maven-model" ,maven-model)
1825 ("maven-model-builder" ,maven-model-builder)
1826 ("maven-settings" ,maven-settings)
1827 ("maven-settings-builder" ,maven-settings-builder)
1828 ("maven-plugin-api" ,maven-plugin-api)
1829 ("maven-repository-metadata" ,maven-repository-metadata)
1830 ("maven-shared-utils" ,maven-shared-utils)
1831 ("maven-resolver-api" ,maven-resolver-api)
1832 ("maven-resolver-spi" ,maven-resolver-spi)
1833 ("maven-resolver-util" ,maven-resolver-util)
1834 ("maven-resolver-impl" ,maven-resolver-impl)
1835 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1836 ("maven-resolver-provider" ,maven-resolver-provider)
1837 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1838 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1839 ("maven-wagon-file" ,maven-wagon-file)
1840 ("maven-wagon-http" ,maven-wagon-http)
1841 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1842 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
1843 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
1844 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
1845 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
1846 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1847 ("java-guice" ,java-guice)
1848 ("java-aopalliance" ,java-aopalliance)
1849 ("java-cglib" ,java-cglib)
1850 ("java-asm" ,java-asm)
1851 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1852 ("java-javax-inject" ,java-javax-inject)
1853 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1854 ("java-plexus-utils" ,java-plexus-utils)
1855 ("java-plexus-interpolation" ,java-plexus-interpolation)
1856 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1857 ("java-plexus-cipher" ,java-plexus-cipher)
1858 ("java-guava" ,java-guava)
1859 ("java-jansi" ,java-jansi)
1860 ("java-jsr250" ,java-jsr250)
1861 ("java-cdi-api" ,java-cdi-api)
1862 ("java-commons-cli" ,java-commons-cli)
1863 ("java-commons-io" ,java-commons-io)
1864 ("java-commons-lang3" ,java-commons-lang3)
1865 ("java-slf4j-api" ,java-slf4j-api)
1866 ;; TODO: replace with maven-slf4j-provider
1867 ("java-slf4j-simple" ,java-slf4j-simple)))
1869 `(("coreutils" ,coreutils)
1871 (description "Apache Maven is a software project management and comprehension
1872 tool. Based on the concept of a project object model: builds, dependency
1873 management, documentation creation, site publication, and distribution
1874 publication are all controlled from the @file{pom.xml} declarative file. Maven
1875 can be extended by plugins to utilise a number of other development tools for
1876 reporting or the build process.")))