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)
36 #:use-module (ice-9 match))
38 (define-public java-plexus-component-metadata
40 (inherit java-plexus-container-default)
41 (name "java-plexus-component-metadata")
43 `(#:jar-name "plexus-component-metadata.jar"
44 #:source-dir "src/main/java"
48 (modify-phases %standard-phases
49 (add-before 'configure 'chdir
51 (chdir "plexus-component-metadata")
53 (add-before 'build 'copy-resources
55 (copy-recursively "src/main/resources"
59 `(("java-plexus-container-default" ,java-plexus-container-default)
60 ("java-plexu-component-annotations" ,java-plexus-component-annotations)
61 ("java-plexus-utils" ,java-plexus-utils)
62 ("java-plexus-cli" ,java-plexus-cli)
63 ("java-plexus-classworlds" ,java-plexus-classworlds)
64 ("maven-plugin-api" ,maven-plugin-api)
65 ("maven-plugin-annotations" ,maven-plugin-annotations)
66 ("maven-core-bootstrap" ,maven-core-bootstrap)
67 ("maven-model" ,maven-model)
68 ("java-commons-cli" ,java-commons-cli)
69 ("java-qdox" ,java-qdox)
70 ("java-jdom2" ,java-jdom2)
71 ("java-asm" ,java-asm)))
73 `(("java-junit" ,java-junit)
74 ("java-guava" ,java-guava)
75 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
76 (synopsis "Inversion-of-control container for Maven")
77 (description "The Plexus project provides a full software stack for creating
78 and executing software projects. Based on the Plexus container, the
79 applications can utilise component-oriented programming to build modular,
80 reusable components that can easily be assembled and reused. This package
81 provides the Maven plugin generating the component metadata.")))
83 (define-public maven-resolver-api
85 (name "maven-resolver-api")
90 (url "https://github.com/apache/maven-resolver")
91 (commit (string-append "maven-resolver-" version))))
92 (file-name (git-file-name name version))
95 "1x1gll8nkfl6zgnab78fxxvvhg42b2grxgdh1wp2h4qxsjkxg93d"))))
96 (build-system ant-build-system)
98 `(#:jar-name "maven-resolver-api.jar"
99 #:source-dir "maven-resolver-api/src/main/java"
100 #:test-dir "maven-resolver-api/src/test"
102 (modify-phases %standard-phases
104 (install-from-pom "maven-resolver-api/pom.xml")))))
106 `(("java-asm" ,java-asm)
107 ("java-cglib" ,java-cglib)
108 ("java-hamcrest-core" ,java-hamcrest-core)
109 ("java-junit" ,java-junit)
110 ("java-mockito-1" ,java-mockito-1)
111 ("java-objenesis" ,java-objenesis)))
113 `(("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
114 (home-page "https://github.com/apache/maven-resolver")
115 (synopsis "Maven repository system API")
116 (description "This package contains the API for the maven repository system.")
117 (license license:asl2.0)))
119 (define maven-resolver-parent-pom
121 (inherit maven-resolver-api)
122 (name "maven-resolver-parent-pom")
126 (modify-phases %standard-phases
129 (add-before 'install 'fix-pom
131 (substitute* "pom.xml"
132 (("<classifier>no_aop</classifier>") ""))
135 (install-pom-file "pom.xml")))))
136 (propagated-inputs '())))
138 (define-public maven-resolver-spi
140 (inherit maven-resolver-api)
141 (name "maven-resolver-spi")
143 `(#:jar-name "maven-resolver-spi.jar"
144 #:source-dir "maven-resolver-spi/src/main/java"
145 #:test-dir "maven-resolver-spi/src/test"
147 (modify-phases %standard-phases
149 (install-from-pom "maven-resolver-spi/pom.xml")))))
151 `(("maven-resolver-api" ,maven-resolver-api)))
152 (synopsis "Maven repository system SPI")
153 (description "This package contains the service provider interface (SPI)
154 for repository system implementations and repository connectors.")))
156 (define-public maven-resolver-test-util
158 (inherit maven-resolver-api)
159 (name "maven-resolver-test-util")
161 `(#:jar-name "maven-resolver-test-util.jar"
162 #:source-dir "maven-resolver-test-util/src/main/java"
163 #:test-dir "maven-resolver-test-util/src/test"
166 `(("maven-resolver-api" ,maven-resolver-api)
167 ("maven-resolver-spi" ,maven-resolver-spi)))
168 (synopsis "Utility classes for testing the maven repository system")
169 (description "This package contains a collection of utility classes to
170 ease testing of the repository system.")))
172 (define-public maven-resolver-util
174 (inherit maven-resolver-api)
175 (name "maven-resolver-util")
177 `(#:jar-name "maven-resolver-util.jar"
178 #:source-dir "maven-resolver-util/src/main/java"
179 #:test-dir "maven-resolver-util/src/test"
181 (modify-phases %standard-phases
183 (install-from-pom "maven-resolver-util/pom.xml")))))
185 `(("maven-resolver-api" ,maven-resolver-api)))
187 `(("java-junit" ,java-junit)
188 ("java-hamcrest-core" ,java-hamcrest-core)
189 ("maven-resolver-test-util" ,maven-resolver-test-util)))
190 (synopsis "Utility classes for the maven repository system")
191 (description "This package contains a collection of utility classes to
192 ease usage of the repository system.")))
194 (define-public maven-resolver-connector-basic
196 (inherit maven-resolver-api)
197 (name "maven-resolver-connector-basic")
199 `(#:jar-name "maven-resolver-connector-basic.jar"
200 #:source-dir "maven-resolver-connector-basic/src/main/java"
201 #:test-dir "maven-resolver-connector-basic/src/test"
204 (modify-phases %standard-phases
205 (add-before 'build 'generate-sisu
207 (mkdir-p "build/classes/META-INF/sisu")
208 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
210 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
213 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
215 `(("maven-resolver-api" ,maven-resolver-api)
216 ("maven-resolver-spi" ,maven-resolver-spi)
217 ("maven-resolver-util" ,maven-resolver-util)
218 ("java-slf4j-api" ,java-slf4j-api)))
220 `(("java-javax-inject" ,java-javax-inject)
221 ("java-junit" ,java-junit)
222 ("maven-resolver-test-util" ,maven-resolver-test-util)))
223 (synopsis "Maven repository connector implementation")
224 (description "This package contains a repository connector implementation
225 for repositories using URI-based layouts.")))
227 (define-public maven-resolver-impl
229 (inherit maven-resolver-api)
230 (name "maven-resolver-impl")
232 `(#:jar-name "maven-resolver-impl.jar"
233 #:source-dir "maven-resolver-impl/src/main/java"
234 #:test-dir "maven-resolver-impl/src/test"
236 (modify-phases %standard-phases
237 (add-before 'build 'generate-sisu
239 (mkdir-p "build/classes/META-INF/sisu")
240 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
244 ;; Build this list by looking for files containing "@Named"
245 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
246 "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
247 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
248 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
249 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
250 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
251 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
252 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
253 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
254 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
255 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
256 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
257 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
258 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
259 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
260 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
261 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
262 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
263 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
264 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
265 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
266 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
267 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
270 (install-from-pom "maven-resolver-impl/pom.xml")))))
272 `(("maven-resolver-api" ,maven-resolver-api)
273 ("maven-resolver-spi" ,maven-resolver-spi)
274 ("maven-resolver-util" ,maven-resolver-util)
275 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
276 ("java-javax-inject" ,java-javax-inject)
277 ("java-guice" ,java-guice)
278 ("java-slf4j-api" ,java-slf4j-api)
279 ("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
281 `(("java-junit" ,java-junit)
282 ("maven-resolver-test-util" ,maven-resolver-test-util)))))
284 (define-public maven-resolver-transport-wagon
286 (inherit maven-resolver-api)
287 (name "maven-resolver-transport-wagon")
289 `(#:jar-name "maven-resolver-transport-wagon.jar"
290 #:source-dir "maven-resolver-transport-wagon/src/main/java"
291 #:test-dir "maven-resolver-transport-wagon/src/test"
294 (modify-phases %standard-phases
295 (add-before 'build 'generate-sisu
297 (mkdir-p "build/classes/META-INF/sisu")
298 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
300 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
302 (add-before 'build 'generate-components.xml
304 (mkdir-p "build/classes/META-INF/plexus")
305 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
309 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
313 <role>org.eclipse.aether.transport.wagon.WagonConfigurator</role>
314 <role-hint>plexus</role-hint>
315 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator</implementation>
317 <isolated-realm>false</isolated-realm>
320 <role>org.codehaus.plexus.PlexusContainer</role>
322 <field-name>container</field-name>
327 <role>org.eclipse.aether.transport.wagon.WagonProvider</role>
328 <role-hint>plexus</role-hint>
329 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider</implementation>
331 <isolated-realm>false</isolated-realm>
334 <role>org.codehaus.plexus.PlexusContainer</role>
336 <field-name>container</field-name>
341 </component-set>\n"))))
344 `(("maven-resolver-api" ,maven-resolver-api)
345 ("maven-resolver-spi" ,maven-resolver-spi)
346 ("maven-resolver-util" ,maven-resolver-util)
347 ("java-javax-inject" ,java-javax-inject)
348 ("mavne-wagon-provider-api" ,maven-wagon-provider-api)
349 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
350 ("java-plexus-classworld" ,java-plexus-classworlds)
351 ("java-plexus-plexus-util" ,java-plexus-utils)
352 ("java-slf4j-api" ,java-slf4j-api)
353 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
354 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
356 `(("java-junit" ,java-junit)
357 ("java-hamcrest-core" ,java-hamcrest-core)
358 ("maven-resolver-test-util" ,maven-resolver-test-util)
359 ("java-guava" ,java-guava)
360 ("java-cglib" ,java-cglib)
361 ("java-asm" ,java-asm)
362 ("java-aopalliance" ,java-aopalliance)
363 ("java-guice" ,java-guice)))
364 (synopsis "Transport implementation for Maven")
365 (description "This package contains a transport implementation based on
366 Maven Wagon, for use in Maven.")))
368 ;; aether is the parent project that was forked into maven-resolver. It used
369 ;; to be used with older versions of Maven, and is still required for some
370 ;; plugins and their dependencies. This version is required for the plugins,
371 ;; even though there are newer versions of this project.
372 (define-public java-sonatype-aether-api
374 (name "java-sonatype-aether-api")
379 (url "https://github.com/sonatype/sonatype-aether")
380 (commit (string-append "aether-" version))))
381 (file-name (git-file-name name version))
384 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
385 (build-system ant-build-system)
387 `(#:jar-name "aether-api.jar"
388 #:source-dir "aether-api/src/main/java"
389 #:test-dir "aether-api/src/test"
391 (modify-phases %standard-phases
392 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
393 (replace 'install (install-from-pom "aether-api/pom.xml")))))
395 `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-6)))
396 (native-inputs `(("java-junit" ,java-junit)))
397 (home-page "https://github.com/sonatype/sonatype-aether")
398 (synopsis "Maven repository system API")
399 (description "This package contains the API for the maven repository system.")
400 (license license:asl2.0)))
402 (define-public java-sonatype-aether-spi
404 (inherit java-sonatype-aether-api)
405 (name "java-sonatype-aether-spi")
407 `(#:jar-name "aether-spi.jar"
408 #:source-dir "aether-spi/src/main/java"
409 #:tests? #f; no tests
411 (modify-phases %standard-phases
412 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
414 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
415 (synopsis "Maven repository system SPI")
416 (description "This package contains the service provider interface (SPI)
417 for repository system implementations and repository connectors.")))
419 (define-public java-sonatype-aether-test-util
421 (inherit java-sonatype-aether-api)
422 (name "java-sonatype-aether-test-util")
424 `(#:jar-name "java-sonatype-aether-test-util.jar"
425 #:source-dir "aether-test-util/src/main/java"
426 #:test-dir "aether-test-util/src/test"))
428 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
429 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)))
430 (synopsis "Utility classes for testing the maven repository system")
431 (description "This package contains a collection of utility classes to
432 ease testing of the repository system.")))
434 (define-public java-sonatype-aether-util
436 (inherit java-sonatype-aether-api)
437 (name "java-sonatype-aether-util")
439 `(#:jar-name "aether-util.jar"
440 #:source-dir "aether-util/src/main/java"
441 #:test-dir "aether-util/src/test"
443 (modify-phases %standard-phases
444 (replace 'install (install-from-pom "aether-util/pom.xml")))))
446 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
448 `(("java-junit" ,java-junit)
449 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))
450 (synopsis "Utility classes for the maven repository system")
451 (description "This package contains a collection of utility classes to
452 ease usage of the repository system.")))
454 (define-public java-sonatype-aether-impl
456 (inherit java-sonatype-aether-api)
457 (name "java-sonatype-aether-impl")
459 `(#:jar-name "aether-impl.jar"
460 #:source-dir "aether-impl/src/main/java"
461 #:test-dir "aether-impl/src/test"
463 (modify-phases %standard-phases
464 (add-before 'install 'fix-pom
466 (substitute* "aether-impl/pom.xml"
467 (("org.sonatype.sisu") "org.codehaus.plexus")
468 (("sisu-inject-plexus") "plexus-container-default"))
470 (add-after 'build 'generate-metadata
472 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
473 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
474 "--source" "src/main/java"
475 "--output" "build/classes/META-INF/plexus/components.xml"
476 "--classes" "build/classes"
477 "--descriptors" "build/classes/META-INF")
479 (add-after 'generate-metadata 'rebuild
483 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
485 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
486 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
487 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
488 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
489 ("java-plexus-container-default" ,java-plexus-container-default)
490 ("java-slf4j-api" ,java-slf4j-api)))
492 `(("java-junit" ,java-junit)
493 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
494 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))))
496 ;; Again, this old version is required by some maven plugins
497 (define-public java-eclipse-aether-api
499 (name "java-eclipse-aether-api")
504 (url "https://github.com/eclipse/aether-core")
505 (commit "aether-1.0.2.v20150114")))
506 (file-name (git-file-name name version))
509 "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
510 (build-system ant-build-system)
512 `(#:jar-name "aether-api.jar"
513 #:source-dir "aether-api/src/main/java"
514 #:test-dir "aether-api/src/test"
516 (modify-phases %standard-phases
517 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
518 (replace 'install (install-from-pom "aether-api/pom.xml")))))
519 (native-inputs `(("java-junit" ,java-junit)))
520 (home-page "https://github.com/sonatype/sonatype-aether")
521 (synopsis "Maven repository system API")
522 (description "This package contains the API for the maven repository system.")
523 (license license:asl2.0)))
525 (define-public java-eclipse-aether-spi
527 (inherit java-eclipse-aether-api)
528 (name "java-eclipse-aether-spi")
530 `(#:jar-name "aether-spi.jar"
531 #:source-dir "aether-spi/src/main/java"
532 #:test-dir "aether-spi/src/test"
534 (modify-phases %standard-phases
535 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
537 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
538 (synopsis "Maven repository system SPI")
539 (description "This package contains the service provider interface (SPI)
540 for repository system implementations and repository connectors.")))
542 (define-public java-eclipse-aether-test-util
544 (inherit java-eclipse-aether-api)
545 (name "java-eclipse-aether-test-util")
547 `(#:jar-name "aether-test-util.jar"
548 #:source-dir "aether-test-util/src/main/java"
549 #:test-dir "aether-test-util/src/test"
551 (modify-phases %standard-phases
552 (replace 'install (install-from-pom "aether-util/pom.xml")))))
554 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
555 ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)))
556 (synopsis "Utility classes for testing the maven repository system")
557 (description "This package contains a collection of utility classes to
558 ease testing of the repository system.")))
560 (define-public java-eclipse-aether-util
562 (inherit java-eclipse-aether-api)
563 (name "java-eclipse-aether-util")
565 `(#:jar-name "aether-util.jar"
566 #:source-dir "aether-util/src/main/java"
567 #:test-dir "aether-util/src/test"
569 (modify-phases %standard-phases
570 (replace 'install (install-from-pom "aether-util/pom.xml")))))
572 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
574 `(("java-eclipse-aether-test-util" ,java-eclipse-aether-test-util)
575 ("java-junit" ,java-junit)))
576 (synopsis "Utility classes for the maven repository system")
577 (description "This package contains a collection of utility classes to
578 ease usage of the repository system.")))
580 (define-public java-eclipse-aether-impl
582 (inherit java-eclipse-aether-api)
583 (name "java-eclipse-aether-impl")
585 `(#:jar-name "aether-impl.jar"
586 #:source-dir "aether-impl/src/main/java"
587 #:test-dir "aether-impl/src/test"
589 (modify-phases %standard-phases
590 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
592 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
593 ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)
594 ("java-eclipse-aether-util" ,java-eclipse-aether-util)
595 ("java-javax-inject" ,java-javax-inject)
596 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
597 ("java-guice" ,java-guice)
598 ("java-slf4j-api" ,java-slf4j-api)))
600 `(("java-eclipse-aether-test-util" ,java-eclipse-aether-test-util)
601 ("java-junit" ,java-junit)))))
603 (define-public maven-shared-utils
605 (name "maven-shared-utils")
609 (uri (string-append "mirror://apache/maven/shared/"
610 "maven-shared-utils-" version "-source-release.zip"))
613 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
614 (build-system ant-build-system)
616 `(#:jar-name "maven-shared-utils.jar"
617 #:source-dir "src/main/java"
619 (modify-phases %standard-phases
620 (add-before 'build 'fix-/bin/sh-invocation
622 (substitute* (find-files "src" ".*.java$")
623 (("/bin/sh") (which "sh")))
625 (add-before 'check 'remove-cyclic-dep
628 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
631 (install-from-pom "pom.xml")))))
633 `(("java-jansi" ,java-jansi)
634 ("java-commons-io" ,java-commons-io)
635 ("java-jsr305" ,java-jsr305)
636 ("java-plexus-container-default" ,java-plexus-container-default)
637 ("maven-parent-pom-30" ,maven-parent-pom-30)))
640 ("java-junit" ,java-junit)
641 ("java-hamcrest-core" ,java-hamcrest-core)
642 ("java-commons-lang3" ,java-commons-lang3)))
643 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
644 (synopsis "Plexus-util replacement for maven")
645 (description "This project aims to be a functional replacement for
646 plexus-utils in Maven. It is not a 100% API compatible replacement but a
647 replacement with improvements.")
648 (license license:asl2.0)))
650 (define-public maven-plugin-annotations
652 (name "maven-plugin-annotations")
656 (uri (string-append "mirror://apache/maven/"
657 "plugin-tools/maven-plugin-tools-" version
658 "-source-release.zip"))
659 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
660 (build-system ant-build-system)
662 `(#:jar-name "maven-plugin-annotations.jar"
663 #:source-dir "maven-plugin-annotations/src/main/java"
666 `(("maven-artifact" ,maven-artifact)))
669 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
670 (synopsis "Java 5 annotations to use in Mojos")
671 (description "This package contains Java 5 annotations for use in Mojos.")
672 (license license:asl2.0)))
674 (define-public maven-wagon-provider-api
676 (name "maven-wagon-provider-api")
680 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
681 "wagon-" version "-source-release.zip"))
684 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
685 (build-system ant-build-system)
687 `(#:jar-name "maven-wagon-provider-api.jar"
688 #:source-dir "wagon-provider-api/src/main/java"
689 #:test-dir "wagon-provider-api/src/test"
691 (modify-phases %standard-phases
693 (install-from-pom "wagon-provider-api/pom.xml")))))
695 `(("java-plexus-utils" ,java-plexus-utils)
696 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
699 ("java-junit" ,java-junit)
700 ("java-easymock" ,java-easymock)))
701 (home-page "https://maven.apache.org/wagon")
702 (synopsis "Transport abstraction for Maven")
703 (description "Maven Wagon is a transport abstraction that is used in Maven's
704 artifact and repository handling code.")
705 (license license:asl2.0)))
707 (define maven-wagon-parent-pom
709 (inherit maven-wagon-provider-api)
713 (modify-phases %standard-phases
717 (install-pom-file "pom.xml")))))
719 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
721 `(("unzip" ,unzip)))))
723 (define-public maven-wagon-provider-test
725 (inherit maven-wagon-provider-api)
726 (name "maven-wagon-provider-test")
728 `(#:jar-name "maven-wagon-provider-test.jar"
729 #:source-dir "wagon-provider-test/src/main/java"
730 #:tests? #f; no tests
733 `(("java-plexus-utils" ,java-plexus-utils)
734 ("java-plexus-container-default" ,java-plexus-container-default)
735 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
736 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
737 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
738 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
739 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
740 ("java-slf4j-api" ,java-slf4j-api)
741 ("java-javaee-servletapi" ,java-javaee-servletapi)
742 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
743 (synopsis "Test classes from maven-wagon")
744 (description "Maven Wagon is a transport abstraction that is used in Maven's
745 artifact and repository handling code. This package contains common test
746 classes used in multiple maven-wagon components.")))
748 (define-public maven-wagon-file
750 (inherit maven-wagon-provider-api)
751 (name "maven-wagon-file")
753 `(#:jar-name "maven-wagon-file.jar"
754 #:source-dir "wagon-providers/wagon-file/src/main/java"
755 #:test-dir "wagon-providers/wagon-file/src/test"
758 (modify-phases %standard-phases
759 (add-before 'check 'fix-paths
761 ;; Tests assume they are run by maven, which copies test resources
762 ;; to target. Our ant-build-system does the same, but with the
764 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
765 (("target") "build"))
767 (add-after 'build 'generate-metadata
769 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
770 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
771 "--source" "wagon-providers/wagon-file/src/main/java"
772 "--output" "build/classes/META-INF/plexus/components.xml"
773 "--classes" "build/classes"
774 "--descriptors" "build/classes/META-INF")
776 (add-after 'generate-metadata 'rebuild
781 `(("java-plexus-utils" ,java-plexus-utils)
782 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
784 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
785 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
786 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
787 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
788 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
789 ("java-plexus-classworlds" ,java-plexus-classworlds)
790 ("java-guava" ,java-guava)
791 ("java-guice" ,java-guice)
792 ("java-javax-inject" ,java-javax-inject)
793 ("java-cglib" ,java-cglib)
794 ("java-slf4j-api" ,java-slf4j-api)
795 ("java-plexus-utils" ,java-plexus-utils)
796 ("java-plexus-cli" ,java-plexus-cli)
797 ("maven-plugin-api" ,maven-plugin-api)
798 ("maven-plugin-annotations" ,maven-plugin-annotations)
799 ("maven-core" ,maven-core)
800 ("maven-model" ,maven-model)
801 ("java-commons-cli" ,java-commons-cli)
802 ("java-qdox" ,java-qdox)
803 ("java-jdom2" ,java-jdom2)
804 ("java-asm" ,java-asm)
805 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
806 ,@(package-native-inputs maven-wagon-provider-api)))
807 (synopsis "Wagon provider that gets and puts artifacts using the file system")
808 (description "Maven Wagon is a transport abstraction that is used in Maven's
809 artifact and repository handling code. It uses providers, that are tools to
810 manage artifacts and deployment. This package contains the file provider which
811 gets and puts artifacts using the file system.")))
813 (define-public maven-wagon-tck-http
815 (inherit maven-wagon-provider-api)
816 (name "maven-wagon-tck-http")
818 `(#:jar-name "maven-wagon-tck-http.jar"
819 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
820 #:tests? #f; no tests
823 `(("java-plexus-util" ,java-plexus-utils)
824 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
825 ("java-javaee-servletapi" ,java-javaee-servletapi)
826 ("java-slf4j-api" ,java-slf4j-api)
827 ("java-commons-codec" ,java-commons-codec)
828 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
829 ("java-plexus-classworlds" ,java-plexus-classworlds)
830 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
831 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
832 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
833 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
834 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
835 (synopsis "Wagon HTTP Test Compatibility Kit")
836 (description "Maven Wagon is a transport abstraction that is used in Maven's
837 artifact and repository handling code. This package contains the HTTP
838 Test Compatibility Kit.")))
840 (define-public maven-wagon-http-shared
842 (inherit maven-wagon-provider-api)
843 (name "maven-wagon-http-shared")
845 `(#:jar-name "maven-wagon-http-shared.jar"
846 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
847 #:test-dir "wagon-providers/wagon-http-shared/src/test"
850 (modify-phases %standard-phases
851 (add-after 'build 'generate-metadata
853 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
854 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
855 "--source" "wagon-providers/wagon-http-shared/src/main/java"
856 "--output" "build/classes/META-INF/plexus/components.xml"
857 "--classes" "build/classes"
858 "--descriptors" "build/classes/META-INF")
860 (add-after 'generate-metadata 'rebuild
865 `(("java-plexus-utils" ,java-plexus-utils)
866 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
867 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
868 ("java-commons-io" ,java-commons-io)
869 ("java-jsoup" ,java-jsoup)
870 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
872 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
873 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
874 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
875 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
876 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
877 ("java-plexus-classworlds" ,java-plexus-classworlds)
878 ("java-guava" ,java-guava)
879 ("java-guice" ,java-guice)
880 ("java-javax-inject" ,java-javax-inject)
881 ("java-cglib" ,java-cglib)
882 ("java-slf4j-api" ,java-slf4j-api)
883 ("java-plexus-utils" ,java-plexus-utils)
884 ("java-plexus-cli" ,java-plexus-cli)
885 ("maven-plugin-api" ,maven-plugin-api)
886 ("maven-plugin-annotations" ,maven-plugin-annotations)
887 ("maven-core" ,maven-core)
888 ("maven-model" ,maven-model)
889 ("java-commons-cli" ,java-commons-cli)
890 ("java-qdox" ,java-qdox)
891 ("java-jdom2" ,java-jdom2)
892 ("java-asm" ,java-asm)
893 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
894 ,@(package-native-inputs maven-wagon-provider-api)))
895 (synopsis "Shared Library for wagon providers supporting HTTP.")
896 (description "Maven Wagon is a transport abstraction that is used in Maven's
897 artifact and repository handling code. It uses providers, that are tools to
898 manage artifacts and deployment. This package contains a shared library for
899 wagon providers supporting HTTP.")))
901 (define-public maven-wagon-http
903 (inherit maven-wagon-provider-api)
904 (name "maven-wagon-http")
906 `(#:jar-name "maven-wagon-http.jar"
907 #:source-dir "wagon-providers/wagon-http/src/main/java"
908 #:test-dir "wagon-providers/wagon-http/src/test"
911 ;; FIXME: javax.net.ssl.SSLHandshakeException:
912 ;; sun.security.validator.ValidatorException:
913 ;; PKIX path building failed:
914 ;; sun.security.provider.certpath.SunCertPathBuilderException:
915 ;; unable to find valid certification path to requested target
916 "**/HttpsWagonPreemptiveTest.java"
917 "**/HttpsWagonTest.java"
922 (modify-phases %standard-phases
923 (add-before 'build 'copy-resources
925 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
926 "build/classes/META-INF/plexus")
928 (add-before 'check 'fix-resource-path
930 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
931 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
932 (("src/test") "wagon-providers/wagon-http/src/test"))
935 `(("java-plexus-utils" ,java-plexus-utils)
936 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
937 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
938 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
939 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
940 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
942 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
943 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
944 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
945 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
946 ("java-plexus-container-default" ,java-plexus-container-default)
947 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
948 ("java-plexus-classworlds" ,java-plexus-classworlds)
949 ("java-guava" ,java-guava)
950 ("java-guice" ,java-guice)
951 ("java-inject" ,java-javax-inject)
952 ("java-cglib" ,java-cglib)
953 ("java-slf4j-api" ,java-slf4j-api)
954 ("java-plexus-utils" ,java-plexus-utils)
955 ("java-plexus-cli" ,java-plexus-cli)
956 ("maven-plugin-api" ,maven-plugin-api)
957 ("maven-plugin-annotations" ,maven-plugin-annotations)
958 ("maven-core" ,maven-core)
959 ("maven-model" ,maven-model)
960 ("java-commons-cli" ,java-commons-cli)
961 ("java-qdox" ,java-qdox)
962 ("java-jdom2" ,java-jdom2)
963 ("java-asm" ,java-asm)
964 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
965 ("java-javaee-servletapi" ,java-javaee-servletapi)
966 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
967 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
968 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
969 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
970 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
971 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
972 ("java-hamcrest-core" ,java-hamcrest-core)
973 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
974 ("java-commons-codec" ,java-commons-codec)
975 ("java-commons-io" ,java-commons-io)
976 ("java-jsoup" ,java-jsoup)
977 ("java-slf4j-simple" ,java-slf4j-simple)
978 ,@(package-native-inputs maven-wagon-provider-api)))
979 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
980 (description "Maven Wagon is a transport abstraction that is used in Maven's
981 artifact and repository handling code. It uses providers, that are tools to
982 manage artifacts and deployment. This package contains a Wagon provider that
983 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
991 (uri (string-append "mirror://apache/maven/"
992 "maven-3/" version "/source/"
993 "apache-maven-" version "-src.tar.gz"))
994 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
995 (modules '((guix build utils)))
998 (for-each delete-file (find-files "." "\\.jar$"))
1001 (search-patches "maven-generate-component-xml.patch"
1002 "maven-generate-javax-inject-named.patch"))))
1003 (build-system ant-build-system)
1007 (modify-phases %standard-phases
1010 (add-before 'install 'fix-dependencies
1012 (substitute* "pom.xml"
1013 (("classWorldsVersion>.*")
1015 "classWorldsVersion>"
1016 ,(package-version java-plexus-classworlds)
1017 "</classWorldsVersion>\n"))
1018 (("commonsCliVersion>.*")
1020 "commonsCliVersion>"
1021 ,(package-version java-commons-cli)
1022 "</commonsCliVersion>\n"))
1023 (("commonsLangVersion>.*")
1025 "commonsLangVersion>"
1026 ,(package-version java-commons-lang3)
1027 "</commonsLangVersion>\n"))
1028 (("plexusUtilsVersion>.*")
1030 "plexusUtilsVersion>"
1031 ,(package-version java-plexus-utils)
1032 "</plexusUtilsVersion>\n"))
1033 (("plexusInterpolationVersion>.*")
1035 "plexusInterpolationVersion>"
1036 ,(package-version java-plexus-interpolation)
1037 "</plexusInterpolationVersion>\n"))
1038 (("guiceVersion>.*")
1041 ,(package-version java-guice)
1042 "</guiceVersion>\n"))
1043 (("sisuInjectVersion>.*")
1045 "sisuInjectVersion>"
1046 ,(package-version java-eclipse-sisu-inject)
1047 "</sisuInjectVersion>\n"))
1048 (("securityDispatcherVersion>.*")
1050 "securityDispatcherVersion>"
1051 ,(package-version java-plexus-sec-dispatcher)
1052 "</securityDispatcherVersion>\n"))
1053 (("cipherVersion>.*")
1056 ,(package-version java-plexus-cipher)
1057 "</cipherVersion>\n"))
1058 (("slf4jVersion>.*")
1061 ,(package-version java-slf4j-api)
1062 "</slf4jVersion>\n"))
1063 (("<classifier>no_aop</classifier>") ""))
1066 (install-pom-file "pom.xml")))))
1068 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
1069 (home-page "https://maven.apache.org/")
1070 (synopsis "Build system")
1071 (description "Apache Maven is a software project management and comprehension
1072 tool. This package contains the Maven pom file, used by all maven components.")
1073 (license license:asl2.0)))
1075 (define-public maven-artifact
1078 (name "maven-artifact")
1080 `(#:jar-name "maven-artifact.jar"
1081 #:source-dir "maven-artifact/src/main/java"
1082 #:test-dir "maven-artifact/src/test"
1083 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1085 (modify-phases %standard-phases
1087 (install-from-pom "maven-artifact/pom.xml")))))
1089 `(("java-plexus-utils" ,java-plexus-utils)
1090 ("java-commons-lang3" ,java-commons-lang3)
1091 ("maven-pom" ,maven-pom)))
1093 `(("java-junit" ,java-junit)))
1094 (description "Apache Maven is a software project management and comprehension
1095 tool. This package contains the Maven Artifact classes, providing the
1096 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1097 jar file is executable and provides a little tool to display how Maven parses
1098 and compares versions:")))
1100 (define-public maven-model
1102 (inherit maven-artifact)
1103 (name "maven-model")
1105 `(#:jar-name "maven-model.jar"
1106 #:source-dir "maven-model/src/main/java"
1107 #:test-dir "maven-model/src/test"
1109 (modify-phases %standard-phases
1110 (add-before 'build 'generate-models
1111 (lambda* (#:key inputs #:allow-other-keys)
1112 (define (modello-single-mode file version mode)
1113 (invoke "java" "org.codehaus.modello.ModelloCli"
1114 file mode "maven-model/src/main/java" version
1116 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1117 (modello-single-mode file "4.0.0" "java")
1118 (modello-single-mode file "4.0.0" "xpp3-reader")
1119 (modello-single-mode file "4.0.0" "xpp3-writer")
1120 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
1122 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1124 `(("java-commons-lang3" ,java-commons-lang3)
1125 ("java-plexus-utils" ,java-plexus-utils)
1126 ("maven-pom" ,maven-pom)))
1128 `(("java-modello-core" ,java-modello-core)
1130 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1131 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1132 ("java-guice" ,java-guice)
1133 ("java-cglib" ,java-cglib)
1134 ("java-asm" ,java-asm)
1135 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1136 ("java-javax-inject" ,java-javax-inject)
1137 ("java-plexus-classworlds" ,java-plexus-classworlds)
1138 ("java-guava" ,java-guava)
1139 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1140 ("java-sisu-build-api" ,java-sisu-build-api)
1142 ("java-modello-plugins-java" ,java-modello-plugins-java)
1143 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1144 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1146 ("java-junit" ,java-junit)))
1147 (description "Apache Maven is a software project management and comprehension
1148 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1149 so really just plain Java objects.")))
1151 (define-public maven-builder-support
1153 (inherit maven-artifact)
1154 (name "maven-builder-support")
1156 `(#:jar-name "maven-builder-support.jar"
1157 #:source-dir "maven-builder-support/src/main/java"
1159 #:test-dir "maven-builder-support/src/test"
1161 (modify-phases %standard-phases
1162 (add-before 'check 'fix-paths
1164 (with-directory-excursion "maven-builder-support/src/test/java"
1166 '("org/apache/maven/building/FileSourceTest.java"
1167 "org/apache/maven/building/UrlSourceTest.java")
1168 (("target/test-classes") "maven-builder-support/src/test/resources")))
1170 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1172 `(("maven-pom" ,maven-pom)))
1174 `(("java-junit" ,java-junit)))
1175 (description "Apache Maven is a software project management and comprehension
1176 tool. This package contains a support library for descriptor builders (model,
1177 setting, toolchains)")))
1179 (define-public maven-settings
1181 (inherit maven-artifact)
1182 (name "maven-settings")
1184 `(#:jar-name "maven-settings.jar"
1185 #:source-dir "maven-settings/src/main/java"
1186 #:tests? #f; no tests
1188 (modify-phases %standard-phases
1189 (add-before 'build 'generate-models
1190 (lambda* (#:key inputs #:allow-other-keys)
1191 (define (modello-single-mode file version mode)
1192 (invoke "java" "org.codehaus.modello.ModelloCli"
1193 file mode "maven-settings/src/main/java" version
1195 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1196 (modello-single-mode file "1.1.0" "java")
1197 (modello-single-mode file "1.1.0" "xpp3-reader")
1198 (modello-single-mode file "1.1.0" "xpp3-writer"))
1200 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1202 `(("java-plexus-utils" ,java-plexus-utils)
1203 ("maven-pom" ,maven-pom)))
1205 `(("java-modello-core" ,java-modello-core)
1207 ;("container" ,java-plexus-container-default)
1208 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1209 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1210 ("java-guice" ,java-guice)
1211 ("java-cglib" ,java-cglib)
1212 ("java-asm" ,java-asm)
1213 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1214 ("java-javax-inject" ,java-javax-inject)
1215 ("java-plexus-classworlds" ,java-plexus-classworlds)
1216 ("java-plexus-utils" ,java-plexus-utils)
1217 ("java-guava" ,java-guava)
1218 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1219 ("java-sisu-build-api" ,java-sisu-build-api)
1221 ("java-modello-plugins-java" ,java-modello-plugins-java)
1222 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1223 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1224 (description "Apache Maven is a software project management and comprehension
1225 tool. This package contains strictly the model for Maven settings, that is
1226 simply plain java objects.")))
1228 (define-public maven-settings-builder
1230 (inherit maven-artifact)
1231 (name "maven-settings-builder")
1233 `(#:jar-name "maven-settings-builder.jar"
1234 #:source-dir "maven-settings-builder/src/main/java"
1236 #:test-dir "maven-settings-builder/src/test"
1238 (modify-phases %standard-phases
1239 (add-before 'build 'generate-components.xml
1241 (mkdir-p "build/classes/META-INF/plexus")
1242 (chmod "components.sh" #o755)
1243 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1244 "build/classes/META-INF/plexus/components.xml")
1246 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1248 `(("java-plexus-utils" ,java-plexus-utils)
1249 ("java-plexus-interpolation" ,java-plexus-interpolation)
1250 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1251 ("maven-builder-support" ,maven-builder-support)
1252 ("maven-settings" ,maven-settings)
1253 ("maven-pom" ,maven-pom)))
1255 `(("java-junit" ,java-junit)
1256 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
1257 (description "Apache Maven is a software project management and comprehension
1258 tool. This package contains the effective model builder, with profile activation,
1259 inheritance, interpolation, @dots{}")))
1261 (define-public maven-model-builder
1263 (inherit maven-artifact)
1264 (name "maven-model-builder")
1266 `(#:jar-name "maven-model-builder.jar"
1267 #:source-dir "maven-model-builder/src/main/java"
1269 #:test-dir "maven-model-builder/src/test"
1271 (modify-phases %standard-phases
1272 (add-before 'build 'copy-resources
1274 (copy-recursively "maven-model-builder/src/main/resources"
1277 (add-before 'build 'generate-components.xml
1279 (mkdir-p "build/classes/META-INF/plexus")
1280 (chmod "components.sh" #o755)
1281 (invoke "./components.sh" "maven-model-builder/src/main/java"
1282 "build/classes/META-INF/plexus/components.xml")
1284 (add-before 'check 'fix-paths
1286 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1287 (("src/test") "maven-model-builder/src/test"))
1290 (install-from-pom "maven-model-builder/pom.xml")))))
1292 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1293 ("java-plexus-utils" ,java-plexus-utils)
1294 ("maven-artifact" ,maven-artifact)
1295 ("maven-builder-support" ,maven-builder-support)
1296 ("maven-model" ,maven-model)
1297 ("maven-pom" ,maven-pom)))
1299 `(("java-junit" ,java-junit)
1300 ("java-guava" ,java-guava)
1301 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1302 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1303 ("guice" ,java-guice)
1304 ("java-cglib" ,java-cglib)
1305 ("java-asm" ,java-asm)
1306 ("sisu-inject" ,java-eclipse-sisu-inject)
1307 ("javax-inject" ,java-javax-inject)
1308 ("java-xmlunit" ,java-xmlunit)
1309 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1310 ("xbean" ,java-geronimo-xbean-reflect)
1311 ("classworlds" ,java-plexus-classworlds)))
1312 (description "Apache Maven is a software project management and comprehension
1313 tool. This package contains the effective model builder, with profile activation,
1314 inheritance, interpolation, @dots{}")))
1316 (define-public maven-repository-metadata
1318 (inherit maven-artifact)
1319 (name "maven-repository-metadata")
1321 `(#:jar-name "maven-repository-metadata.jar"
1322 #:source-dir "maven-repository-metadata/src/main/java"
1324 #:tests? #f; no tests
1326 (modify-phases %standard-phases
1327 (add-before 'build 'generate-models
1328 (lambda* (#:key inputs #:allow-other-keys)
1329 (define (modello-single-mode file version mode)
1330 (invoke "java" "org.codehaus.modello.ModelloCli"
1331 file mode "maven-repository-metadata/src/main/java" version
1333 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1334 (modello-single-mode file "1.1.0" "java")
1335 (modello-single-mode file "1.1.0" "xpp3-reader")
1336 (modello-single-mode file "1.1.0" "xpp3-writer"))
1339 (install-from-pom "maven-repository-metadata/pom.xml")))))
1341 `(("java-plexus-utils" ,java-plexus-utils)
1342 ("maven-pom" ,maven-pom)))
1344 `(("modello" ,java-modello-core)
1346 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1347 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1348 ("java-guice" ,java-guice)
1349 ("java-cglib" ,java-cglib)
1350 ("java-asm" ,java-asm)
1351 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1352 ("java-javax-inject" ,java-javax-inject)
1353 ("java-plexus-utils" ,java-plexus-utils)
1354 ("java-plexus-classworlds" ,java-plexus-classworlds)
1355 ("java-guava" ,java-guava)
1356 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1357 ("java-sisu-build-api" ,java-sisu-build-api)
1359 ("java-modello-plugins-java" ,java-modello-plugins-java)
1360 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1361 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1362 (description "Apache Maven is a software project management and comprehension
1363 tool. This package contains strictly the model for Maven Repository Metadata,
1364 so really just plain objects.")))
1366 (define-public maven-resolver-provider
1368 (inherit maven-artifact)
1369 (name "maven-resolver-provider")
1371 `(#:jar-name "maven-resolver-provider.jar"
1372 #:source-dir "maven-resolver-provider/src/main/java"
1373 #:test-dir "maven-resolver-provider/src/test"
1375 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1377 (modify-phases %standard-phases
1378 (add-before 'build 'generate-sisu-named
1380 (mkdir-p "build/classes/META-INF/sisu")
1381 (chmod "./sisu.sh" #o755)
1382 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1383 "build/classes/META-INF/sisu/javax.inject.Named")
1386 (install-from-pom "maven-resolver-provider/pom.xml")))))
1388 `(("maven-model" ,maven-model)
1389 ("maven-model-builder" ,maven-model-builder)
1390 ("maven-resolver-spi" ,maven-resolver-spi)
1391 ("maven-resolver-api" ,maven-resolver-api)
1392 ("maven-resolver-impl" ,maven-resolver-impl)
1393 ("maven-resolver-util" ,maven-resolver-util)
1394 ("maven-builder-support" ,maven-builder-support)
1395 ("maven-repository-metadata" ,maven-repository-metadata)
1396 ("java-plexus-utils" ,java-plexus-utils)
1397 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1398 ("java-guice" ,java-guice)
1399 ("java-javax-inject" ,java-javax-inject)))))
1401 (define-public maven-plugin-api
1403 (inherit maven-artifact)
1404 (name "maven-plugin-api")
1406 `(#:jar-name "maven-plugin-api.jar"
1407 #:source-dir "maven-plugin-api/src/main/java"
1409 #:test-dir "maven-plugin-api/src/test"
1411 (modify-phases %standard-phases
1412 (add-before 'build 'generate-models
1413 (lambda* (#:key inputs #:allow-other-keys)
1414 (define (modello-single-mode file version mode)
1415 (invoke "java" "org.codehaus.modello.ModelloCli"
1416 file mode "maven-plugin-api/src/main/java" version
1418 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1419 (modello-single-mode file "1.0.0" "java")
1420 (modello-single-mode file "1.0.0" "xpp3-reader")
1421 (modello-single-mode file "1.0.0" "xpp3-writer"))
1424 (install-from-pom "maven-plugin-api/pom.xml")))))
1426 `(("maven-artifact" ,maven-artifact)
1427 ("maven-model" ,maven-model)
1428 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1429 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1430 ("guice" ,java-guice)
1431 ("java-cglib" ,java-cglib)
1432 ("java-asm" ,java-asm)
1433 ("sisu-inject" ,java-eclipse-sisu-inject)
1434 ("javax-inject" ,java-javax-inject)
1435 ("utils" ,java-plexus-utils)))
1437 `(("modello" ,java-modello-core)
1439 ("classworlds" ,java-plexus-classworlds)
1440 ("guava" ,java-guava)
1441 ("xbean" ,java-geronimo-xbean-reflect)
1442 ("build-api" ,java-sisu-build-api)
1444 ("java" ,java-modello-plugins-java)
1445 ("xml" ,java-modello-plugins-xml)
1446 ("xpp3" ,java-modello-plugins-xpp3)
1448 ("java-junit" ,java-junit)))
1449 (description "Apache Maven is a software project management and comprehension
1450 tool. This package contains strictly the API for plugins -- composed of goals
1451 implemented by Mojos -- development.
1453 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1454 generally generated from plugin sources using maven-plugin-plugin.")))
1456 (define maven-core-bootstrap
1458 (inherit maven-artifact)
1461 `(#:jar-name "maven-core.jar"
1462 #:source-dir "src/main/java"
1464 ;; Tests need maven-compat, which requires maven-core
1467 (modify-phases %standard-phases
1468 (add-before 'configure 'chdir
1470 ;; Required for generating components.xml in maven-core
1471 (chdir "maven-core")
1473 (add-before 'build 'copy-resources
1475 (mkdir-p "build/classes/")
1476 (copy-recursively "src/main/resources" "build/classes")
1478 (add-after 'copy-resources 'fill-properties
1480 ;; This file controls the output of some mvn subcommands, such as
1482 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1483 (("\\$\\{buildNumber\\}") "guix_build")
1484 (("\\$\\{timestamp\\}") "0")
1485 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1486 (("\\$\\{distributionId\\}") "apache-maven")
1487 (("\\$\\{distributionShortName\\}") "Maven")
1488 (("\\$\\{distributionName\\}") "Apache Maven"))
1490 (add-before 'build 'generate-sisu-named
1492 (mkdir-p "build/classes/META-INF/sisu")
1493 (chmod "../sisu.sh" #o755)
1494 (invoke "../sisu.sh" "src/main/java"
1495 "build/classes/META-INF/sisu/javax.inject.Named")
1497 (add-before 'build 'generate-models
1498 (lambda* (#:key inputs #:allow-other-keys)
1499 (define (modello-single-mode file version mode)
1500 (invoke "java" "org.codehaus.modello.ModelloCli"
1501 file mode "src/main/java" version
1503 (let ((file "src/main/mdo/toolchains.mdo"))
1504 (modello-single-mode file "1.1.0" "java")
1505 (modello-single-mode file "1.1.0" "xpp3-reader")
1506 (modello-single-mode file "1.1.0" "xpp3-writer"))
1508 (add-before 'install 'fix-pom
1510 (substitute* "pom.xml"
1511 (("<classifier>no_aop</classifier>") ""))
1514 (install-from-pom "pom.xml")))))
1516 `(("maven-artifact" ,maven-artifact)
1517 ("maven-resolver-provider" ,maven-resolver-provider)
1518 ("maven-builder-support" ,maven-builder-support)
1519 ("maven-model" ,maven-model)
1520 ("maven-model-builder" ,maven-model-builder)
1521 ("maven-settings" ,maven-settings)
1522 ("maven-settings-builder" ,maven-settings-builder)
1523 ("maven-plugin-api" ,maven-plugin-api)
1524 ("maven-repository-metadata" ,maven-repository-metadata)
1525 ("maven-shared-utils" ,maven-shared-utils)
1526 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1527 ("java-plexus-utils" ,java-plexus-utils)
1528 ("java-commons-lang3" ,java-commons-lang3)
1529 ("java-guava" ,java-guava)
1530 ("java-guice" ,java-guice)
1531 ("maven-resolver-api" ,maven-resolver-api)
1532 ("maven-resolver-spi" ,maven-resolver-spi)
1533 ("maven-resolver-util" ,maven-resolver-util)
1534 ("maven-resolver-impl" ,maven-resolver-impl)
1535 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1536 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1537 ("java-javax-inject" ,java-javax-inject)
1538 ("java-plexus-classworld" ,java-plexus-classworlds)))
1540 `(("java-modello-core" ,java-modello-core)
1541 ("java-cglib" ,java-cglib)
1542 ("java-asm" ,java-asm)
1543 ("java-plexus-classworlds" ,java-plexus-classworlds)
1544 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1545 ("java-sisu-build-api" ,java-sisu-build-api)
1546 ("java-modello-plugins-java" ,java-modello-plugins-java)
1547 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1548 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1550 ("java-junit" ,java-junit)
1551 ("java-mockito-1" ,java-mockito-1)
1552 ("java-commons-jxpath" ,java-commons-jxpath)))
1553 (description "Apache Maven is a software project management and comprehension
1554 tool. This package contains the maven core classes managing the whole build
1557 (define-public maven-core
1559 (inherit maven-core-bootstrap)
1561 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1563 `(modify-phases ,phases
1564 (add-before 'build 'modify-metainf
1566 (substitute* "build.xml"
1567 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
1569 (add-before 'build 'add-maven-files
1571 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1572 (copy-file "pom.xml"
1573 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1574 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1576 (format #t "version=~a~%
1577 groupId=org.apache.maven~%
1578 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1580 (add-after 'build 'generate-metadata
1582 (define (components file)
1583 (let ((sxml (with-input-from-file file
1584 (lambda _ (xml->sxml (current-input-port)
1585 #:trim-whitespace? #t)))))
1586 ;; Select the list of <component>s inside the <component-set>
1587 ;; and <components>.
1588 ((@ (ice-9 match) match) sxml
1592 ('components x ...))) x))))
1593 (use-modules (sxml simple))
1594 (delete-file "build/classes/META-INF/plexus/components.xml")
1595 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1596 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1597 "--source" "build/classes/META-INF/plexus"
1598 "--output" "build/classes/META-INF/plexus/components.t.xml"
1599 "--classes" "build/classes"
1600 "--descriptors" "build/classes")
1601 ;; Now we merge all other components from hand-written xml
1602 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1603 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1604 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1605 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1606 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1608 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1612 ,@(append generated-xml components-xml
1613 default-bindings-xml
1614 artifact-handlers-xml)))))))
1616 (add-after 'generate-metadata 'rebuild
1618 (invoke "ant" "jar")
1621 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1622 ("java-commons-cli" ,java-commons-cli)
1623 ("java-plexus-cli" ,java-plexus-cli)
1624 ("java-jdom2" ,java-jdom2)
1625 ("java-qdox" ,java-qdox)
1626 ("maven-core-boot" ,maven-core-bootstrap)
1627 ,@(package-native-inputs maven-core-bootstrap)))))
1629 (define-public maven-embedder
1631 (inherit maven-artifact)
1632 (name "maven-embedder")
1634 `(#:jar-name "maven-embedder.jar"
1635 #:source-dir "maven-embedder/src/main/java"
1636 #:test-dir "maven-embedder/src/test"
1637 #:test-exclude (list "**/MavenCliTest.java")
1640 (modify-phases %standard-phases
1641 (add-before 'build 'generate-sisu-named
1643 (mkdir-p "build/classes/META-INF/sisu")
1644 (chmod "sisu.sh" #o755)
1645 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1646 "build/classes/META-INF/sisu/javax.inject.Named")
1648 (add-before 'build 'generate-models
1649 (lambda* (#:key inputs #:allow-other-keys)
1650 (define (modello-single-mode file version mode)
1651 (invoke "java" "org.codehaus.modello.ModelloCli"
1652 file mode "maven-embedder/src/main/java" version
1654 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1655 (modello-single-mode file "1.0.0" "java")
1656 (modello-single-mode file "1.0.0" "xpp3-reader")
1657 (modello-single-mode file "1.0.0" "xpp3-writer"))
1659 (add-before 'check 'fix-test-paths
1661 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1662 (("target/test-classes") "build/test-classes"))
1664 (add-before 'check 'fix-test-compilation
1666 ;; Tests are in the java/ subdir. Other subdirectories contain
1667 ;; additional test plugins, with duplicate classes, so we can't
1668 ;; compile them. Also, they are meant to be built with maven, to
1669 ;; test its build process.
1670 (substitute* "build.xml"
1671 (("srcdir=\"maven-embedder/src/test\"")
1672 "srcdir=\"maven-embedder/src/test/java\""))
1675 (install-from-pom "maven-embedder/pom.xml")))))
1677 `(("maven-core" ,maven-core)
1678 ("maven-artifact" ,maven-artifact)
1679 ("maven-plugin-api" ,maven-plugin-api)
1680 ("maven-builder-support" ,maven-builder-support)
1681 ("maven-model" ,maven-model)
1682 ("maven-model-builder" ,maven-model-builder)
1683 ("maven-settings" ,maven-settings)
1684 ("maven-settings-builder" ,maven-settings-builder)
1685 ("maven-shared-utils" ,maven-shared-utils)
1686 ("java-plexus-classworlds" ,java-plexus-classworlds)
1687 ("java-plexus-util" ,java-plexus-utils)
1688 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1689 ("java-plexus-cipher" ,java-plexus-cipher)
1690 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1691 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1692 ("maven-resolevr-util" ,maven-resolver-util)
1693 ("maven-resolevr-api" ,maven-resolver-api)
1694 ("java-logback-core" ,java-logback-core)
1695 ("java-logback-classic" ,java-logback-classic)
1696 ("java-commons-cli" ,java-commons-cli)
1697 ("java-commons-io" ,java-commons-io)
1698 ("java-commons-lang3" ,java-commons-lang3)
1699 ("java-guava" ,java-guava)
1700 ("java-guice" ,java-guice)
1701 ("java-javax-inject" ,java-javax-inject)
1702 ("java-slf4j-api" ,java-slf4j-api)
1703 ("java-slf4j-simple" ,java-slf4j-simple)
1704 ("java-jsr250" ,java-jsr250)))
1706 `(("java-modello-core" ,java-modello-core)
1707 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1708 ("java-sisu-build-api" ,java-sisu-build-api)
1709 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1710 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1711 ("java-cglib" ,java-cglib)
1712 ("java-asm" ,java-asm)
1713 ("java-modello-plugins-java" ,java-modello-plugins-java)
1714 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1715 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1717 ("java-junit" ,java-junit)
1718 ("java-objenesis" ,java-objenesis)
1719 ("java-mockito-1" ,java-mockito-1)
1720 ("java-hamcrest-core" ,java-hamcrest-core)))
1721 (description "Apache Maven is a software project management and comprehension
1722 tool. This package contains a Maven embeddable component, with CLI and
1723 logging support.")))
1725 (define-public maven-compat
1727 (inherit maven-artifact)
1728 (name "maven-compat")
1730 `(#:jar-name "maven-compat.jar"
1731 #:source-dir "src/main/java"
1733 #:test-dir "src/test"
1735 (modify-phases %standard-phases
1736 ;; Tests assume we're in this directory
1737 (add-before 'configure 'chdir
1739 (chdir "maven-compat")
1741 (add-before 'build 'recreate-removed-jar
1743 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1745 (with-directory-excursion "src/test/resources"
1746 (with-output-to-file "artifact-install/artifact-1.0.jar"
1748 (format #t "dummy~%")))
1751 (with-output-to-file file
1753 (format #t "foo~%"))))
1754 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1755 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1756 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1757 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1758 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1759 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1760 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1761 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1762 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1763 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1764 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1765 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1766 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1767 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1768 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1769 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1770 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1771 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1772 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1773 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1774 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1775 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1776 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1777 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1778 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1779 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1780 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1781 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1782 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1783 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1784 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1785 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1786 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1787 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1788 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1789 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1790 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1791 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1792 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1793 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1794 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1795 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1796 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1797 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1798 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1799 (with-directory-excursion "local-repo/snapshot-test/jars"
1802 (with-output-to-file file
1805 (format #t "local"))))
1806 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1807 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1808 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1811 (with-directory-excursion
1812 (string-append "src/test/remote-repo/org/apache/maven/its/"
1814 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1817 (copy-file (string-append letter "-0.1.pom")
1818 (string-append dir "/pom.xml"))
1819 (with-output-to-file (string-append dir "/pom.properties")
1821 (format #t "version=0.1~%")
1822 (format #t "groupId=org.apache.maven.its")
1823 (format #t (string-append "artifactId=" letter))))
1824 (with-output-to-file "META-INF/MANIFEST.MF"
1826 (format #t "Manifest-Version: 1.0~%"))))
1827 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1828 (string-append letter "-0.1.jar") "META-INF")))
1831 (add-before 'build 'generate-models
1832 (lambda* (#:key inputs #:allow-other-keys)
1833 (define (modello-single-mode file version mode)
1834 (invoke "java" "org.codehaus.modello.ModelloCli"
1835 file mode "src/main/java" version
1837 (let ((file "src/main/mdo/profiles.mdo"))
1838 (modello-single-mode file "1.0.0" "java")
1839 (modello-single-mode file "1.0.0" "xpp3-reader")
1840 (modello-single-mode file "1.0.0" "xpp3-writer"))
1841 (let ((file "src/main/mdo/paramdoc.mdo"))
1842 (modello-single-mode file "1.0.0" "java")
1843 (modello-single-mode file "1.0.0" "xpp3-reader")
1844 (modello-single-mode file "1.0.0" "xpp3-writer"))
1846 (add-after 'build 'generate-metadata
1848 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1849 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1850 "--source" "src/main/java"
1851 "--output" "build/classes/META-INF/plexus/components.xml"
1852 "--classes" "build/classes"
1853 "--descriptors" "build/classes/META-INF")
1855 (add-before 'check 'build-tests
1857 (invoke "ant" "compile-tests")
1859 (add-after 'build-tests 'generate-test-metadata
1861 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1863 ":build/test-classes")
1864 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1865 "--source" "src/test/java"
1866 "--output" "build/test-classes/META-INF/plexus/components.xml"
1867 "--classes" "build/test-classes"
1868 "--descriptors" "build/test-classes/META-INF")
1870 (add-after 'generate-metadata 'rebuild
1872 (invoke "ant" "jar")
1875 (install-from-pom "pom.xml")))))
1877 `(("maven-artifact" ,maven-artifact)
1878 ("maven-repository-metadata" ,maven-repository-metadata)
1879 ("maven-builder-support" ,maven-builder-support)
1880 ("maven-model" ,maven-model)
1881 ("maven-model-builder" ,maven-model-builder)
1882 ("maven-settings" ,maven-settings)
1883 ("maven-settings-builder" ,maven-settings-builder)
1884 ("maven-core" ,maven-core)
1885 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1886 ("maven-wagon-file" ,maven-wagon-file)
1887 ("maven-resolver-api" ,maven-resolver-api)
1888 ("maven-resolver-util" ,maven-resolver-util)
1889 ("maven-resolver-spi" ,maven-resolver-spi)
1890 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1892 `(("java-modello-core" ,java-modello-core)
1893 ("java-plexus-utils" ,java-plexus-utils)
1894 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1895 ("java-plexus-classworlds" ,java-plexus-classworlds)
1896 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1897 ("java-sisu-build-api" ,java-sisu-build-api)
1898 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1899 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1900 ("java-javax-inject" ,java-javax-inject)
1901 ("java-guice" ,java-guice)
1902 ("java-guava" ,java-guava)
1903 ("java-cglib" ,java-cglib)
1904 ("java-asm" ,java-asm)
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-plexus-component-metadata" ,java-plexus-component-metadata)
1910 ("java-commons-cli" ,java-commons-cli)
1911 ("java-plexus-cli" ,java-plexus-cli)
1912 ("java-jdom2" ,java-jdom2)
1913 ("maven-plugin-api" ,maven-plugin-api)
1914 ("java-qdox" ,java-qdox)
1916 ("java-plexus-cipher" ,java-plexus-cipher)
1917 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1918 ("java-jsr250" ,java-jsr250)
1919 ("java-cdi-api" ,java-cdi-api)
1920 ("java-junit" ,java-junit)
1921 ("maven-resolver-impl" ,maven-resolver-impl)
1922 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1923 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1924 ("java-commons-lang3" ,java-commons-lang3)
1925 ("java-aop" ,java-aopalliance)
1926 ("maven-resolver-provider" ,maven-resolver-provider)
1927 ("java-slf4j-api" ,java-slf4j-api)
1928 ("java-slf4j-simple" ,java-slf4j-simple)
1929 ,@(package-inputs java-slf4j-api)))
1930 (description "Apache Maven is a software project management and comprehension
1931 tool. This package contains Maven2 classes maintained as compatibility
1932 layer for plugins that need to keep Maven2 compatibility.")))
1934 (define-public maven
1936 (inherit maven-artifact)
1940 (modify-phases %standard-phases
1942 (lambda* (#:key inputs #:allow-other-keys)
1943 ;; Recreate the configuration for the loader
1944 (with-output-to-file "apache-maven/src/bin/m2.conf"
1946 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1948 (format #t "set maven.conf default ${maven.home}/conf~%")
1950 (format #t "[plexus.core]~%")
1951 (format #t "load ${maven.conf}/logging~%")
1952 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1953 ;; Reference every jar so plexus-classworlds can find them.
1955 (lambda (dependency)
1958 (format #t "load ~a~%" file))
1959 (find-files (assoc-ref inputs dependency) ".*.jar$")))
1960 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1961 "maven-builder-support" "maven-model" "maven-model-builder"
1962 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1963 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1964 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1965 "maven-resolver-connector-basic" "maven-resolver-provider"
1966 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1967 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1968 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1969 "maven-wagon-http-shared" "maven-wagon-tck-http"
1970 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1971 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1972 "java-javax-inject" "java-plexus-component-annotations"
1973 "java-plexus-utils" "java-plexus-interpolation"
1974 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1975 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1976 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1977 "java-slf4j-simple"))))
1978 (substitute* "apache-maven/src/bin/mvn"
1983 (assoc-ref inputs "java-plexus-classworlds")
1986 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
1990 (lambda* (#:key outputs #:allow-other-keys)
1991 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
1992 (conf (string-append (assoc-ref outputs "out") "/conf/")))
1993 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
1994 (for-each (lambda (file)
1995 (install-file (string-append "apache-maven/src/bin/" file)
1997 (chmod (string-append bin file) #o755))
1998 '("mvn" "mvnDebug" "mvnyjp"))
1999 (install-file "apache-maven/src/bin/m2.conf" bin)
2000 (copy-recursively "apache-maven/src/conf" conf))
2003 `(("java-plexus-classworlds" ,java-plexus-classworlds)
2004 ("maven-artifact" ,maven-artifact)
2005 ("maven-embedder" ,maven-embedder)
2006 ("maven-core" ,maven-core)
2007 ("maven-compat" ,maven-compat)
2008 ("maven-builder-support" ,maven-builder-support)
2009 ("maven-model" ,maven-model)
2010 ("maven-model-builder" ,maven-model-builder)
2011 ("maven-settings" ,maven-settings)
2012 ("maven-settings-builder" ,maven-settings-builder)
2013 ("maven-plugin-api" ,maven-plugin-api)
2014 ("maven-repository-metadata" ,maven-repository-metadata)
2015 ("maven-shared-utils" ,maven-shared-utils)
2016 ("maven-resolver-api" ,maven-resolver-api)
2017 ("maven-resolver-spi" ,maven-resolver-spi)
2018 ("maven-resolver-util" ,maven-resolver-util)
2019 ("maven-resolver-impl" ,maven-resolver-impl)
2020 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
2021 ("maven-resolver-provider" ,maven-resolver-provider)
2022 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
2023 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
2024 ("maven-wagon-file" ,maven-wagon-file)
2025 ("maven-wagon-http" ,maven-wagon-http)
2026 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
2027 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
2028 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
2029 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
2030 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
2031 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2032 ("java-guice" ,java-guice)
2033 ("java-aopalliance" ,java-aopalliance)
2034 ("java-cglib" ,java-cglib)
2035 ("java-asm" ,java-asm)
2036 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
2037 ("java-javax-inject" ,java-javax-inject)
2038 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2039 ("java-plexus-utils" ,java-plexus-utils)
2040 ("java-plexus-interpolation" ,java-plexus-interpolation)
2041 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2042 ("java-plexus-cipher" ,java-plexus-cipher)
2043 ("java-guava" ,java-guava)
2044 ("java-jansi" ,java-jansi)
2045 ("java-jsr250" ,java-jsr250)
2046 ("java-cdi-api" ,java-cdi-api)
2047 ("java-commons-cli" ,java-commons-cli)
2048 ("java-commons-io" ,java-commons-io)
2049 ("java-commons-lang3" ,java-commons-lang3)
2050 ("java-slf4j-api" ,java-slf4j-api)
2051 ;; TODO: replace with maven-slf4j-provider
2052 ("java-slf4j-simple" ,java-slf4j-simple)))
2054 `(("coreutils" ,coreutils)
2056 (description "Apache Maven is a software project management and comprehension
2057 tool. Based on the concept of a project object model: builds, dependency
2058 management, documentation creation, site publication, and distribution
2059 publication are all controlled from the @file{pom.xml} declarative file. Maven
2060 can be extended by plugins to utilise a number of other development tools for
2061 reporting or the build process.")))
2063 ;; Many plugins require maven 3.0 as a dependency.
2064 (define maven-3.0-pom
2071 (url "https://github.com/apache/maven")
2072 (commit (string-append "maven-" version))))
2073 (file-name (git-file-name "maven" version))
2076 "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
2077 (modules '((guix build utils)))
2080 (for-each delete-file (find-files "." "\\.jar$"))
2081 (for-each (lambda (file) (chmod file #o644))
2082 (find-files "." "."))
2085 (search-patches "maven-generate-component-xml.patch"
2086 "maven-generate-javax-inject-named.patch"))))
2088 `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
2090 (define-public maven-3.0-artifact
2092 (inherit maven-artifact)
2093 (version (package-version maven-3.0-pom))
2094 (source (package-source maven-3.0-pom))
2098 (if (equal? (car input) "maven-pom")
2099 `("maven-pom" ,maven-3.0-pom)
2101 (package-propagated-inputs maven-artifact)))))
2103 (define-public maven-3.0-model
2105 (inherit maven-model)
2106 (version (package-version maven-3.0-pom))
2107 (source (package-source maven-3.0-pom))
2111 (if (equal? (car input) "maven-pom")
2112 `("maven-pom" ,maven-3.0-pom)
2114 (package-propagated-inputs maven-artifact)))
2116 `(#:jar-name "maven-model.jar"
2117 #:source-dir "maven-model/src/main/java"
2118 #:test-dir "maven-model/src/test"
2120 ((guix build ant-build-system)
2121 (guix build java-utils)
2122 (guix build syscalls)
2125 (modify-phases %standard-phases
2126 (add-after 'configure 'use-newer-model
2127 (lambda* (#:key inputs #:allow-other-keys)
2128 ;; The model has almost not changed, but the newer version is
2129 ;; needed to prevent an error in the newer modello we have
2130 (let ((source (assoc-ref inputs "maven-source"))
2131 (dir (mkdtemp! "maven-source-XXXXXXXX")))
2132 (with-directory-excursion dir
2133 (invoke "tar" "xf" source)
2134 (copy-file (car (find-files "." "maven.mdo"))
2135 "../maven-model/src/main/mdo/maven.mdo")))
2137 (add-before 'build 'generate-models
2138 (lambda* (#:key inputs #:allow-other-keys)
2139 (define (modello-single-mode file version mode)
2140 (invoke "java" "org.codehaus.modello.ModelloCli"
2141 file mode "maven-model/src/main/java" version
2142 "false" "true" "UTF-8"))
2143 (let ((file "maven-model/src/main/mdo/maven.mdo"))
2144 (modello-single-mode file "4.0.0" "java")
2145 (modello-single-mode file "4.0.0" "xpp3-reader")
2146 (modello-single-mode file "4.0.0" "xpp3-writer")
2147 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
2150 (install-from-pom "maven-model/pom.xml")))))
2152 `(("maven-source" ,(package-source maven-pom))
2153 ,@(package-inputs maven-model)))))
2155 (define-public maven-3.0-settings
2157 (inherit maven-settings)
2158 (version (package-version maven-3.0-pom))
2159 (source (package-source maven-3.0-pom))
2163 (if (equal? (car input) "maven-pom")
2164 `("maven-pom" ,maven-3.0-pom)
2166 (package-propagated-inputs maven-settings)))))
2168 (define-public maven-3.0-settings-builder
2170 (inherit maven-settings-builder)
2171 (version (package-version maven-3.0-pom))
2172 (source (package-source maven-3.0-pom))
2174 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2180 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2181 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
2182 ("maven-builder-support" #f)
2184 (package-propagated-inputs maven-settings-builder)))))))
2186 (define-public maven-3.0-model-builder
2188 (inherit maven-model-builder)
2189 (version (package-version maven-3.0-pom))
2190 (source (package-source maven-3.0-pom))
2192 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2198 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2199 ("maven-model" `("maven-model" ,maven-3.0-model))
2200 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2201 ("maven-builder-support" #f)
2203 (package-propagated-inputs maven-model-builder)))))))
2205 (define-public maven-3.0-plugin-api
2207 (inherit maven-plugin-api)
2208 (version (package-version maven-3.0-pom))
2209 (source (package-source maven-3.0-pom))
2211 (substitute-keyword-arguments (package-arguments maven-plugin-api)
2213 `(modify-phases ,phases
2214 (add-before 'install 'fix-pom
2216 (substitute* "maven-plugin-api/pom.xml"
2217 (("org.sonatype.sisu") "org.codehaus.plexus")
2218 (("sisu-inject-plexus") "plexus-container-default"))
2224 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2225 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2226 ("maven-model" `("maven-model" ,maven-3.0-model))
2228 (package-propagated-inputs maven-model-builder)))
2230 `(("java-plexus-container-default" ,java-plexus-container-default)
2231 ,@(package-native-inputs maven-plugin-api)))))
2233 (define-public maven-3.0-repository-metadata
2235 (inherit maven-repository-metadata)
2236 (version (package-version maven-3.0-pom))
2237 (source (package-source maven-3.0-pom))
2241 (if (equal? (car input) "maven-pom")
2242 `("maven-pom" ,maven-3.0-pom)
2244 (package-propagated-inputs maven-repository-metadata)))))
2246 (define-public maven-3.0-aether-provider
2248 (inherit maven-3.0-pom)
2249 (name "maven-aether-provider")
2251 `(#:jar-name "maven-aether-provider.jar"
2252 #:source-dir "maven-aether-provider/src/main/java"
2253 #:tests? #f; no tests in 3.0
2255 (modify-phases %standard-phases
2256 (add-after 'build 'generate-metadata
2258 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2259 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2260 "--source" "src/main/java"
2261 "--output" "build/classes/META-INF/plexus/components.xml"
2262 "--classes" "build/classes"
2263 "--descriptors" "build/classes/META-INF")
2265 (add-after 'generate-metadata 'rebuild
2267 (invoke "ant" "jar")
2270 (install-from-pom "maven-aether-provider/pom.xml")))))
2272 `(("maven-model" ,maven-3.0-model)
2273 ("maven-model-builder" ,maven-3.0-model-builder)
2274 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2275 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2276 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
2277 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2278 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
2279 ("java-plexus-utils" ,java-plexus-utils)
2280 ("maven-pom" ,maven-3.0-pom)))
2282 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)))))
2284 (define-public maven-3.0-core
2286 (inherit maven-core)
2287 (version (package-version maven-3.0-pom))
2288 (source (package-source maven-3.0-pom))
2290 `(#:jar-name "maven-core.jar"
2291 #:source-dir "src/main/java"
2294 (modify-phases %standard-phases
2295 (add-before 'configure 'chdir
2297 ;; Required for generating components.xml in maven-core
2298 (chdir "maven-core")
2300 (add-before 'build 'generate-models
2301 (lambda* (#:key inputs #:allow-other-keys)
2302 (define (modello-single-mode file version mode)
2303 (invoke "java" "org.codehaus.modello.ModelloCli"
2304 file mode "src/main/java" version
2305 "false" "true" "UTF-8"))
2306 (let ((file "src/main/mdo/toolchains.mdo"))
2307 (modello-single-mode file "1.0.0" "java")
2308 (modello-single-mode file "1.0.0" "xpp3-reader")
2309 (modello-single-mode file "1.0.0" "xpp3-writer"))
2311 (add-before 'build 'copy-resources
2313 (mkdir-p "build/classes/")
2314 (copy-recursively "src/main/resources" "build/classes")
2316 (add-after 'build 'generate-metadata
2318 (define (components file)
2319 (let ((sxml (with-input-from-file file
2320 (lambda _ (xml->sxml (current-input-port)
2321 #:trim-whitespace? #t)))))
2322 ;; Select the list of <component>s inside the <component-set>
2323 ;; and <components>.
2324 ((@ (ice-9 match) match) sxml
2328 ('components x ...))) x))))
2329 (use-modules (sxml simple))
2330 (delete-file "build/classes/META-INF/plexus/components.xml")
2331 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2332 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2333 "--source" "build/classes/META-INF/plexus"
2334 "--output" "build/classes/META-INF/plexus/components.t.xml"
2335 "--classes" "build/classes"
2336 "--descriptors" "build/classes")
2337 ;; Now we merge all other components from hand-written xml
2338 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
2339 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
2340 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
2341 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
2343 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
2347 ,@(append generated-xml components-xml
2348 artifact-handlers-xml)))))))
2350 (add-after 'generate-metadata 'rebuild
2352 (invoke "ant" "jar")
2354 (add-before 'install 'fix-pom
2356 (substitute* "pom.xml"
2357 (("org.sonatype.sisu") "org.codehaus.plexus")
2358 (("sisu-inject-plexus") "plexus-container-default"))
2361 (install-from-pom "pom.xml")))))
2363 `(("maven-model" ,maven-3.0-model)
2364 ("maven-settings" ,maven-3.0-settings)
2365 ("maven-settings-builder" ,maven-3.0-settings-builder)
2366 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2367 ("maven-artifact" ,maven-3.0-artifact)
2368 ("maven-model-builder" ,maven-3.0-model-builder)
2369 ("maven-aether-provider" ,maven-3.0-aether-provider)
2370 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2371 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2372 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
2373 ("java-plexus-interpolation" ,java-plexus-interpolation)
2374 ("java-plexus-utils" ,java-plexus-utils)
2375 ("java-plexus-classworlds" ,java-plexus-classworlds)
2376 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2377 ("java-plexus-container-default" ,java-plexus-container-default)
2378 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2379 ("maven-pom" ,maven-3.0-pom)))))
2381 (define-public maven-3.0-compat
2383 (inherit maven-compat)
2384 (version (package-version maven-3.0-pom))
2385 (source (package-source maven-3.0-pom))
2387 `(#:tests? #f ;require an old version of java-easymock
2388 ,@(substitute-keyword-arguments (package-arguments maven-compat)
2390 `(modify-phases ,phases
2391 (add-before 'install 'fix-pom
2393 (substitute* "pom.xml"
2394 (("org.sonatype.sisu") "org.codehaus.plexus")
2395 (("sisu-inject-plexus") "plexus-container-default"))
2397 (delete 'build-tests))))))
2399 `(("maven-model" ,maven-3.0-model)
2400 ("maven-model-builder" ,maven-3.0-model-builder)
2401 ("maven-settings" ,maven-3.0-settings)
2402 ("maven-settings-builder" ,maven-3.0-settings-builder)
2403 ("maven-artifact" ,maven-3.0-artifact)
2404 ("maven-core" ,maven-3.0-core)
2405 ("maven-aether-provider" ,maven-3.0-aether-provider)
2406 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2407 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2408 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
2409 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2410 ("java-plexus-utils" ,java-plexus-utils)
2411 ("java-plexus-interpolation" ,java-plexus-interpolation)
2412 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2413 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
2414 ("java-plexus-container-default" ,java-plexus-container-default)
2415 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
2416 ("maven-pom" ,maven-3.0-pom)))))
2418 (define-public maven-shared-utils-3.0
2420 (inherit maven-shared-utils)
2424 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2425 "maven-shared-utils-" version "-source-release.zip"))
2428 "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
2430 `(("maven-core" ,maven-3.0-core)
2431 ("maven-components-parent-pom" ,maven-components-parent-pom-21)
2432 ,@(package-propagated-inputs maven-shared-utils)))))
2434 (define-public maven-shared-io
2436 (name "maven-shared-io")
2440 (uri (string-append "mirror://apache/maven/shared/"
2441 "maven-shared-io-" version
2442 "-source-release.zip"))
2445 "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
2446 (build-system ant-build-system)
2448 `(#:jar-name "maven-shared-io.jar"
2449 #:source-dir "src/main/java"
2450 #:test-dir "src/test"
2452 (modify-phases %standard-phases
2453 (add-before 'build 'copy-resources
2455 (copy-recursively "src/main/resources" "build/classes/")
2456 (copy-recursively "src/test/resources" "build/test-classes/")
2459 (install-from-pom "pom.xml")))))
2461 `(("maven-artifact" ,maven-3.0-artifact)
2462 ("maven-compat" ,maven-3.0-compat)
2463 ("maven-plugin-api" ,maven-3.0-plugin-api)
2464 ("maven-shared-utils" ,maven-shared-utils)
2465 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
2466 ("java-plexus-utils" ,java-plexus-utils)
2467 ("maven-components-parent-pom" ,maven-components-parent-pom-22)))
2470 ("java-junit" ,java-junit)
2471 ("java-easymock" ,java-easymock)))
2472 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2473 (synopsis "Tree-based API for resolution of Maven project dependencies")
2474 (description "This package provides a tree-based API for resolution of
2475 Maven project dependencies.")
2476 (license license:asl2.0)))