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 java-sonatype-aether-test-util
420 (inherit java-sonatype-aether-api)
421 (name "java-sonatype-aether-test-util")
423 `(#:jar-name "java-sonatype-aether-test-util.jar"
424 #:source-dir "aether-test-util/src/main/java"
425 #:test-dir "aether-test-util/src/test"))
427 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
428 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)))
429 (synopsis "Utility classes for testing the maven repository system")
430 (description "This package contains a collection of utility classes to
431 ease testing of the repository system.")))
433 (define-public java-sonatype-aether-util
435 (inherit java-sonatype-aether-api)
436 (name "java-sonatype-aether-util")
438 `(#:jar-name "aether-util.jar"
439 #:source-dir "aether-util/src/main/java"
440 #:test-dir "aether-util/src/test"
442 (modify-phases %standard-phases
443 (replace 'install (install-from-pom "aether-util/pom.xml")))))
445 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
447 `(("java-junit" ,java-junit)
448 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))
449 (synopsis "Utility classes for the maven repository system")
450 (description "This package contains a collection of utility classes to
451 ease usage of the repository system.")))
453 (define-public java-sonatype-aether-impl
455 (inherit java-sonatype-aether-api)
456 (name "java-sonatype-aether-impl")
458 `(#:jar-name "aether-impl.jar"
459 #:source-dir "aether-impl/src/main/java"
460 #:test-dir "aether-impl/src/test"
462 (modify-phases %standard-phases
463 (add-before 'install 'fix-pom
465 (substitute* "aether-impl/pom.xml"
466 (("org.sonatype.sisu") "org.codehaus.plexus")
467 (("sisu-inject-plexus") "plexus-container-default"))
469 (add-after 'build 'generate-metadata
471 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
472 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
473 "--source" "src/main/java"
474 "--output" "build/classes/META-INF/plexus/components.xml"
475 "--classes" "build/classes"
476 "--descriptors" "build/classes/META-INF")
478 (add-after 'generate-metadata 'rebuild
482 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
484 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
485 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
486 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
487 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
488 ("java-plexus-container-default" ,java-plexus-container-default)
489 ("java-slf4j-api" ,java-slf4j-api)))
491 `(("java-junit" ,java-junit)
492 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
493 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))))
495 ;; Again, this old version is required by some maven plugins
496 (define-public java-eclipse-aether-api
498 (name "java-eclipse-aether-api")
503 (url "https://github.com/eclipse/aether-core")
504 (commit "aether-1.0.2.v20150114")))
505 (file-name (git-file-name name version))
508 "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
509 (build-system ant-build-system)
511 `(#:jar-name "aether-api.jar"
512 #:source-dir "aether-api/src/main/java"
513 #:test-dir "aether-api/src/test"
515 (modify-phases %standard-phases
516 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
517 (replace 'install (install-from-pom "aether-api/pom.xml")))))
518 (native-inputs `(("java-junit" ,java-junit)))
519 (home-page "https://github.com/sonatype/sonatype-aether")
520 (synopsis "Maven repository system API")
521 (description "This package contains the API for the maven repository system.")
522 (license license:asl2.0)))
524 (define-public java-eclipse-aether-spi
526 (inherit java-eclipse-aether-api)
527 (name "java-eclipse-aether-spi")
529 `(#:jar-name "aether-spi.jar"
530 #:source-dir "aether-spi/src/main/java"
531 #:test-dir "aether-spi/src/test"
533 (modify-phases %standard-phases
534 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
536 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
537 (synopsis "Maven repository system SPI")
538 (description "This package contains the service provider interface (SPI)
539 for repository system implementations and repository connectors.")))
541 (define-public java-eclipse-aether-test-util
543 (inherit java-eclipse-aether-api)
544 (name "java-eclipse-aether-test-util")
546 `(#:jar-name "aether-test-util.jar"
547 #:source-dir "aether-test-util/src/main/java"
548 #:test-dir "aether-test-util/src/test"
550 (modify-phases %standard-phases
551 (replace 'install (install-from-pom "aether-util/pom.xml")))))
553 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
554 ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)))
555 (synopsis "Utility classes for testing the maven repository system")
556 (description "This package contains a collection of utility classes to
557 ease testing of the repository system.")))
559 (define-public maven-shared-utils
561 (name "maven-shared-utils")
565 (uri (string-append "mirror://apache/maven/shared/"
566 "maven-shared-utils-" version "-source-release.zip"))
569 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
570 (build-system ant-build-system)
572 `(#:jar-name "maven-shared-utils.jar"
573 #:source-dir "src/main/java"
575 (modify-phases %standard-phases
576 (add-before 'build 'fix-/bin/sh-invocation
578 (substitute* (find-files "src" ".*.java$")
579 (("/bin/sh") (which "sh")))
581 (add-before 'check 'remove-cyclic-dep
584 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
587 (install-from-pom "pom.xml")))))
589 `(("java-jansi" ,java-jansi)
590 ("java-commons-io" ,java-commons-io)
591 ("java-jsr305" ,java-jsr305)
592 ("java-plexus-container-default" ,java-plexus-container-default)
593 ("maven-parent-pom-30" ,maven-parent-pom-30)))
596 ("java-junit" ,java-junit)
597 ("java-hamcrest-core" ,java-hamcrest-core)
598 ("java-commons-lang3" ,java-commons-lang3)))
599 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
600 (synopsis "Plexus-util replacement for maven")
601 (description "This project aims to be a functional replacement for
602 plexus-utils in Maven. It is not a 100% API compatible replacement but a
603 replacement with improvements.")
604 (license license:asl2.0)))
606 (define-public maven-plugin-annotations
608 (name "maven-plugin-annotations")
612 (uri (string-append "mirror://apache/maven/"
613 "plugin-tools/maven-plugin-tools-" version
614 "-source-release.zip"))
615 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
616 (build-system ant-build-system)
618 `(#:jar-name "maven-plugin-annotations.jar"
619 #:source-dir "maven-plugin-annotations/src/main/java"
622 `(("maven-artifact" ,maven-artifact)))
625 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
626 (synopsis "Java 5 annotations to use in Mojos")
627 (description "This package contains Java 5 annotations for use in Mojos.")
628 (license license:asl2.0)))
630 (define-public maven-wagon-provider-api
632 (name "maven-wagon-provider-api")
636 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
637 "wagon-" version "-source-release.zip"))
640 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
641 (build-system ant-build-system)
643 `(#:jar-name "maven-wagon-provider-api.jar"
644 #:source-dir "wagon-provider-api/src/main/java"
645 #:test-dir "wagon-provider-api/src/test"
647 (modify-phases %standard-phases
649 (install-from-pom "wagon-provider-api/pom.xml")))))
651 `(("java-plexus-utils" ,java-plexus-utils)
652 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
655 ("java-junit" ,java-junit)
656 ("java-easymock" ,java-easymock)))
657 (home-page "https://maven.apache.org/wagon")
658 (synopsis "Transport abstraction for Maven")
659 (description "Maven Wagon is a transport abstraction that is used in Maven's
660 artifact and repository handling code.")
661 (license license:asl2.0)))
663 (define maven-wagon-parent-pom
665 (inherit maven-wagon-provider-api)
669 (modify-phases %standard-phases
673 (install-pom-file "pom.xml")))))
675 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
677 `(("unzip" ,unzip)))))
679 (define-public maven-wagon-provider-test
681 (inherit maven-wagon-provider-api)
682 (name "maven-wagon-provider-test")
684 `(#:jar-name "maven-wagon-provider-test.jar"
685 #:source-dir "wagon-provider-test/src/main/java"
686 #:tests? #f; no tests
689 `(("java-plexus-utils" ,java-plexus-utils)
690 ("java-plexus-container-default" ,java-plexus-container-default)
691 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
692 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
693 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
694 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
695 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
696 ("java-slf4j-api" ,java-slf4j-api)
697 ("java-javaee-servletapi" ,java-javaee-servletapi)
698 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
699 (synopsis "Test classes from maven-wagon")
700 (description "Maven Wagon is a transport abstraction that is used in Maven's
701 artifact and repository handling code. This package contains common test
702 classes used in multiple maven-wagon components.")))
704 (define-public maven-wagon-file
706 (inherit maven-wagon-provider-api)
707 (name "maven-wagon-file")
709 `(#:jar-name "maven-wagon-file.jar"
710 #:source-dir "wagon-providers/wagon-file/src/main/java"
711 #:test-dir "wagon-providers/wagon-file/src/test"
714 (modify-phases %standard-phases
715 (add-before 'check 'fix-paths
717 ;; Tests assume they are run by maven, which copies test resources
718 ;; to target. Our ant-build-system does the same, but with the
720 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
721 (("target") "build"))
723 (add-after 'build 'generate-metadata
725 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
726 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
727 "--source" "wagon-providers/wagon-file/src/main/java"
728 "--output" "build/classes/META-INF/plexus/components.xml"
729 "--classes" "build/classes"
730 "--descriptors" "build/classes/META-INF")
732 (add-after 'generate-metadata 'rebuild
737 `(("java-plexus-utils" ,java-plexus-utils)
738 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
740 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
741 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
742 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
743 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
744 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
745 ("java-plexus-classworlds" ,java-plexus-classworlds)
746 ("java-guava" ,java-guava)
747 ("java-guice" ,java-guice)
748 ("java-javax-inject" ,java-javax-inject)
749 ("java-cglib" ,java-cglib)
750 ("java-slf4j-api" ,java-slf4j-api)
751 ("java-plexus-utils" ,java-plexus-utils)
752 ("java-plexus-cli" ,java-plexus-cli)
753 ("maven-plugin-api" ,maven-plugin-api)
754 ("maven-plugin-annotations" ,maven-plugin-annotations)
755 ("maven-core" ,maven-core)
756 ("maven-model" ,maven-model)
757 ("java-commons-cli" ,java-commons-cli)
758 ("java-qdox" ,java-qdox)
759 ("java-jdom2" ,java-jdom2)
760 ("java-asm" ,java-asm)
761 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
762 ,@(package-native-inputs maven-wagon-provider-api)))
763 (synopsis "Wagon provider that gets and puts artifacts using the file system")
764 (description "Maven Wagon is a transport abstraction that is used in Maven's
765 artifact and repository handling code. It uses providers, that are tools to
766 manage artifacts and deployment. This package contains the file provider which
767 gets and puts artifacts using the file system.")))
769 (define-public maven-wagon-tck-http
771 (inherit maven-wagon-provider-api)
772 (name "maven-wagon-tck-http")
774 `(#:jar-name "maven-wagon-tck-http.jar"
775 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
776 #:tests? #f; no tests
779 `(("java-plexus-util" ,java-plexus-utils)
780 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
781 ("java-javaee-servletapi" ,java-javaee-servletapi)
782 ("java-slf4j-api" ,java-slf4j-api)
783 ("java-commons-codec" ,java-commons-codec)
784 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
785 ("java-plexus-classworlds" ,java-plexus-classworlds)
786 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
787 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
788 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
789 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
790 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
791 (synopsis "Wagon HTTP Test Compatibility Kit")
792 (description "Maven Wagon is a transport abstraction that is used in Maven's
793 artifact and repository handling code. This package contains the HTTP
794 Test Compatibility Kit.")))
796 (define-public maven-wagon-http-shared
798 (inherit maven-wagon-provider-api)
799 (name "maven-wagon-http-shared")
801 `(#:jar-name "maven-wagon-http-shared.jar"
802 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
803 #:test-dir "wagon-providers/wagon-http-shared/src/test"
806 (modify-phases %standard-phases
807 (add-after 'build 'generate-metadata
809 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
810 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
811 "--source" "wagon-providers/wagon-http-shared/src/main/java"
812 "--output" "build/classes/META-INF/plexus/components.xml"
813 "--classes" "build/classes"
814 "--descriptors" "build/classes/META-INF")
816 (add-after 'generate-metadata 'rebuild
821 `(("java-plexus-utils" ,java-plexus-utils)
822 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
823 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
824 ("java-commons-io" ,java-commons-io)
825 ("java-jsoup" ,java-jsoup)
826 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
828 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
829 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
830 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
831 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
832 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
833 ("java-plexus-classworlds" ,java-plexus-classworlds)
834 ("java-guava" ,java-guava)
835 ("java-guice" ,java-guice)
836 ("java-javax-inject" ,java-javax-inject)
837 ("java-cglib" ,java-cglib)
838 ("java-slf4j-api" ,java-slf4j-api)
839 ("java-plexus-utils" ,java-plexus-utils)
840 ("java-plexus-cli" ,java-plexus-cli)
841 ("maven-plugin-api" ,maven-plugin-api)
842 ("maven-plugin-annotations" ,maven-plugin-annotations)
843 ("maven-core" ,maven-core)
844 ("maven-model" ,maven-model)
845 ("java-commons-cli" ,java-commons-cli)
846 ("java-qdox" ,java-qdox)
847 ("java-jdom2" ,java-jdom2)
848 ("java-asm" ,java-asm)
849 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
850 ,@(package-native-inputs maven-wagon-provider-api)))
851 (synopsis "Shared Library for wagon providers supporting HTTP.")
852 (description "Maven Wagon is a transport abstraction that is used in Maven's
853 artifact and repository handling code. It uses providers, that are tools to
854 manage artifacts and deployment. This package contains a shared library for
855 wagon providers supporting HTTP.")))
857 (define-public maven-wagon-http
859 (inherit maven-wagon-provider-api)
860 (name "maven-wagon-http")
862 `(#:jar-name "maven-wagon-http.jar"
863 #:source-dir "wagon-providers/wagon-http/src/main/java"
864 #:test-dir "wagon-providers/wagon-http/src/test"
867 ;; FIXME: javax.net.ssl.SSLHandshakeException:
868 ;; sun.security.validator.ValidatorException:
869 ;; PKIX path building failed:
870 ;; sun.security.provider.certpath.SunCertPathBuilderException:
871 ;; unable to find valid certification path to requested target
872 "**/HttpsWagonPreemptiveTest.java"
873 "**/HttpsWagonTest.java"
878 (modify-phases %standard-phases
879 (add-before 'build 'copy-resources
881 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
882 "build/classes/META-INF/plexus")
884 (add-before 'check 'fix-resource-path
886 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
887 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
888 (("src/test") "wagon-providers/wagon-http/src/test"))
891 `(("java-plexus-utils" ,java-plexus-utils)
892 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
893 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
894 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
895 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
896 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
898 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
899 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
900 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
901 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
902 ("java-plexus-container-default" ,java-plexus-container-default)
903 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
904 ("java-plexus-classworlds" ,java-plexus-classworlds)
905 ("java-guava" ,java-guava)
906 ("java-guice" ,java-guice)
907 ("java-inject" ,java-javax-inject)
908 ("java-cglib" ,java-cglib)
909 ("java-slf4j-api" ,java-slf4j-api)
910 ("java-plexus-utils" ,java-plexus-utils)
911 ("java-plexus-cli" ,java-plexus-cli)
912 ("maven-plugin-api" ,maven-plugin-api)
913 ("maven-plugin-annotations" ,maven-plugin-annotations)
914 ("maven-core" ,maven-core)
915 ("maven-model" ,maven-model)
916 ("java-commons-cli" ,java-commons-cli)
917 ("java-qdox" ,java-qdox)
918 ("java-jdom2" ,java-jdom2)
919 ("java-asm" ,java-asm)
920 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
921 ("java-javaee-servletapi" ,java-javaee-servletapi)
922 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
923 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
924 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
925 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
926 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
927 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
928 ("java-hamcrest-core" ,java-hamcrest-core)
929 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
930 ("java-commons-codec" ,java-commons-codec)
931 ("java-commons-io" ,java-commons-io)
932 ("java-jsoup" ,java-jsoup)
933 ("java-slf4j-simple" ,java-slf4j-simple)
934 ,@(package-native-inputs maven-wagon-provider-api)))
935 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
936 (description "Maven Wagon is a transport abstraction that is used in Maven's
937 artifact and repository handling code. It uses providers, that are tools to
938 manage artifacts and deployment. This package contains a Wagon provider that
939 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
947 (uri (string-append "mirror://apache/maven/"
948 "maven-3/" version "/source/"
949 "apache-maven-" version "-src.tar.gz"))
950 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
951 (modules '((guix build utils)))
954 (for-each delete-file (find-files "." "\\.jar$"))
957 (search-patches "maven-generate-component-xml.patch"
958 "maven-generate-javax-inject-named.patch"))))
959 (build-system ant-build-system)
963 (modify-phases %standard-phases
966 (add-before 'install 'fix-dependencies
968 (substitute* "pom.xml"
969 (("classWorldsVersion>.*")
971 "classWorldsVersion>"
972 ,(package-version java-plexus-classworlds)
973 "</classWorldsVersion>\n"))
974 (("commonsCliVersion>.*")
977 ,(package-version java-commons-cli)
978 "</commonsCliVersion>\n"))
979 (("commonsLangVersion>.*")
981 "commonsLangVersion>"
982 ,(package-version java-commons-lang3)
983 "</commonsLangVersion>\n"))
984 (("plexusUtilsVersion>.*")
986 "plexusUtilsVersion>"
987 ,(package-version java-plexus-utils)
988 "</plexusUtilsVersion>\n"))
989 (("plexusInterpolationVersion>.*")
991 "plexusInterpolationVersion>"
992 ,(package-version java-plexus-interpolation)
993 "</plexusInterpolationVersion>\n"))
997 ,(package-version java-guice)
998 "</guiceVersion>\n"))
999 (("sisuInjectVersion>.*")
1001 "sisuInjectVersion>"
1002 ,(package-version java-eclipse-sisu-inject)
1003 "</sisuInjectVersion>\n"))
1004 (("securityDispatcherVersion>.*")
1006 "securityDispatcherVersion>"
1007 ,(package-version java-plexus-sec-dispatcher)
1008 "</securityDispatcherVersion>\n"))
1009 (("cipherVersion>.*")
1012 ,(package-version java-plexus-cipher)
1013 "</cipherVersion>\n"))
1014 (("slf4jVersion>.*")
1017 ,(package-version java-slf4j-api)
1018 "</slf4jVersion>\n"))
1019 (("<classifier>no_aop</classifier>") ""))
1022 (install-pom-file "pom.xml")))))
1024 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
1025 (home-page "https://maven.apache.org/")
1026 (synopsis "Build system")
1027 (description "Apache Maven is a software project management and comprehension
1028 tool. This package contains the Maven pom file, used by all maven components.")
1029 (license license:asl2.0)))
1031 (define-public maven-artifact
1034 (name "maven-artifact")
1036 `(#:jar-name "maven-artifact.jar"
1037 #:source-dir "maven-artifact/src/main/java"
1038 #:test-dir "maven-artifact/src/test"
1039 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1041 (modify-phases %standard-phases
1043 (install-from-pom "maven-artifact/pom.xml")))))
1045 `(("java-plexus-utils" ,java-plexus-utils)
1046 ("java-commons-lang3" ,java-commons-lang3)
1047 ("maven-pom" ,maven-pom)))
1049 `(("java-junit" ,java-junit)))
1050 (description "Apache Maven is a software project management and comprehension
1051 tool. This package contains the Maven Artifact classes, providing the
1052 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1053 jar file is executable and provides a little tool to display how Maven parses
1054 and compares versions:")))
1056 (define-public maven-model
1058 (inherit maven-artifact)
1059 (name "maven-model")
1061 `(#:jar-name "maven-model.jar"
1062 #:source-dir "maven-model/src/main/java"
1063 #:test-dir "maven-model/src/test"
1065 (modify-phases %standard-phases
1066 (add-before 'build 'generate-models
1067 (lambda* (#:key inputs #:allow-other-keys)
1068 (define (modello-single-mode file version mode)
1069 (invoke "java" "org.codehaus.modello.ModelloCli"
1070 file mode "maven-model/src/main/java" version
1072 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1073 (modello-single-mode file "4.0.0" "java")
1074 (modello-single-mode file "4.0.0" "xpp3-reader")
1075 (modello-single-mode file "4.0.0" "xpp3-writer")
1076 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
1078 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1080 `(("java-commons-lang3" ,java-commons-lang3)
1081 ("java-plexus-utils" ,java-plexus-utils)
1082 ("maven-pom" ,maven-pom)))
1084 `(("java-modello-core" ,java-modello-core)
1086 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1087 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1088 ("java-guice" ,java-guice)
1089 ("java-cglib" ,java-cglib)
1090 ("java-asm" ,java-asm)
1091 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1092 ("java-javax-inject" ,java-javax-inject)
1093 ("java-plexus-classworlds" ,java-plexus-classworlds)
1094 ("java-guava" ,java-guava)
1095 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1096 ("java-sisu-build-api" ,java-sisu-build-api)
1098 ("java-modello-plugins-java" ,java-modello-plugins-java)
1099 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1100 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1102 ("java-junit" ,java-junit)))
1103 (description "Apache Maven is a software project management and comprehension
1104 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1105 so really just plain Java objects.")))
1107 (define-public maven-builder-support
1109 (inherit maven-artifact)
1110 (name "maven-builder-support")
1112 `(#:jar-name "maven-builder-support.jar"
1113 #:source-dir "maven-builder-support/src/main/java"
1115 #:test-dir "maven-builder-support/src/test"
1117 (modify-phases %standard-phases
1118 (add-before 'check 'fix-paths
1120 (with-directory-excursion "maven-builder-support/src/test/java"
1122 '("org/apache/maven/building/FileSourceTest.java"
1123 "org/apache/maven/building/UrlSourceTest.java")
1124 (("target/test-classes") "maven-builder-support/src/test/resources")))
1126 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1128 `(("maven-pom" ,maven-pom)))
1130 `(("java-junit" ,java-junit)))
1131 (description "Apache Maven is a software project management and comprehension
1132 tool. This package contains a support library for descriptor builders (model,
1133 setting, toolchains)")))
1135 (define-public maven-settings
1137 (inherit maven-artifact)
1138 (name "maven-settings")
1140 `(#:jar-name "maven-settings.jar"
1141 #:source-dir "maven-settings/src/main/java"
1142 #:tests? #f; no tests
1144 (modify-phases %standard-phases
1145 (add-before 'build 'generate-models
1146 (lambda* (#:key inputs #:allow-other-keys)
1147 (define (modello-single-mode file version mode)
1148 (invoke "java" "org.codehaus.modello.ModelloCli"
1149 file mode "maven-settings/src/main/java" version
1151 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1152 (modello-single-mode file "1.1.0" "java")
1153 (modello-single-mode file "1.1.0" "xpp3-reader")
1154 (modello-single-mode file "1.1.0" "xpp3-writer"))
1156 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1158 `(("java-plexus-utils" ,java-plexus-utils)
1159 ("maven-pom" ,maven-pom)))
1161 `(("java-modello-core" ,java-modello-core)
1163 ;("container" ,java-plexus-container-default)
1164 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1165 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1166 ("java-guice" ,java-guice)
1167 ("java-cglib" ,java-cglib)
1168 ("java-asm" ,java-asm)
1169 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1170 ("java-javax-inject" ,java-javax-inject)
1171 ("java-plexus-classworlds" ,java-plexus-classworlds)
1172 ("java-plexus-utils" ,java-plexus-utils)
1173 ("java-guava" ,java-guava)
1174 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1175 ("java-sisu-build-api" ,java-sisu-build-api)
1177 ("java-modello-plugins-java" ,java-modello-plugins-java)
1178 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1179 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1180 (description "Apache Maven is a software project management and comprehension
1181 tool. This package contains strictly the model for Maven settings, that is
1182 simply plain java objects.")))
1184 (define-public maven-settings-builder
1186 (inherit maven-artifact)
1187 (name "maven-settings-builder")
1189 `(#:jar-name "maven-settings-builder.jar"
1190 #:source-dir "maven-settings-builder/src/main/java"
1192 #:test-dir "maven-settings-builder/src/test"
1194 (modify-phases %standard-phases
1195 (add-before 'build 'generate-components.xml
1197 (mkdir-p "build/classes/META-INF/plexus")
1198 (chmod "components.sh" #o755)
1199 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1200 "build/classes/META-INF/plexus/components.xml")
1202 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1204 `(("java-plexus-utils" ,java-plexus-utils)
1205 ("java-plexus-interpolation" ,java-plexus-interpolation)
1206 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1207 ("maven-builder-support" ,maven-builder-support)
1208 ("maven-settings" ,maven-settings)
1209 ("maven-pom" ,maven-pom)))
1211 `(("java-junit" ,java-junit)
1212 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
1213 (description "Apache Maven is a software project management and comprehension
1214 tool. This package contains the effective model builder, with profile activation,
1215 inheritance, interpolation, @dots{}")))
1217 (define-public maven-model-builder
1219 (inherit maven-artifact)
1220 (name "maven-model-builder")
1222 `(#:jar-name "maven-model-builder.jar"
1223 #:source-dir "maven-model-builder/src/main/java"
1225 #:test-dir "maven-model-builder/src/test"
1227 (modify-phases %standard-phases
1228 (add-before 'build 'copy-resources
1230 (copy-recursively "maven-model-builder/src/main/resources"
1233 (add-before 'build 'generate-components.xml
1235 (mkdir-p "build/classes/META-INF/plexus")
1236 (chmod "components.sh" #o755)
1237 (invoke "./components.sh" "maven-model-builder/src/main/java"
1238 "build/classes/META-INF/plexus/components.xml")
1240 (add-before 'check 'fix-paths
1242 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1243 (("src/test") "maven-model-builder/src/test"))
1246 (install-from-pom "maven-model-builder/pom.xml")))))
1248 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1249 ("java-plexus-utils" ,java-plexus-utils)
1250 ("maven-artifact" ,maven-artifact)
1251 ("maven-builder-support" ,maven-builder-support)
1252 ("maven-model" ,maven-model)
1253 ("maven-pom" ,maven-pom)))
1255 `(("java-junit" ,java-junit)
1256 ("java-guava" ,java-guava)
1257 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1258 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1259 ("guice" ,java-guice)
1260 ("java-cglib" ,java-cglib)
1261 ("java-asm" ,java-asm)
1262 ("sisu-inject" ,java-eclipse-sisu-inject)
1263 ("javax-inject" ,java-javax-inject)
1264 ("java-xmlunit" ,java-xmlunit)
1265 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1266 ("xbean" ,java-geronimo-xbean-reflect)
1267 ("classworlds" ,java-plexus-classworlds)))
1268 (description "Apache Maven is a software project management and comprehension
1269 tool. This package contains the effective model builder, with profile activation,
1270 inheritance, interpolation, @dots{}")))
1272 (define-public maven-repository-metadata
1274 (inherit maven-artifact)
1275 (name "maven-repository-metadata")
1277 `(#:jar-name "maven-repository-metadata.jar"
1278 #:source-dir "maven-repository-metadata/src/main/java"
1280 #:tests? #f; no tests
1282 (modify-phases %standard-phases
1283 (add-before 'build 'generate-models
1284 (lambda* (#:key inputs #:allow-other-keys)
1285 (define (modello-single-mode file version mode)
1286 (invoke "java" "org.codehaus.modello.ModelloCli"
1287 file mode "maven-repository-metadata/src/main/java" version
1289 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1290 (modello-single-mode file "1.1.0" "java")
1291 (modello-single-mode file "1.1.0" "xpp3-reader")
1292 (modello-single-mode file "1.1.0" "xpp3-writer"))
1295 (install-from-pom "maven-repository-metadata/pom.xml")))))
1297 `(("java-plexus-utils" ,java-plexus-utils)
1298 ("maven-pom" ,maven-pom)))
1300 `(("modello" ,java-modello-core)
1302 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1303 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1304 ("java-guice" ,java-guice)
1305 ("java-cglib" ,java-cglib)
1306 ("java-asm" ,java-asm)
1307 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1308 ("java-javax-inject" ,java-javax-inject)
1309 ("java-plexus-utils" ,java-plexus-utils)
1310 ("java-plexus-classworlds" ,java-plexus-classworlds)
1311 ("java-guava" ,java-guava)
1312 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1313 ("java-sisu-build-api" ,java-sisu-build-api)
1315 ("java-modello-plugins-java" ,java-modello-plugins-java)
1316 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1317 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1318 (description "Apache Maven is a software project management and comprehension
1319 tool. This package contains strictly the model for Maven Repository Metadata,
1320 so really just plain objects.")))
1322 (define-public maven-resolver-provider
1324 (inherit maven-artifact)
1325 (name "maven-resolver-provider")
1327 `(#:jar-name "maven-resolver-provider.jar"
1328 #:source-dir "maven-resolver-provider/src/main/java"
1329 #:test-dir "maven-resolver-provider/src/test"
1331 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1333 (modify-phases %standard-phases
1334 (add-before 'build 'generate-sisu-named
1336 (mkdir-p "build/classes/META-INF/sisu")
1337 (chmod "./sisu.sh" #o755)
1338 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1339 "build/classes/META-INF/sisu/javax.inject.Named")
1342 (install-from-pom "maven-resolver-provider/pom.xml")))))
1344 `(("maven-model" ,maven-model)
1345 ("maven-model-builder" ,maven-model-builder)
1346 ("maven-resolver-spi" ,maven-resolver-spi)
1347 ("maven-resolver-api" ,maven-resolver-api)
1348 ("maven-resolver-impl" ,maven-resolver-impl)
1349 ("maven-resolver-util" ,maven-resolver-util)
1350 ("maven-builder-support" ,maven-builder-support)
1351 ("maven-repository-metadata" ,maven-repository-metadata)
1352 ("java-plexus-utils" ,java-plexus-utils)
1353 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1354 ("java-guice" ,java-guice)
1355 ("java-javax-inject" ,java-javax-inject)))))
1357 (define-public maven-plugin-api
1359 (inherit maven-artifact)
1360 (name "maven-plugin-api")
1362 `(#:jar-name "maven-plugin-api.jar"
1363 #:source-dir "maven-plugin-api/src/main/java"
1365 #:test-dir "maven-plugin-api/src/test"
1367 (modify-phases %standard-phases
1368 (add-before 'build 'generate-models
1369 (lambda* (#:key inputs #:allow-other-keys)
1370 (define (modello-single-mode file version mode)
1371 (invoke "java" "org.codehaus.modello.ModelloCli"
1372 file mode "maven-plugin-api/src/main/java" version
1374 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1375 (modello-single-mode file "1.0.0" "java")
1376 (modello-single-mode file "1.0.0" "xpp3-reader")
1377 (modello-single-mode file "1.0.0" "xpp3-writer"))
1380 (install-from-pom "maven-plugin-api/pom.xml")))))
1382 `(("maven-artifact" ,maven-artifact)
1383 ("maven-model" ,maven-model)
1384 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1385 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1386 ("guice" ,java-guice)
1387 ("java-cglib" ,java-cglib)
1388 ("java-asm" ,java-asm)
1389 ("sisu-inject" ,java-eclipse-sisu-inject)
1390 ("javax-inject" ,java-javax-inject)
1391 ("utils" ,java-plexus-utils)))
1393 `(("modello" ,java-modello-core)
1395 ("classworlds" ,java-plexus-classworlds)
1396 ("guava" ,java-guava)
1397 ("xbean" ,java-geronimo-xbean-reflect)
1398 ("build-api" ,java-sisu-build-api)
1400 ("java" ,java-modello-plugins-java)
1401 ("xml" ,java-modello-plugins-xml)
1402 ("xpp3" ,java-modello-plugins-xpp3)
1404 ("java-junit" ,java-junit)))
1405 (description "Apache Maven is a software project management and comprehension
1406 tool. This package contains strictly the API for plugins -- composed of goals
1407 implemented by Mojos -- development.
1409 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1410 generally generated from plugin sources using maven-plugin-plugin.")))
1412 (define maven-core-bootstrap
1414 (inherit maven-artifact)
1417 `(#:jar-name "maven-core.jar"
1418 #:source-dir "src/main/java"
1420 ;; Tests need maven-compat, which requires maven-core
1423 (modify-phases %standard-phases
1424 (add-before 'configure 'chdir
1426 ;; Required for generating components.xml in maven-core
1427 (chdir "maven-core")
1429 (add-before 'build 'copy-resources
1431 (mkdir-p "build/classes/")
1432 (copy-recursively "src/main/resources" "build/classes")
1434 (add-after 'copy-resources 'fill-properties
1436 ;; This file controls the output of some mvn subcommands, such as
1438 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1439 (("\\$\\{buildNumber\\}") "guix_build")
1440 (("\\$\\{timestamp\\}") "0")
1441 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1442 (("\\$\\{distributionId\\}") "apache-maven")
1443 (("\\$\\{distributionShortName\\}") "Maven")
1444 (("\\$\\{distributionName\\}") "Apache Maven"))
1446 (add-before 'build 'generate-sisu-named
1448 (mkdir-p "build/classes/META-INF/sisu")
1449 (chmod "../sisu.sh" #o755)
1450 (invoke "../sisu.sh" "src/main/java"
1451 "build/classes/META-INF/sisu/javax.inject.Named")
1453 (add-before 'build 'generate-models
1454 (lambda* (#:key inputs #:allow-other-keys)
1455 (define (modello-single-mode file version mode)
1456 (invoke "java" "org.codehaus.modello.ModelloCli"
1457 file mode "src/main/java" version
1459 (let ((file "src/main/mdo/toolchains.mdo"))
1460 (modello-single-mode file "1.1.0" "java")
1461 (modello-single-mode file "1.1.0" "xpp3-reader")
1462 (modello-single-mode file "1.1.0" "xpp3-writer"))
1464 (add-before 'install 'fix-pom
1466 (substitute* "pom.xml"
1467 (("<classifier>no_aop</classifier>") ""))
1470 (install-from-pom "pom.xml")))))
1472 `(("maven-artifact" ,maven-artifact)
1473 ("maven-resolver-provider" ,maven-resolver-provider)
1474 ("maven-builder-support" ,maven-builder-support)
1475 ("maven-model" ,maven-model)
1476 ("maven-model-builder" ,maven-model-builder)
1477 ("maven-settings" ,maven-settings)
1478 ("maven-settings-builder" ,maven-settings-builder)
1479 ("maven-plugin-api" ,maven-plugin-api)
1480 ("maven-repository-metadata" ,maven-repository-metadata)
1481 ("maven-shared-utils" ,maven-shared-utils)
1482 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1483 ("java-plexus-utils" ,java-plexus-utils)
1484 ("java-commons-lang3" ,java-commons-lang3)
1485 ("java-guava" ,java-guava)
1486 ("java-guice" ,java-guice)
1487 ("maven-resolver-api" ,maven-resolver-api)
1488 ("maven-resolver-spi" ,maven-resolver-spi)
1489 ("maven-resolver-util" ,maven-resolver-util)
1490 ("maven-resolver-impl" ,maven-resolver-impl)
1491 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1492 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1493 ("java-javax-inject" ,java-javax-inject)
1494 ("java-plexus-classworld" ,java-plexus-classworlds)))
1496 `(("java-modello-core" ,java-modello-core)
1497 ("java-cglib" ,java-cglib)
1498 ("java-asm" ,java-asm)
1499 ("java-plexus-classworlds" ,java-plexus-classworlds)
1500 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1501 ("java-sisu-build-api" ,java-sisu-build-api)
1502 ("java-modello-plugins-java" ,java-modello-plugins-java)
1503 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1504 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1506 ("java-junit" ,java-junit)
1507 ("java-mockito-1" ,java-mockito-1)
1508 ("java-commons-jxpath" ,java-commons-jxpath)))
1509 (description "Apache Maven is a software project management and comprehension
1510 tool. This package contains the maven core classes managing the whole build
1513 (define-public maven-core
1515 (inherit maven-core-bootstrap)
1517 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1519 `(modify-phases ,phases
1520 (add-before 'build 'modify-metainf
1522 (substitute* "build.xml"
1523 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
1525 (add-before 'build 'add-maven-files
1527 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1528 (copy-file "pom.xml"
1529 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1530 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1532 (format #t "version=~a~%
1533 groupId=org.apache.maven~%
1534 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1536 (add-after 'build 'generate-metadata
1538 (define (components file)
1539 (let ((sxml (with-input-from-file file
1540 (lambda _ (xml->sxml (current-input-port)
1541 #:trim-whitespace? #t)))))
1542 ;; Select the list of <component>s inside the <component-set>
1543 ;; and <components>.
1544 ((@ (ice-9 match) match) sxml
1548 ('components x ...))) x))))
1549 (use-modules (sxml simple))
1550 (delete-file "build/classes/META-INF/plexus/components.xml")
1551 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1552 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1553 "--source" "build/classes/META-INF/plexus"
1554 "--output" "build/classes/META-INF/plexus/components.t.xml"
1555 "--classes" "build/classes"
1556 "--descriptors" "build/classes")
1557 ;; Now we merge all other components from hand-written xml
1558 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1559 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1560 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1561 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1562 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1564 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1568 ,@(append generated-xml components-xml
1569 default-bindings-xml
1570 artifact-handlers-xml)))))))
1572 (add-after 'generate-metadata 'rebuild
1574 (invoke "ant" "jar")
1577 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1578 ("java-commons-cli" ,java-commons-cli)
1579 ("java-plexus-cli" ,java-plexus-cli)
1580 ("java-jdom2" ,java-jdom2)
1581 ("java-qdox" ,java-qdox)
1582 ("maven-core-boot" ,maven-core-bootstrap)
1583 ,@(package-native-inputs maven-core-bootstrap)))))
1585 (define-public maven-embedder
1587 (inherit maven-artifact)
1588 (name "maven-embedder")
1590 `(#:jar-name "maven-embedder.jar"
1591 #:source-dir "maven-embedder/src/main/java"
1592 #:test-dir "maven-embedder/src/test"
1593 #:test-exclude (list "**/MavenCliTest.java")
1596 (modify-phases %standard-phases
1597 (add-before 'build 'generate-sisu-named
1599 (mkdir-p "build/classes/META-INF/sisu")
1600 (chmod "sisu.sh" #o755)
1601 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1602 "build/classes/META-INF/sisu/javax.inject.Named")
1604 (add-before 'build 'generate-models
1605 (lambda* (#:key inputs #:allow-other-keys)
1606 (define (modello-single-mode file version mode)
1607 (invoke "java" "org.codehaus.modello.ModelloCli"
1608 file mode "maven-embedder/src/main/java" version
1610 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1611 (modello-single-mode file "1.0.0" "java")
1612 (modello-single-mode file "1.0.0" "xpp3-reader")
1613 (modello-single-mode file "1.0.0" "xpp3-writer"))
1615 (add-before 'check 'fix-test-paths
1617 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1618 (("target/test-classes") "build/test-classes"))
1620 (add-before 'check 'fix-test-compilation
1622 ;; Tests are in the java/ subdir. Other subdirectories contain
1623 ;; additional test plugins, with duplicate classes, so we can't
1624 ;; compile them. Also, they are meant to be built with maven, to
1625 ;; test its build process.
1626 (substitute* "build.xml"
1627 (("srcdir=\"maven-embedder/src/test\"")
1628 "srcdir=\"maven-embedder/src/test/java\""))
1631 (install-from-pom "maven-embedder/pom.xml")))))
1633 `(("maven-core" ,maven-core)
1634 ("maven-artifact" ,maven-artifact)
1635 ("maven-plugin-api" ,maven-plugin-api)
1636 ("maven-builder-support" ,maven-builder-support)
1637 ("maven-model" ,maven-model)
1638 ("maven-model-builder" ,maven-model-builder)
1639 ("maven-settings" ,maven-settings)
1640 ("maven-settings-builder" ,maven-settings-builder)
1641 ("maven-shared-utils" ,maven-shared-utils)
1642 ("java-plexus-classworlds" ,java-plexus-classworlds)
1643 ("java-plexus-util" ,java-plexus-utils)
1644 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1645 ("java-plexus-cipher" ,java-plexus-cipher)
1646 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1647 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1648 ("maven-resolevr-util" ,maven-resolver-util)
1649 ("maven-resolevr-api" ,maven-resolver-api)
1650 ("java-logback-core" ,java-logback-core)
1651 ("java-logback-classic" ,java-logback-classic)
1652 ("java-commons-cli" ,java-commons-cli)
1653 ("java-commons-io" ,java-commons-io)
1654 ("java-commons-lang3" ,java-commons-lang3)
1655 ("java-guava" ,java-guava)
1656 ("java-guice" ,java-guice)
1657 ("java-javax-inject" ,java-javax-inject)
1658 ("java-slf4j-api" ,java-slf4j-api)
1659 ("java-slf4j-simple" ,java-slf4j-simple)
1660 ("java-jsr250" ,java-jsr250)))
1662 `(("java-modello-core" ,java-modello-core)
1663 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1664 ("java-sisu-build-api" ,java-sisu-build-api)
1665 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1666 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1667 ("java-cglib" ,java-cglib)
1668 ("java-asm" ,java-asm)
1669 ("java-modello-plugins-java" ,java-modello-plugins-java)
1670 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1671 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1673 ("java-junit" ,java-junit)
1674 ("java-objenesis" ,java-objenesis)
1675 ("java-mockito-1" ,java-mockito-1)
1676 ("java-hamcrest-core" ,java-hamcrest-core)))
1677 (description "Apache Maven is a software project management and comprehension
1678 tool. This package contains a Maven embeddable component, with CLI and
1679 logging support.")))
1681 (define-public maven-compat
1683 (inherit maven-artifact)
1684 (name "maven-compat")
1686 `(#:jar-name "maven-compat.jar"
1687 #:source-dir "src/main/java"
1689 #:test-dir "src/test"
1691 (modify-phases %standard-phases
1692 ;; Tests assume we're in this directory
1693 (add-before 'configure 'chdir
1695 (chdir "maven-compat")
1697 (add-before 'build 'recreate-removed-jar
1699 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1701 (with-directory-excursion "src/test/resources"
1702 (with-output-to-file "artifact-install/artifact-1.0.jar"
1704 (format #t "dummy~%")))
1707 (with-output-to-file file
1709 (format #t "foo~%"))))
1710 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1711 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1712 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1713 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1714 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1715 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1716 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1717 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1718 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1719 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1720 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1721 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1722 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1723 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1724 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1725 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1726 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1727 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1728 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1729 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1730 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1731 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1732 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1733 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1734 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1735 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1736 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1737 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1738 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1739 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1740 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1741 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1742 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1743 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1744 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1745 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1746 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1747 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1748 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1749 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1750 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1751 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1752 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1753 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1754 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1755 (with-directory-excursion "local-repo/snapshot-test/jars"
1758 (with-output-to-file file
1761 (format #t "local"))))
1762 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1763 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1764 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1767 (with-directory-excursion
1768 (string-append "src/test/remote-repo/org/apache/maven/its/"
1770 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1773 (copy-file (string-append letter "-0.1.pom")
1774 (string-append dir "/pom.xml"))
1775 (with-output-to-file (string-append dir "/pom.properties")
1777 (format #t "version=0.1~%")
1778 (format #t "groupId=org.apache.maven.its")
1779 (format #t (string-append "artifactId=" letter))))
1780 (with-output-to-file "META-INF/MANIFEST.MF"
1782 (format #t "Manifest-Version: 1.0~%"))))
1783 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1784 (string-append letter "-0.1.jar") "META-INF")))
1787 (add-before 'build 'generate-models
1788 (lambda* (#:key inputs #:allow-other-keys)
1789 (define (modello-single-mode file version mode)
1790 (invoke "java" "org.codehaus.modello.ModelloCli"
1791 file mode "src/main/java" version
1793 (let ((file "src/main/mdo/profiles.mdo"))
1794 (modello-single-mode file "1.0.0" "java")
1795 (modello-single-mode file "1.0.0" "xpp3-reader")
1796 (modello-single-mode file "1.0.0" "xpp3-writer"))
1797 (let ((file "src/main/mdo/paramdoc.mdo"))
1798 (modello-single-mode file "1.0.0" "java")
1799 (modello-single-mode file "1.0.0" "xpp3-reader")
1800 (modello-single-mode file "1.0.0" "xpp3-writer"))
1802 (add-after 'build 'generate-metadata
1804 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1805 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1806 "--source" "src/main/java"
1807 "--output" "build/classes/META-INF/plexus/components.xml"
1808 "--classes" "build/classes"
1809 "--descriptors" "build/classes/META-INF")
1811 (add-before 'check 'build-tests
1813 (invoke "ant" "compile-tests")
1815 (add-after 'build-tests 'generate-test-metadata
1817 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1819 ":build/test-classes")
1820 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1821 "--source" "src/test/java"
1822 "--output" "build/test-classes/META-INF/plexus/components.xml"
1823 "--classes" "build/test-classes"
1824 "--descriptors" "build/test-classes/META-INF")
1826 (add-after 'generate-metadata 'rebuild
1828 (invoke "ant" "jar")
1831 (install-from-pom "pom.xml")))))
1833 `(("maven-artifact" ,maven-artifact)
1834 ("maven-repository-metadata" ,maven-repository-metadata)
1835 ("maven-builder-support" ,maven-builder-support)
1836 ("maven-model" ,maven-model)
1837 ("maven-model-builder" ,maven-model-builder)
1838 ("maven-settings" ,maven-settings)
1839 ("maven-settings-builder" ,maven-settings-builder)
1840 ("maven-core" ,maven-core)
1841 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1842 ("maven-wagon-file" ,maven-wagon-file)
1843 ("maven-resolver-api" ,maven-resolver-api)
1844 ("maven-resolver-util" ,maven-resolver-util)
1845 ("maven-resolver-spi" ,maven-resolver-spi)
1846 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1848 `(("java-modello-core" ,java-modello-core)
1849 ("java-plexus-utils" ,java-plexus-utils)
1850 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1851 ("java-plexus-classworlds" ,java-plexus-classworlds)
1852 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1853 ("java-sisu-build-api" ,java-sisu-build-api)
1854 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1855 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1856 ("java-javax-inject" ,java-javax-inject)
1857 ("java-guice" ,java-guice)
1858 ("java-guava" ,java-guava)
1859 ("java-cglib" ,java-cglib)
1860 ("java-asm" ,java-asm)
1861 ("java-modello-plugins-java" ,java-modello-plugins-java)
1862 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1863 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1865 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
1866 ("java-commons-cli" ,java-commons-cli)
1867 ("java-plexus-cli" ,java-plexus-cli)
1868 ("java-jdom2" ,java-jdom2)
1869 ("maven-plugin-api" ,maven-plugin-api)
1870 ("java-qdox" ,java-qdox)
1872 ("java-plexus-cipher" ,java-plexus-cipher)
1873 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1874 ("java-jsr250" ,java-jsr250)
1875 ("java-cdi-api" ,java-cdi-api)
1876 ("java-junit" ,java-junit)
1877 ("maven-resolver-impl" ,maven-resolver-impl)
1878 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1879 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1880 ("java-commons-lang3" ,java-commons-lang3)
1881 ("java-aop" ,java-aopalliance)
1882 ("maven-resolver-provider" ,maven-resolver-provider)
1883 ("java-slf4j-api" ,java-slf4j-api)
1884 ("java-slf4j-simple" ,java-slf4j-simple)
1885 ,@(package-inputs java-slf4j-api)))
1886 (description "Apache Maven is a software project management and comprehension
1887 tool. This package contains Maven2 classes maintained as compatibility
1888 layer for plugins that need to keep Maven2 compatibility.")))
1890 (define-public maven
1892 (inherit maven-artifact)
1896 (modify-phases %standard-phases
1898 (lambda* (#:key inputs #:allow-other-keys)
1899 ;; Recreate the configuration for the loader
1900 (with-output-to-file "apache-maven/src/bin/m2.conf"
1902 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1904 (format #t "set maven.conf default ${maven.home}/conf~%")
1906 (format #t "[plexus.core]~%")
1907 (format #t "load ${maven.conf}/logging~%")
1908 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1909 ;; Reference every jar so plexus-classworlds can find them.
1911 (lambda (dependency)
1914 (format #t "load ~a~%" file))
1915 (find-files (assoc-ref inputs dependency) ".*.jar$")))
1916 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1917 "maven-builder-support" "maven-model" "maven-model-builder"
1918 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1919 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1920 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1921 "maven-resolver-connector-basic" "maven-resolver-provider"
1922 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1923 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1924 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1925 "maven-wagon-http-shared" "maven-wagon-tck-http"
1926 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1927 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1928 "java-javax-inject" "java-plexus-component-annotations"
1929 "java-plexus-utils" "java-plexus-interpolation"
1930 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1931 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1932 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1933 "java-slf4j-simple"))))
1934 (substitute* "apache-maven/src/bin/mvn"
1939 (assoc-ref inputs "java-plexus-classworlds")
1942 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
1946 (lambda* (#:key outputs #:allow-other-keys)
1947 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
1948 (conf (string-append (assoc-ref outputs "out") "/conf/")))
1949 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
1950 (for-each (lambda (file)
1951 (install-file (string-append "apache-maven/src/bin/" file)
1953 (chmod (string-append bin file) #o755))
1954 '("mvn" "mvnDebug" "mvnyjp"))
1955 (install-file "apache-maven/src/bin/m2.conf" bin)
1956 (copy-recursively "apache-maven/src/conf" conf))
1959 `(("java-plexus-classworlds" ,java-plexus-classworlds)
1960 ("maven-artifact" ,maven-artifact)
1961 ("maven-embedder" ,maven-embedder)
1962 ("maven-core" ,maven-core)
1963 ("maven-compat" ,maven-compat)
1964 ("maven-builder-support" ,maven-builder-support)
1965 ("maven-model" ,maven-model)
1966 ("maven-model-builder" ,maven-model-builder)
1967 ("maven-settings" ,maven-settings)
1968 ("maven-settings-builder" ,maven-settings-builder)
1969 ("maven-plugin-api" ,maven-plugin-api)
1970 ("maven-repository-metadata" ,maven-repository-metadata)
1971 ("maven-shared-utils" ,maven-shared-utils)
1972 ("maven-resolver-api" ,maven-resolver-api)
1973 ("maven-resolver-spi" ,maven-resolver-spi)
1974 ("maven-resolver-util" ,maven-resolver-util)
1975 ("maven-resolver-impl" ,maven-resolver-impl)
1976 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1977 ("maven-resolver-provider" ,maven-resolver-provider)
1978 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1979 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1980 ("maven-wagon-file" ,maven-wagon-file)
1981 ("maven-wagon-http" ,maven-wagon-http)
1982 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1983 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
1984 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
1985 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
1986 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
1987 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1988 ("java-guice" ,java-guice)
1989 ("java-aopalliance" ,java-aopalliance)
1990 ("java-cglib" ,java-cglib)
1991 ("java-asm" ,java-asm)
1992 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1993 ("java-javax-inject" ,java-javax-inject)
1994 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1995 ("java-plexus-utils" ,java-plexus-utils)
1996 ("java-plexus-interpolation" ,java-plexus-interpolation)
1997 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1998 ("java-plexus-cipher" ,java-plexus-cipher)
1999 ("java-guava" ,java-guava)
2000 ("java-jansi" ,java-jansi)
2001 ("java-jsr250" ,java-jsr250)
2002 ("java-cdi-api" ,java-cdi-api)
2003 ("java-commons-cli" ,java-commons-cli)
2004 ("java-commons-io" ,java-commons-io)
2005 ("java-commons-lang3" ,java-commons-lang3)
2006 ("java-slf4j-api" ,java-slf4j-api)
2007 ;; TODO: replace with maven-slf4j-provider
2008 ("java-slf4j-simple" ,java-slf4j-simple)))
2010 `(("coreutils" ,coreutils)
2012 (description "Apache Maven is a software project management and comprehension
2013 tool. Based on the concept of a project object model: builds, dependency
2014 management, documentation creation, site publication, and distribution
2015 publication are all controlled from the @file{pom.xml} declarative file. Maven
2016 can be extended by plugins to utilise a number of other development tools for
2017 reporting or the build process.")))