ef5b5002c5c62133f8f818a4810fe98c8b253619
[jackhill/guix/guix.git] / gnu / packages / maven.scm
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>
6 ;;;
7 ;;; This file is part of GNU Guix.
8 ;;;
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.
13 ;;;
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.
18 ;;;
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/>.
21
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
37 (define-public java-plexus-component-metadata
38 (package
39 (inherit java-plexus-container-default)
40 (name "java-plexus-component-metadata")
41 (arguments
42 `(#:jar-name "plexus-component-metadata.jar"
43 #:source-dir "src/main/java"
44 #:test-dir "src/test"
45 #:jdk ,icedtea-8
46 #:phases
47 (modify-phases %standard-phases
48 (add-before 'configure 'chdir
49 (lambda _
50 (chdir "plexus-component-metadata")
51 #t))
52 (add-before 'build 'copy-resources
53 (lambda _
54 (copy-recursively "src/main/resources"
55 "build/classes/")
56 #t)))))
57 (inputs
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)))
71 (native-inputs
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.")))
81
82 (define-public maven-resolver-api
83 (package
84 (name "maven-resolver-api")
85 (version "1.3.1")
86 (source (origin
87 (method git-fetch)
88 (uri (git-reference
89 (url "https://github.com/apache/maven-resolver")
90 (commit (string-append "maven-resolver-" version))))
91 (file-name (git-file-name name version))
92 (sha256
93 (base32
94 "1x1gll8nkfl6zgnab78fxxvvhg42b2grxgdh1wp2h4qxsjkxg93d"))))
95 (build-system ant-build-system)
96 (arguments
97 `(#:jar-name "maven-resolver-api.jar"
98 #:source-dir "maven-resolver-api/src/main/java"
99 #:test-dir "maven-resolver-api/src/test"
100 #:phases
101 (modify-phases %standard-phases
102 (replace 'install
103 (install-from-pom "maven-resolver-api/pom.xml")))))
104 (native-inputs
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)))
111 (propagated-inputs
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)))
117
118 (define maven-resolver-parent-pom
119 (package
120 (inherit maven-resolver-api)
121 (name "maven-resolver-parent-pom")
122 (arguments
123 `(#:tests? #f
124 #:phases
125 (modify-phases %standard-phases
126 (delete 'configure)
127 (delete 'build)
128 (add-before 'install 'fix-pom
129 (lambda _
130 (substitute* "pom.xml"
131 (("<classifier>no_aop</classifier>") ""))
132 #t))
133 (replace 'install
134 (install-pom-file "pom.xml")))))
135 (propagated-inputs '())))
136
137 (define-public maven-resolver-spi
138 (package
139 (inherit maven-resolver-api)
140 (name "maven-resolver-spi")
141 (arguments
142 `(#:jar-name "maven-resolver-spi.jar"
143 #:source-dir "maven-resolver-spi/src/main/java"
144 #:test-dir "maven-resolver-spi/src/test"
145 #:phases
146 (modify-phases %standard-phases
147 (replace 'install
148 (install-from-pom "maven-resolver-spi/pom.xml")))))
149 (propagated-inputs
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.")))
154
155 (define-public maven-resolver-test-util
156 (package
157 (inherit maven-resolver-api)
158 (name "maven-resolver-test-util")
159 (arguments
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"
163 #:jdk ,icedtea-8))
164 (inputs
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.")))
170
171 (define-public maven-resolver-util
172 (package
173 (inherit maven-resolver-api)
174 (name "maven-resolver-util")
175 (arguments
176 `(#:jar-name "maven-resolver-util.jar"
177 #:source-dir "maven-resolver-util/src/main/java"
178 #:test-dir "maven-resolver-util/src/test"
179 #:phases
180 (modify-phases %standard-phases
181 (replace 'install
182 (install-from-pom "maven-resolver-util/pom.xml")))))
183 (propagated-inputs
184 `(("maven-resolver-api" ,maven-resolver-api)))
185 (native-inputs
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.")))
192
193 (define-public maven-resolver-connector-basic
194 (package
195 (inherit maven-resolver-api)
196 (name "maven-resolver-connector-basic")
197 (arguments
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"
201 #:jdk ,icedtea-8
202 #:phases
203 (modify-phases %standard-phases
204 (add-before 'build 'generate-sisu
205 (lambda _
206 (mkdir-p "build/classes/META-INF/sisu")
207 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
208 (lambda _
209 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
210 #t))
211 (replace 'install
212 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
213 (propagated-inputs
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)))
218 (native-inputs
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.")))
225
226 (define-public maven-resolver-impl
227 (package
228 (inherit maven-resolver-api)
229 (name "maven-resolver-impl")
230 (arguments
231 `(#:jar-name "maven-resolver-impl.jar"
232 #:source-dir "maven-resolver-impl/src/main/java"
233 #:test-dir "maven-resolver-impl/src/test"
234 #:phases
235 (modify-phases %standard-phases
236 (add-before 'build 'generate-sisu
237 (lambda _
238 (mkdir-p "build/classes/META-INF/sisu")
239 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
240 (lambda _
241 (display
242 (string-append
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"))))
267 #t))
268 (replace 'install
269 (install-from-pom "maven-resolver-impl/pom.xml")))))
270 (propagated-inputs
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)))
279 (native-inputs
280 `(("java-junit" ,java-junit)
281 ("maven-resolver-test-util" ,maven-resolver-test-util)))))
282
283 (define-public maven-resolver-transport-wagon
284 (package
285 (inherit maven-resolver-api)
286 (name "maven-resolver-transport-wagon")
287 (arguments
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"
291 #:jdk ,icedtea-8
292 #:phases
293 (modify-phases %standard-phases
294 (add-before 'build 'generate-sisu
295 (lambda _
296 (mkdir-p "build/classes/META-INF/sisu")
297 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
298 (lambda _
299 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
300 #t))
301 (add-before 'build 'generate-components.xml
302 (lambda _
303 (mkdir-p "build/classes/META-INF/plexus")
304 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
305 (lambda _
306 (display
307 (string-append
308 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
309 <component-set>
310 <components>
311 <component>
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>
315 <description />
316 <isolated-realm>false</isolated-realm>
317 <requirements>
318 <requirement>
319 <role>org.codehaus.plexus.PlexusContainer</role>
320 <role-hint />
321 <field-name>container</field-name>
322 </requirement>
323 </requirements>
324 </component>
325 <component>
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>
329 <description />
330 <isolated-realm>false</isolated-realm>
331 <requirements>
332 <requirement>
333 <role>org.codehaus.plexus.PlexusContainer</role>
334 <role-hint />
335 <field-name>container</field-name>
336 </requirement>
337 </requirements>
338 </component>
339 </components>
340 </component-set>\n"))))
341 #t)))))
342 (inputs
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)))
354 (native-inputs
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.")))
366
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
372 (package
373 (name "java-sonatype-aether-api")
374 (version "1.7")
375 (source (origin
376 (method git-fetch)
377 (uri (git-reference
378 (url "https://github.com/sonatype/sonatype-aether")
379 (commit (string-append "aether-" version))))
380 (file-name (git-file-name name version))
381 (sha256
382 (base32
383 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
384 (build-system ant-build-system)
385 (arguments
386 `(#:jar-name "aether-api.jar"
387 #:source-dir "aether-api/src/main/java"
388 #:test-dir "aether-api/src/test"
389 #:phases
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")))))
393 (propagated-inputs
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)))
400
401 (define-public java-sonatype-aether-spi
402 (package
403 (inherit java-sonatype-aether-api)
404 (name "java-sonatype-aether-spi")
405 (arguments
406 `(#:jar-name "aether-spi.jar"
407 #:source-dir "aether-spi/src/main/java"
408 #:tests? #f; no tests
409 #:phases
410 (modify-phases %standard-phases
411 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
412 (propagated-inputs
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.")))
417
418 (define-public maven-shared-utils
419 (package
420 (name "maven-shared-utils")
421 (version "3.2.1")
422 (source (origin
423 (method url-fetch)
424 (uri (string-append "mirror://apache/maven/shared/"
425 "maven-shared-utils-" version "-source-release.zip"))
426 (sha256
427 (base32
428 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
429 (build-system ant-build-system)
430 (arguments
431 `(#:jar-name "maven-shared-utils.jar"
432 #:source-dir "src/main/java"
433 #:phases
434 (modify-phases %standard-phases
435 (add-before 'build 'fix-/bin/sh-invocation
436 (lambda _
437 (substitute* (find-files "src" ".*.java$")
438 (("/bin/sh") (which "sh")))
439 #t))
440 (add-before 'check 'remove-cyclic-dep
441 (lambda _
442 (delete-file
443 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
444 #t))
445 (replace 'install
446 (install-from-pom "pom.xml")))))
447 (propagated-inputs
448 `(("java-jansi" ,java-jansi)
449 ("java-commons-io" ,java-commons-io)
450 ("java-jsr305" ,java-jsr305)
451 ("java-plexus-container-default" ,java-plexus-container-default)
452 ("maven-parent-pom-30" ,maven-parent-pom-30)))
453 (native-inputs
454 `(("unzip" ,unzip)
455 ("java-junit" ,java-junit)
456 ("java-hamcrest-core" ,java-hamcrest-core)
457 ("java-commons-lang3" ,java-commons-lang3)))
458 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
459 (synopsis "Plexus-util replacement for maven")
460 (description "This project aims to be a functional replacement for
461 plexus-utils in Maven. It is not a 100% API compatible replacement but a
462 replacement with improvements.")
463 (license license:asl2.0)))
464
465 (define-public maven-plugin-annotations
466 (package
467 (name "maven-plugin-annotations")
468 (version "3.5")
469 (source (origin
470 (method url-fetch)
471 (uri (string-append "mirror://apache/maven/"
472 "plugin-tools/maven-plugin-tools-" version
473 "-source-release.zip"))
474 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
475 (build-system ant-build-system)
476 (arguments
477 `(#:jar-name "maven-plugin-annotations.jar"
478 #:source-dir "maven-plugin-annotations/src/main/java"
479 #:tests? #f))
480 (inputs
481 `(("maven-artifact" ,maven-artifact)))
482 (native-inputs
483 `(("unzip" ,unzip)))
484 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
485 (synopsis "Java 5 annotations to use in Mojos")
486 (description "This package contains Java 5 annotations for use in Mojos.")
487 (license license:asl2.0)))
488
489 (define-public maven-wagon-provider-api
490 (package
491 (name "maven-wagon-provider-api")
492 (version "3.3.4")
493 (source (origin
494 (method url-fetch)
495 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
496 "wagon-" version "-source-release.zip"))
497 (sha256
498 (base32
499 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
500 (build-system ant-build-system)
501 (arguments
502 `(#:jar-name "maven-wagon-provider-api.jar"
503 #:source-dir "wagon-provider-api/src/main/java"
504 #:test-dir "wagon-provider-api/src/test"
505 #:phases
506 (modify-phases %standard-phases
507 (replace 'install
508 (install-from-pom "wagon-provider-api/pom.xml")))))
509 (propagated-inputs
510 `(("java-plexus-utils" ,java-plexus-utils)
511 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
512 (native-inputs
513 `(("unzip" ,unzip)
514 ("java-junit" ,java-junit)
515 ("java-easymock" ,java-easymock)))
516 (home-page "https://maven.apache.org/wagon")
517 (synopsis "Transport abstraction for Maven")
518 (description "Maven Wagon is a transport abstraction that is used in Maven's
519 artifact and repository handling code.")
520 (license license:asl2.0)))
521
522 (define maven-wagon-parent-pom
523 (package
524 (inherit maven-wagon-provider-api)
525 (arguments
526 `(#:tests? #f
527 #:phases
528 (modify-phases %standard-phases
529 (delete 'configure)
530 (delete 'build)
531 (replace 'install
532 (install-pom-file "pom.xml")))))
533 (propagated-inputs
534 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
535 (native-inputs
536 `(("unzip" ,unzip)))))
537
538 (define-public maven-wagon-provider-test
539 (package
540 (inherit maven-wagon-provider-api)
541 (name "maven-wagon-provider-test")
542 (arguments
543 `(#:jar-name "maven-wagon-provider-test.jar"
544 #:source-dir "wagon-provider-test/src/main/java"
545 #:tests? #f; no tests
546 #:jdk ,icedtea-8))
547 (inputs
548 `(("java-plexus-utils" ,java-plexus-utils)
549 ("java-plexus-container-default" ,java-plexus-container-default)
550 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
551 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
552 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
553 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
554 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
555 ("java-slf4j-api" ,java-slf4j-api)
556 ("java-javaee-servletapi" ,java-javaee-servletapi)
557 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
558 (synopsis "Test classes from maven-wagon")
559 (description "Maven Wagon is a transport abstraction that is used in Maven's
560 artifact and repository handling code. This package contains common test
561 classes used in multiple maven-wagon components.")))
562
563 (define-public maven-wagon-file
564 (package
565 (inherit maven-wagon-provider-api)
566 (name "maven-wagon-file")
567 (arguments
568 `(#:jar-name "maven-wagon-file.jar"
569 #:source-dir "wagon-providers/wagon-file/src/main/java"
570 #:test-dir "wagon-providers/wagon-file/src/test"
571 #:jdk ,icedtea-8
572 #:phases
573 (modify-phases %standard-phases
574 (add-before 'check 'fix-paths
575 (lambda _
576 ;; Tests assume they are run by maven, which copies test resources
577 ;; to target. Our ant-build-system does the same, but with the
578 ;; build directory.
579 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
580 (("target") "build"))
581 #t))
582 (add-after 'build 'generate-metadata
583 (lambda _
584 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
585 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
586 "--source" "wagon-providers/wagon-file/src/main/java"
587 "--output" "build/classes/META-INF/plexus/components.xml"
588 "--classes" "build/classes"
589 "--descriptors" "build/classes/META-INF")
590 #t))
591 (add-after 'generate-metadata 'rebuild
592 (lambda _
593 (invoke "ant" "jar")
594 #t)))))
595 (inputs
596 `(("java-plexus-utils" ,java-plexus-utils)
597 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
598 (native-inputs
599 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
600 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
601 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
602 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
603 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
604 ("java-plexus-classworlds" ,java-plexus-classworlds)
605 ("java-guava" ,java-guava)
606 ("java-guice" ,java-guice)
607 ("java-javax-inject" ,java-javax-inject)
608 ("java-cglib" ,java-cglib)
609 ("java-slf4j-api" ,java-slf4j-api)
610 ("java-plexus-utils" ,java-plexus-utils)
611 ("java-plexus-cli" ,java-plexus-cli)
612 ("maven-plugin-api" ,maven-plugin-api)
613 ("maven-plugin-annotations" ,maven-plugin-annotations)
614 ("maven-core" ,maven-core)
615 ("maven-model" ,maven-model)
616 ("java-commons-cli" ,java-commons-cli)
617 ("java-qdox" ,java-qdox)
618 ("java-jdom2" ,java-jdom2)
619 ("java-asm" ,java-asm)
620 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
621 ,@(package-native-inputs maven-wagon-provider-api)))
622 (synopsis "Wagon provider that gets and puts artifacts using the file system")
623 (description "Maven Wagon is a transport abstraction that is used in Maven's
624 artifact and repository handling code. It uses providers, that are tools to
625 manage artifacts and deployment. This package contains the file provider which
626 gets and puts artifacts using the file system.")))
627
628 (define-public maven-wagon-tck-http
629 (package
630 (inherit maven-wagon-provider-api)
631 (name "maven-wagon-tck-http")
632 (arguments
633 `(#:jar-name "maven-wagon-tck-http.jar"
634 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
635 #:tests? #f; no tests
636 #:jdk ,icedtea-8))
637 (inputs
638 `(("java-plexus-util" ,java-plexus-utils)
639 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
640 ("java-javaee-servletapi" ,java-javaee-servletapi)
641 ("java-slf4j-api" ,java-slf4j-api)
642 ("java-commons-codec" ,java-commons-codec)
643 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
644 ("java-plexus-classworlds" ,java-plexus-classworlds)
645 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
646 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
647 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
648 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
649 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
650 (synopsis "Wagon HTTP Test Compatibility Kit")
651 (description "Maven Wagon is a transport abstraction that is used in Maven's
652 artifact and repository handling code. This package contains the HTTP
653 Test Compatibility Kit.")))
654
655 (define-public maven-wagon-http-shared
656 (package
657 (inherit maven-wagon-provider-api)
658 (name "maven-wagon-http-shared")
659 (arguments
660 `(#:jar-name "maven-wagon-http-shared.jar"
661 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
662 #:test-dir "wagon-providers/wagon-http-shared/src/test"
663 #:jdk ,icedtea-8
664 #:phases
665 (modify-phases %standard-phases
666 (add-after 'build 'generate-metadata
667 (lambda _
668 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
669 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
670 "--source" "wagon-providers/wagon-http-shared/src/main/java"
671 "--output" "build/classes/META-INF/plexus/components.xml"
672 "--classes" "build/classes"
673 "--descriptors" "build/classes/META-INF")
674 #t))
675 (add-after 'generate-metadata 'rebuild
676 (lambda _
677 (invoke "ant" "jar")
678 #t)))))
679 (inputs
680 `(("java-plexus-utils" ,java-plexus-utils)
681 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
682 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
683 ("java-commons-io" ,java-commons-io)
684 ("java-jsoup" ,java-jsoup)
685 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
686 (native-inputs
687 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
688 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
689 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
690 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
691 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
692 ("java-plexus-classworlds" ,java-plexus-classworlds)
693 ("java-guava" ,java-guava)
694 ("java-guice" ,java-guice)
695 ("java-javax-inject" ,java-javax-inject)
696 ("java-cglib" ,java-cglib)
697 ("java-slf4j-api" ,java-slf4j-api)
698 ("java-plexus-utils" ,java-plexus-utils)
699 ("java-plexus-cli" ,java-plexus-cli)
700 ("maven-plugin-api" ,maven-plugin-api)
701 ("maven-plugin-annotations" ,maven-plugin-annotations)
702 ("maven-core" ,maven-core)
703 ("maven-model" ,maven-model)
704 ("java-commons-cli" ,java-commons-cli)
705 ("java-qdox" ,java-qdox)
706 ("java-jdom2" ,java-jdom2)
707 ("java-asm" ,java-asm)
708 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
709 ,@(package-native-inputs maven-wagon-provider-api)))
710 (synopsis "Shared Library for wagon providers supporting HTTP.")
711 (description "Maven Wagon is a transport abstraction that is used in Maven's
712 artifact and repository handling code. It uses providers, that are tools to
713 manage artifacts and deployment. This package contains a shared library for
714 wagon providers supporting HTTP.")))
715
716 (define-public maven-wagon-http
717 (package
718 (inherit maven-wagon-provider-api)
719 (name "maven-wagon-http")
720 (arguments
721 `(#:jar-name "maven-wagon-http.jar"
722 #:source-dir "wagon-providers/wagon-http/src/main/java"
723 #:test-dir "wagon-providers/wagon-http/src/test"
724 #:test-exclude (list
725 "**/Abstract*.java"
726 ;; FIXME: javax.net.ssl.SSLHandshakeException:
727 ;; sun.security.validator.ValidatorException:
728 ;; PKIX path building failed:
729 ;; sun.security.provider.certpath.SunCertPathBuilderException:
730 ;; unable to find valid certification path to requested target
731 "**/HttpsWagonPreemptiveTest.java"
732 "**/HttpsWagonTest.java"
733 ;; Injection errors
734 "**/TckTest.java")
735 #:jdk ,icedtea-8
736 #:phases
737 (modify-phases %standard-phases
738 (add-before 'build 'copy-resources
739 (lambda _
740 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
741 "build/classes/META-INF/plexus")
742 #t))
743 (add-before 'check 'fix-resource-path
744 (lambda _
745 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
746 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
747 (("src/test") "wagon-providers/wagon-http/src/test"))
748 #t)))))
749 (inputs
750 `(("java-plexus-utils" ,java-plexus-utils)
751 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
752 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
753 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
754 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
755 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
756 (native-inputs
757 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
758 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
759 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
760 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
761 ("java-plexus-container-default" ,java-plexus-container-default)
762 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
763 ("java-plexus-classworlds" ,java-plexus-classworlds)
764 ("java-guava" ,java-guava)
765 ("java-guice" ,java-guice)
766 ("java-inject" ,java-javax-inject)
767 ("java-cglib" ,java-cglib)
768 ("java-slf4j-api" ,java-slf4j-api)
769 ("java-plexus-utils" ,java-plexus-utils)
770 ("java-plexus-cli" ,java-plexus-cli)
771 ("maven-plugin-api" ,maven-plugin-api)
772 ("maven-plugin-annotations" ,maven-plugin-annotations)
773 ("maven-core" ,maven-core)
774 ("maven-model" ,maven-model)
775 ("java-commons-cli" ,java-commons-cli)
776 ("java-qdox" ,java-qdox)
777 ("java-jdom2" ,java-jdom2)
778 ("java-asm" ,java-asm)
779 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
780 ("java-javaee-servletapi" ,java-javaee-servletapi)
781 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
782 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
783 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
784 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
785 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
786 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
787 ("java-hamcrest-core" ,java-hamcrest-core)
788 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
789 ("java-commons-codec" ,java-commons-codec)
790 ("java-commons-io" ,java-commons-io)
791 ("java-jsoup" ,java-jsoup)
792 ("java-slf4j-simple" ,java-slf4j-simple)
793 ,@(package-native-inputs maven-wagon-provider-api)))
794 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
795 (description "Maven Wagon is a transport abstraction that is used in Maven's
796 artifact and repository handling code. It uses providers, that are tools to
797 manage artifacts and deployment. This package contains a Wagon provider that
798 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
799
800 (define maven-pom
801 (package
802 (name "maven-pom")
803 (version "3.6.1")
804 (source (origin
805 (method url-fetch)
806 (uri (string-append "mirror://apache/maven/"
807 "maven-3/" version "/source/"
808 "apache-maven-" version "-src.tar.gz"))
809 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
810 (modules '((guix build utils)))
811 (snippet
812 '(begin
813 (for-each delete-file (find-files "." "\\.jar$"))
814 #t))
815 (patches
816 (search-patches "maven-generate-component-xml.patch"
817 "maven-generate-javax-inject-named.patch"))))
818 (build-system ant-build-system)
819 (arguments
820 `(#:tests? #f
821 #:phases
822 (modify-phases %standard-phases
823 (delete 'configure)
824 (delete 'build)
825 (add-before 'install 'fix-dependencies
826 (lambda _
827 (substitute* "pom.xml"
828 (("classWorldsVersion>.*")
829 (string-append
830 "classWorldsVersion>"
831 ,(package-version java-plexus-classworlds)
832 "</classWorldsVersion>\n"))
833 (("commonsCliVersion>.*")
834 (string-append
835 "commonsCliVersion>"
836 ,(package-version java-commons-cli)
837 "</commonsCliVersion>\n"))
838 (("commonsLangVersion>.*")
839 (string-append
840 "commonsLangVersion>"
841 ,(package-version java-commons-lang3)
842 "</commonsLangVersion>\n"))
843 (("plexusUtilsVersion>.*")
844 (string-append
845 "plexusUtilsVersion>"
846 ,(package-version java-plexus-utils)
847 "</plexusUtilsVersion>\n"))
848 (("plexusInterpolationVersion>.*")
849 (string-append
850 "plexusInterpolationVersion>"
851 ,(package-version java-plexus-interpolation)
852 "</plexusInterpolationVersion>\n"))
853 (("guiceVersion>.*")
854 (string-append
855 "guiceVersion>"
856 ,(package-version java-guice)
857 "</guiceVersion>\n"))
858 (("sisuInjectVersion>.*")
859 (string-append
860 "sisuInjectVersion>"
861 ,(package-version java-eclipse-sisu-inject)
862 "</sisuInjectVersion>\n"))
863 (("securityDispatcherVersion>.*")
864 (string-append
865 "securityDispatcherVersion>"
866 ,(package-version java-plexus-sec-dispatcher)
867 "</securityDispatcherVersion>\n"))
868 (("cipherVersion>.*")
869 (string-append
870 "cipherVersion>"
871 ,(package-version java-plexus-cipher)
872 "</cipherVersion>\n"))
873 (("slf4jVersion>.*")
874 (string-append
875 "slf4jVersion>"
876 ,(package-version java-slf4j-api)
877 "</slf4jVersion>\n"))
878 (("<classifier>no_aop</classifier>") ""))
879 #t))
880 (replace 'install
881 (install-pom-file "pom.xml")))))
882 (propagated-inputs
883 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
884 (home-page "https://maven.apache.org/")
885 (synopsis "Build system")
886 (description "Apache Maven is a software project management and comprehension
887 tool. This package contains the Maven pom file, used by all maven components.")
888 (license license:asl2.0)))
889
890 (define-public maven-artifact
891 (package
892 (inherit maven-pom)
893 (name "maven-artifact")
894 (arguments
895 `(#:jar-name "maven-artifact.jar"
896 #:source-dir "maven-artifact/src/main/java"
897 #:test-dir "maven-artifact/src/test"
898 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
899 #:phases
900 (modify-phases %standard-phases
901 (replace 'install
902 (install-from-pom "maven-artifact/pom.xml")))))
903 (propagated-inputs
904 `(("java-plexus-utils" ,java-plexus-utils)
905 ("java-commons-lang3" ,java-commons-lang3)
906 ("maven-pom" ,maven-pom)))
907 (native-inputs
908 `(("java-junit" ,java-junit)))
909 (description "Apache Maven is a software project management and comprehension
910 tool. This package contains the Maven Artifact classes, providing the
911 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
912 jar file is executable and provides a little tool to display how Maven parses
913 and compares versions:")))
914
915 (define-public maven-model
916 (package
917 (inherit maven-artifact)
918 (name "maven-model")
919 (arguments
920 `(#:jar-name "maven-model.jar"
921 #:source-dir "maven-model/src/main/java"
922 #:test-dir "maven-model/src/test"
923 #:phases
924 (modify-phases %standard-phases
925 (add-before 'build 'generate-models
926 (lambda* (#:key inputs #:allow-other-keys)
927 (define (modello-single-mode file version mode)
928 (invoke "java" "org.codehaus.modello.ModelloCli"
929 file mode "maven-model/src/main/java" version
930 "false" "true"))
931 (let ((file "maven-model/src/main/mdo/maven.mdo"))
932 (modello-single-mode file "4.0.0" "java")
933 (modello-single-mode file "4.0.0" "xpp3-reader")
934 (modello-single-mode file "4.0.0" "xpp3-writer")
935 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
936 #t))
937 (replace 'install (install-from-pom "maven-model/pom.xml")))))
938 (propagated-inputs
939 `(("java-commons-lang3" ,java-commons-lang3)
940 ("java-plexus-utils" ,java-plexus-utils)
941 ("maven-pom" ,maven-pom)))
942 (native-inputs
943 `(("java-modello-core" ,java-modello-core)
944 ;; for modello:
945 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
946 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
947 ("java-guice" ,java-guice)
948 ("java-cglib" ,java-cglib)
949 ("java-asm" ,java-asm)
950 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
951 ("java-javax-inject" ,java-javax-inject)
952 ("java-plexus-classworlds" ,java-plexus-classworlds)
953 ("java-guava" ,java-guava)
954 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
955 ("java-sisu-build-api" ,java-sisu-build-api)
956 ;; modello plugins:
957 ("java-modello-plugins-java" ,java-modello-plugins-java)
958 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
959 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
960 ;; for tests
961 ("java-junit" ,java-junit)))
962 (description "Apache Maven is a software project management and comprehension
963 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
964 so really just plain Java objects.")))
965
966 (define-public maven-builder-support
967 (package
968 (inherit maven-artifact)
969 (name "maven-builder-support")
970 (arguments
971 `(#:jar-name "maven-builder-support.jar"
972 #:source-dir "maven-builder-support/src/main/java"
973 #:jdk ,icedtea-8
974 #:test-dir "maven-builder-support/src/test"
975 #:phases
976 (modify-phases %standard-phases
977 (add-before 'check 'fix-paths
978 (lambda _
979 (with-directory-excursion "maven-builder-support/src/test/java"
980 (substitute*
981 '("org/apache/maven/building/FileSourceTest.java"
982 "org/apache/maven/building/UrlSourceTest.java")
983 (("target/test-classes") "maven-builder-support/src/test/resources")))
984 #t))
985 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
986 (propagated-inputs
987 `(("maven-pom" ,maven-pom)))
988 (native-inputs
989 `(("java-junit" ,java-junit)))
990 (description "Apache Maven is a software project management and comprehension
991 tool. This package contains a support library for descriptor builders (model,
992 setting, toolchains)")))
993
994 (define-public maven-settings
995 (package
996 (inherit maven-artifact)
997 (name "maven-settings")
998 (arguments
999 `(#:jar-name "maven-settings.jar"
1000 #:source-dir "maven-settings/src/main/java"
1001 #:tests? #f; no tests
1002 #:phases
1003 (modify-phases %standard-phases
1004 (add-before 'build 'generate-models
1005 (lambda* (#:key inputs #:allow-other-keys)
1006 (define (modello-single-mode file version mode)
1007 (invoke "java" "org.codehaus.modello.ModelloCli"
1008 file mode "maven-settings/src/main/java" version
1009 "false" "true"))
1010 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1011 (modello-single-mode file "1.1.0" "java")
1012 (modello-single-mode file "1.1.0" "xpp3-reader")
1013 (modello-single-mode file "1.1.0" "xpp3-writer"))
1014 #t))
1015 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1016 (propagated-inputs
1017 `(("java-plexus-utils" ,java-plexus-utils)
1018 ("maven-pom" ,maven-pom)))
1019 (native-inputs
1020 `(("java-modello-core" ,java-modello-core)
1021 ;; for modello:
1022 ;("container" ,java-plexus-container-default)
1023 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1024 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1025 ("java-guice" ,java-guice)
1026 ("java-cglib" ,java-cglib)
1027 ("java-asm" ,java-asm)
1028 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1029 ("java-javax-inject" ,java-javax-inject)
1030 ("java-plexus-classworlds" ,java-plexus-classworlds)
1031 ("java-plexus-utils" ,java-plexus-utils)
1032 ("java-guava" ,java-guava)
1033 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1034 ("java-sisu-build-api" ,java-sisu-build-api)
1035 ;; modello plugins:
1036 ("java-modello-plugins-java" ,java-modello-plugins-java)
1037 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1038 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1039 (description "Apache Maven is a software project management and comprehension
1040 tool. This package contains strictly the model for Maven settings, that is
1041 simply plain java objects.")))
1042
1043 (define-public maven-settings-builder
1044 (package
1045 (inherit maven-artifact)
1046 (name "maven-settings-builder")
1047 (arguments
1048 `(#:jar-name "maven-settings-builder.jar"
1049 #:source-dir "maven-settings-builder/src/main/java"
1050 #:jdk ,icedtea-8
1051 #:test-dir "maven-settings-builder/src/test"
1052 #:phases
1053 (modify-phases %standard-phases
1054 (add-before 'build 'generate-components.xml
1055 (lambda _
1056 (mkdir-p "build/classes/META-INF/plexus")
1057 (chmod "components.sh" #o755)
1058 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1059 "build/classes/META-INF/plexus/components.xml")
1060 #t))
1061 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1062 (propagated-inputs
1063 `(("java-plexus-utils" ,java-plexus-utils)
1064 ("java-plexus-interpolation" ,java-plexus-interpolation)
1065 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1066 ("maven-builder-support" ,maven-builder-support)
1067 ("maven-settings" ,maven-settings)
1068 ("maven-pom" ,maven-pom)))
1069 (native-inputs
1070 `(("java-junit" ,java-junit)
1071 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
1072 (description "Apache Maven is a software project management and comprehension
1073 tool. This package contains the effective model builder, with profile activation,
1074 inheritance, interpolation, @dots{}")))
1075
1076 (define-public maven-model-builder
1077 (package
1078 (inherit maven-artifact)
1079 (name "maven-model-builder")
1080 (arguments
1081 `(#:jar-name "maven-model-builder.jar"
1082 #:source-dir "maven-model-builder/src/main/java"
1083 #:jdk ,icedtea-8
1084 #:test-dir "maven-model-builder/src/test"
1085 #:phases
1086 (modify-phases %standard-phases
1087 (add-before 'build 'copy-resources
1088 (lambda _
1089 (copy-recursively "maven-model-builder/src/main/resources"
1090 "build/classes")
1091 #t))
1092 (add-before 'build 'generate-components.xml
1093 (lambda _
1094 (mkdir-p "build/classes/META-INF/plexus")
1095 (chmod "components.sh" #o755)
1096 (invoke "./components.sh" "maven-model-builder/src/main/java"
1097 "build/classes/META-INF/plexus/components.xml")
1098 #t))
1099 (add-before 'check 'fix-paths
1100 (lambda _
1101 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1102 (("src/test") "maven-model-builder/src/test"))
1103 #t))
1104 (replace 'install
1105 (install-from-pom "maven-model-builder/pom.xml")))))
1106 (propagated-inputs
1107 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1108 ("java-plexus-utils" ,java-plexus-utils)
1109 ("maven-artifact" ,maven-artifact)
1110 ("maven-builder-support" ,maven-builder-support)
1111 ("maven-model" ,maven-model)
1112 ("maven-pom" ,maven-pom)))
1113 (native-inputs
1114 `(("java-junit" ,java-junit)
1115 ("java-guava" ,java-guava)
1116 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1117 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1118 ("guice" ,java-guice)
1119 ("java-cglib" ,java-cglib)
1120 ("java-asm" ,java-asm)
1121 ("sisu-inject" ,java-eclipse-sisu-inject)
1122 ("javax-inject" ,java-javax-inject)
1123 ("java-xmlunit" ,java-xmlunit)
1124 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1125 ("xbean" ,java-geronimo-xbean-reflect)
1126 ("classworlds" ,java-plexus-classworlds)))
1127 (description "Apache Maven is a software project management and comprehension
1128 tool. This package contains the effective model builder, with profile activation,
1129 inheritance, interpolation, @dots{}")))
1130
1131 (define-public maven-repository-metadata
1132 (package
1133 (inherit maven-artifact)
1134 (name "maven-repository-metadata")
1135 (arguments
1136 `(#:jar-name "maven-repository-metadata.jar"
1137 #:source-dir "maven-repository-metadata/src/main/java"
1138 #:jdk ,icedtea-8
1139 #:tests? #f; no tests
1140 #:phases
1141 (modify-phases %standard-phases
1142 (add-before 'build 'generate-models
1143 (lambda* (#:key inputs #:allow-other-keys)
1144 (define (modello-single-mode file version mode)
1145 (invoke "java" "org.codehaus.modello.ModelloCli"
1146 file mode "maven-repository-metadata/src/main/java" version
1147 "false" "true"))
1148 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1149 (modello-single-mode file "1.1.0" "java")
1150 (modello-single-mode file "1.1.0" "xpp3-reader")
1151 (modello-single-mode file "1.1.0" "xpp3-writer"))
1152 #t))
1153 (replace 'install
1154 (install-from-pom "maven-repository-metadata/pom.xml")))))
1155 (propagated-inputs
1156 `(("java-plexus-utils" ,java-plexus-utils)
1157 ("maven-pom" ,maven-pom)))
1158 (native-inputs
1159 `(("modello" ,java-modello-core)
1160 ;; for modello:
1161 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1162 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1163 ("java-guice" ,java-guice)
1164 ("java-cglib" ,java-cglib)
1165 ("java-asm" ,java-asm)
1166 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1167 ("java-javax-inject" ,java-javax-inject)
1168 ("java-plexus-utils" ,java-plexus-utils)
1169 ("java-plexus-classworlds" ,java-plexus-classworlds)
1170 ("java-guava" ,java-guava)
1171 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1172 ("java-sisu-build-api" ,java-sisu-build-api)
1173 ;; modello plugins:
1174 ("java-modello-plugins-java" ,java-modello-plugins-java)
1175 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1176 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1177 (description "Apache Maven is a software project management and comprehension
1178 tool. This package contains strictly the model for Maven Repository Metadata,
1179 so really just plain objects.")))
1180
1181 (define-public maven-resolver-provider
1182 (package
1183 (inherit maven-artifact)
1184 (name "maven-resolver-provider")
1185 (arguments
1186 `(#:jar-name "maven-resolver-provider.jar"
1187 #:source-dir "maven-resolver-provider/src/main/java"
1188 #:test-dir "maven-resolver-provider/src/test"
1189 #:jdk ,icedtea-8
1190 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1191 #:phases
1192 (modify-phases %standard-phases
1193 (add-before 'build 'generate-sisu-named
1194 (lambda _
1195 (mkdir-p "build/classes/META-INF/sisu")
1196 (chmod "./sisu.sh" #o755)
1197 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1198 "build/classes/META-INF/sisu/javax.inject.Named")
1199 #t))
1200 (replace 'install
1201 (install-from-pom "maven-resolver-provider/pom.xml")))))
1202 (propagated-inputs
1203 `(("maven-model" ,maven-model)
1204 ("maven-model-builder" ,maven-model-builder)
1205 ("maven-resolver-spi" ,maven-resolver-spi)
1206 ("maven-resolver-api" ,maven-resolver-api)
1207 ("maven-resolver-impl" ,maven-resolver-impl)
1208 ("maven-resolver-util" ,maven-resolver-util)
1209 ("maven-builder-support" ,maven-builder-support)
1210 ("maven-repository-metadata" ,maven-repository-metadata)
1211 ("java-plexus-utils" ,java-plexus-utils)
1212 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1213 ("java-guice" ,java-guice)
1214 ("java-javax-inject" ,java-javax-inject)))))
1215
1216 (define-public maven-plugin-api
1217 (package
1218 (inherit maven-artifact)
1219 (name "maven-plugin-api")
1220 (arguments
1221 `(#:jar-name "maven-plugin-api.jar"
1222 #:source-dir "maven-plugin-api/src/main/java"
1223 #:jdk ,icedtea-8
1224 #:test-dir "maven-plugin-api/src/test"
1225 #:phases
1226 (modify-phases %standard-phases
1227 (add-before 'build 'generate-models
1228 (lambda* (#:key inputs #:allow-other-keys)
1229 (define (modello-single-mode file version mode)
1230 (invoke "java" "org.codehaus.modello.ModelloCli"
1231 file mode "maven-plugin-api/src/main/java" version
1232 "false" "true"))
1233 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1234 (modello-single-mode file "1.0.0" "java")
1235 (modello-single-mode file "1.0.0" "xpp3-reader")
1236 (modello-single-mode file "1.0.0" "xpp3-writer"))
1237 #t))
1238 (replace 'install
1239 (install-from-pom "maven-plugin-api/pom.xml")))))
1240 (propagated-inputs
1241 `(("maven-artifact" ,maven-artifact)
1242 ("maven-model" ,maven-model)
1243 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1244 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1245 ("guice" ,java-guice)
1246 ("java-cglib" ,java-cglib)
1247 ("java-asm" ,java-asm)
1248 ("sisu-inject" ,java-eclipse-sisu-inject)
1249 ("javax-inject" ,java-javax-inject)
1250 ("utils" ,java-plexus-utils)))
1251 (native-inputs
1252 `(("modello" ,java-modello-core)
1253 ;; for modello:
1254 ("classworlds" ,java-plexus-classworlds)
1255 ("guava" ,java-guava)
1256 ("xbean" ,java-geronimo-xbean-reflect)
1257 ("build-api" ,java-sisu-build-api)
1258 ;; modello plugins:
1259 ("java" ,java-modello-plugins-java)
1260 ("xml" ,java-modello-plugins-xml)
1261 ("xpp3" ,java-modello-plugins-xpp3)
1262 ;; for tests
1263 ("java-junit" ,java-junit)))
1264 (description "Apache Maven is a software project management and comprehension
1265 tool. This package contains strictly the API for plugins -- composed of goals
1266 implemented by Mojos -- development.
1267
1268 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1269 generally generated from plugin sources using maven-plugin-plugin.")))
1270
1271 (define maven-core-bootstrap
1272 (package
1273 (inherit maven-artifact)
1274 (name "maven-core")
1275 (arguments
1276 `(#:jar-name "maven-core.jar"
1277 #:source-dir "src/main/java"
1278 #:jdk ,icedtea-8
1279 ;; Tests need maven-compat, which requires maven-core
1280 #:tests? #f
1281 #:phases
1282 (modify-phases %standard-phases
1283 (add-before 'configure 'chdir
1284 (lambda _
1285 ;; Required for generating components.xml in maven-core
1286 (chdir "maven-core")
1287 #t))
1288 (add-before 'build 'copy-resources
1289 (lambda _
1290 (mkdir-p "build/classes/")
1291 (copy-recursively "src/main/resources" "build/classes")
1292 #t))
1293 (add-after 'copy-resources 'fill-properties
1294 (lambda _
1295 ;; This file controls the output of some mvn subcommands, such as
1296 ;; mvn -version.
1297 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1298 (("\\$\\{buildNumber\\}") "guix_build")
1299 (("\\$\\{timestamp\\}") "0")
1300 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1301 (("\\$\\{distributionId\\}") "apache-maven")
1302 (("\\$\\{distributionShortName\\}") "Maven")
1303 (("\\$\\{distributionName\\}") "Apache Maven"))
1304 #t))
1305 (add-before 'build 'generate-sisu-named
1306 (lambda _
1307 (mkdir-p "build/classes/META-INF/sisu")
1308 (chmod "../sisu.sh" #o755)
1309 (invoke "../sisu.sh" "src/main/java"
1310 "build/classes/META-INF/sisu/javax.inject.Named")
1311 #t))
1312 (add-before 'build 'generate-models
1313 (lambda* (#:key inputs #:allow-other-keys)
1314 (define (modello-single-mode file version mode)
1315 (invoke "java" "org.codehaus.modello.ModelloCli"
1316 file mode "src/main/java" version
1317 "false" "true"))
1318 (let ((file "src/main/mdo/toolchains.mdo"))
1319 (modello-single-mode file "1.1.0" "java")
1320 (modello-single-mode file "1.1.0" "xpp3-reader")
1321 (modello-single-mode file "1.1.0" "xpp3-writer"))
1322 #t))
1323 (add-before 'install 'fix-pom
1324 (lambda _
1325 (substitute* "pom.xml"
1326 (("<classifier>no_aop</classifier>") ""))
1327 #t))
1328 (replace 'install
1329 (install-from-pom "pom.xml")))))
1330 (propagated-inputs
1331 `(("maven-artifact" ,maven-artifact)
1332 ("maven-resolver-provider" ,maven-resolver-provider)
1333 ("maven-builder-support" ,maven-builder-support)
1334 ("maven-model" ,maven-model)
1335 ("maven-model-builder" ,maven-model-builder)
1336 ("maven-settings" ,maven-settings)
1337 ("maven-settings-builder" ,maven-settings-builder)
1338 ("maven-plugin-api" ,maven-plugin-api)
1339 ("maven-repository-metadata" ,maven-repository-metadata)
1340 ("maven-shared-utils" ,maven-shared-utils)
1341 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1342 ("java-plexus-utils" ,java-plexus-utils)
1343 ("java-commons-lang3" ,java-commons-lang3)
1344 ("java-guava" ,java-guava)
1345 ("java-guice" ,java-guice)
1346 ("maven-resolver-api" ,maven-resolver-api)
1347 ("maven-resolver-spi" ,maven-resolver-spi)
1348 ("maven-resolver-util" ,maven-resolver-util)
1349 ("maven-resolver-impl" ,maven-resolver-impl)
1350 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1351 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1352 ("java-javax-inject" ,java-javax-inject)
1353 ("java-plexus-classworld" ,java-plexus-classworlds)))
1354 (native-inputs
1355 `(("java-modello-core" ,java-modello-core)
1356 ("java-cglib" ,java-cglib)
1357 ("java-asm" ,java-asm)
1358 ("java-plexus-classworlds" ,java-plexus-classworlds)
1359 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1360 ("java-sisu-build-api" ,java-sisu-build-api)
1361 ("java-modello-plugins-java" ,java-modello-plugins-java)
1362 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1363 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1364 ;; tests
1365 ("java-junit" ,java-junit)
1366 ("java-mockito-1" ,java-mockito-1)
1367 ("java-commons-jxpath" ,java-commons-jxpath)))
1368 (description "Apache Maven is a software project management and comprehension
1369 tool. This package contains the maven core classes managing the whole build
1370 process.")))
1371
1372 (define-public maven-core
1373 (package
1374 (inherit maven-core-bootstrap)
1375 (arguments
1376 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1377 ((#:phases phases)
1378 `(modify-phases ,phases
1379 (add-before 'build 'modify-metainf
1380 (lambda _
1381 (substitute* "build.xml"
1382 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
1383 #t))
1384 (add-before 'build 'add-maven-files
1385 (lambda _
1386 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1387 (copy-file "pom.xml"
1388 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1389 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1390 (lambda _
1391 (format #t "version=~a~%
1392 groupId=org.apache.maven~%
1393 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1394 #t))
1395 (add-after 'build 'generate-metadata
1396 (lambda _
1397 (define (components file)
1398 (let ((sxml (with-input-from-file file
1399 (lambda _ (xml->sxml (current-input-port)
1400 #:trim-whitespace? #t)))))
1401 ;; Select the list of <component>s inside the <component-set>
1402 ;; and <components>.
1403 ((@ (ice-9 match) match) sxml
1404 (('*TOP*
1405 ('*PI* foo ...)
1406 ('component-set
1407 ('components x ...))) x))))
1408 (use-modules (sxml simple))
1409 (delete-file "build/classes/META-INF/plexus/components.xml")
1410 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1411 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1412 "--source" "build/classes/META-INF/plexus"
1413 "--output" "build/classes/META-INF/plexus/components.t.xml"
1414 "--classes" "build/classes"
1415 "--descriptors" "build/classes")
1416 ;; Now we merge all other components from hand-written xml
1417 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1418 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1419 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1420 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1421 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1422 (lambda _
1423 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1424 (sxml->xml
1425 `(component-set
1426 (components
1427 ,@(append generated-xml components-xml
1428 default-bindings-xml
1429 artifact-handlers-xml)))))))
1430 #t))
1431 (add-after 'generate-metadata 'rebuild
1432 (lambda _
1433 (invoke "ant" "jar")
1434 #t))))))
1435 (native-inputs
1436 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1437 ("java-commons-cli" ,java-commons-cli)
1438 ("java-plexus-cli" ,java-plexus-cli)
1439 ("java-jdom2" ,java-jdom2)
1440 ("java-qdox" ,java-qdox)
1441 ("maven-core-boot" ,maven-core-bootstrap)
1442 ,@(package-native-inputs maven-core-bootstrap)))))
1443
1444 (define-public maven-embedder
1445 (package
1446 (inherit maven-artifact)
1447 (name "maven-embedder")
1448 (arguments
1449 `(#:jar-name "maven-embedder.jar"
1450 #:source-dir "maven-embedder/src/main/java"
1451 #:test-dir "maven-embedder/src/test"
1452 #:test-exclude (list "**/MavenCliTest.java")
1453 #:jdk ,icedtea-8
1454 #:phases
1455 (modify-phases %standard-phases
1456 (add-before 'build 'generate-sisu-named
1457 (lambda _
1458 (mkdir-p "build/classes/META-INF/sisu")
1459 (chmod "sisu.sh" #o755)
1460 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1461 "build/classes/META-INF/sisu/javax.inject.Named")
1462 #t))
1463 (add-before 'build 'generate-models
1464 (lambda* (#:key inputs #:allow-other-keys)
1465 (define (modello-single-mode file version mode)
1466 (invoke "java" "org.codehaus.modello.ModelloCli"
1467 file mode "maven-embedder/src/main/java" version
1468 "false" "true"))
1469 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1470 (modello-single-mode file "1.0.0" "java")
1471 (modello-single-mode file "1.0.0" "xpp3-reader")
1472 (modello-single-mode file "1.0.0" "xpp3-writer"))
1473 #t))
1474 (add-before 'check 'fix-test-paths
1475 (lambda _
1476 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1477 (("target/test-classes") "build/test-classes"))
1478 #t))
1479 (add-before 'check 'fix-test-compilation
1480 (lambda _
1481 ;; Tests are in the java/ subdir. Other subdirectories contain
1482 ;; additional test plugins, with duplicate classes, so we can't
1483 ;; compile them. Also, they are meant to be built with maven, to
1484 ;; test its build process.
1485 (substitute* "build.xml"
1486 (("srcdir=\"maven-embedder/src/test\"")
1487 "srcdir=\"maven-embedder/src/test/java\""))
1488 #t))
1489 (replace 'install
1490 (install-from-pom "maven-embedder/pom.xml")))))
1491 (propagated-inputs
1492 `(("maven-core" ,maven-core)
1493 ("maven-artifact" ,maven-artifact)
1494 ("maven-plugin-api" ,maven-plugin-api)
1495 ("maven-builder-support" ,maven-builder-support)
1496 ("maven-model" ,maven-model)
1497 ("maven-model-builder" ,maven-model-builder)
1498 ("maven-settings" ,maven-settings)
1499 ("maven-settings-builder" ,maven-settings-builder)
1500 ("maven-shared-utils" ,maven-shared-utils)
1501 ("java-plexus-classworlds" ,java-plexus-classworlds)
1502 ("java-plexus-util" ,java-plexus-utils)
1503 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1504 ("java-plexus-cipher" ,java-plexus-cipher)
1505 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1506 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1507 ("maven-resolevr-util" ,maven-resolver-util)
1508 ("maven-resolevr-api" ,maven-resolver-api)
1509 ("java-logback-core" ,java-logback-core)
1510 ("java-logback-classic" ,java-logback-classic)
1511 ("java-commons-cli" ,java-commons-cli)
1512 ("java-commons-io" ,java-commons-io)
1513 ("java-commons-lang3" ,java-commons-lang3)
1514 ("java-guava" ,java-guava)
1515 ("java-guice" ,java-guice)
1516 ("java-javax-inject" ,java-javax-inject)
1517 ("java-slf4j-api" ,java-slf4j-api)
1518 ("java-slf4j-simple" ,java-slf4j-simple)
1519 ("java-jsr250" ,java-jsr250)))
1520 (native-inputs
1521 `(("java-modello-core" ,java-modello-core)
1522 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1523 ("java-sisu-build-api" ,java-sisu-build-api)
1524 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1525 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1526 ("java-cglib" ,java-cglib)
1527 ("java-asm" ,java-asm)
1528 ("java-modello-plugins-java" ,java-modello-plugins-java)
1529 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1530 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1531 ;; tests
1532 ("java-junit" ,java-junit)
1533 ("java-objenesis" ,java-objenesis)
1534 ("java-mockito-1" ,java-mockito-1)
1535 ("java-hamcrest-core" ,java-hamcrest-core)))
1536 (description "Apache Maven is a software project management and comprehension
1537 tool. This package contains a Maven embeddable component, with CLI and
1538 logging support.")))
1539
1540 (define-public maven-compat
1541 (package
1542 (inherit maven-artifact)
1543 (name "maven-compat")
1544 (arguments
1545 `(#:jar-name "maven-compat.jar"
1546 #:source-dir "src/main/java"
1547 #:jdk ,icedtea-8
1548 #:test-dir "src/test"
1549 #:phases
1550 (modify-phases %standard-phases
1551 ;; Tests assume we're in this directory
1552 (add-before 'configure 'chdir
1553 (lambda _
1554 (chdir "maven-compat")
1555 #t))
1556 (add-before 'build 'recreate-removed-jar
1557 (lambda _
1558 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1559 (const #t))
1560 (with-directory-excursion "src/test/resources"
1561 (with-output-to-file "artifact-install/artifact-1.0.jar"
1562 (lambda _
1563 (format #t "dummy~%")))
1564 (for-each
1565 (lambda (file)
1566 (with-output-to-file file
1567 (lambda _
1568 (format #t "foo~%"))))
1569 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1570 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1571 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1572 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1573 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1574 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1575 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1576 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1577 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1578 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1579 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1580 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1581 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1582 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1583 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1584 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1585 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1586 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1587 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1588 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1589 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1590 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1591 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1592 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1593 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1594 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1595 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1596 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1597 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1598 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1599 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1600 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1601 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1602 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1603 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1604 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1605 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1606 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1607 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1608 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1609 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1610 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1611 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1612 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1613 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1614 (with-directory-excursion "local-repo/snapshot-test/jars"
1615 (for-each
1616 (lambda (file)
1617 (with-output-to-file file
1618 (lambda _
1619 ;; No end-of-line
1620 (format #t "local"))))
1621 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1622 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1623 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1624 (for-each
1625 (lambda (letter)
1626 (with-directory-excursion
1627 (string-append "src/test/remote-repo/org/apache/maven/its/"
1628 letter "/0.1")
1629 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1630 letter)))
1631 (mkdir-p dir)
1632 (copy-file (string-append letter "-0.1.pom")
1633 (string-append dir "/pom.xml"))
1634 (with-output-to-file (string-append dir "/pom.properties")
1635 (lambda _
1636 (format #t "version=0.1~%")
1637 (format #t "groupId=org.apache.maven.its")
1638 (format #t (string-append "artifactId=" letter))))
1639 (with-output-to-file "META-INF/MANIFEST.MF"
1640 (lambda _
1641 (format #t "Manifest-Version: 1.0~%"))))
1642 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1643 (string-append letter "-0.1.jar") "META-INF")))
1644 '("a" "b"))
1645 #t))
1646 (add-before 'build 'generate-models
1647 (lambda* (#:key inputs #:allow-other-keys)
1648 (define (modello-single-mode file version mode)
1649 (invoke "java" "org.codehaus.modello.ModelloCli"
1650 file mode "src/main/java" version
1651 "false" "true"))
1652 (let ((file "src/main/mdo/profiles.mdo"))
1653 (modello-single-mode file "1.0.0" "java")
1654 (modello-single-mode file "1.0.0" "xpp3-reader")
1655 (modello-single-mode file "1.0.0" "xpp3-writer"))
1656 (let ((file "src/main/mdo/paramdoc.mdo"))
1657 (modello-single-mode file "1.0.0" "java")
1658 (modello-single-mode file "1.0.0" "xpp3-reader")
1659 (modello-single-mode file "1.0.0" "xpp3-writer"))
1660 #t))
1661 (add-after 'build 'generate-metadata
1662 (lambda _
1663 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1664 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1665 "--source" "src/main/java"
1666 "--output" "build/classes/META-INF/plexus/components.xml"
1667 "--classes" "build/classes"
1668 "--descriptors" "build/classes/META-INF")
1669 #t))
1670 (add-before 'check 'build-tests
1671 (lambda _
1672 (invoke "ant" "compile-tests")
1673 #t))
1674 (add-after 'build-tests 'generate-test-metadata
1675 (lambda _
1676 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1677 ":build/classes"
1678 ":build/test-classes")
1679 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1680 "--source" "src/test/java"
1681 "--output" "build/test-classes/META-INF/plexus/components.xml"
1682 "--classes" "build/test-classes"
1683 "--descriptors" "build/test-classes/META-INF")
1684 #t))
1685 (add-after 'generate-metadata 'rebuild
1686 (lambda _
1687 (invoke "ant" "jar")
1688 #t))
1689 (replace 'install
1690 (install-from-pom "pom.xml")))))
1691 (propagated-inputs
1692 `(("maven-artifact" ,maven-artifact)
1693 ("maven-repository-metadata" ,maven-repository-metadata)
1694 ("maven-builder-support" ,maven-builder-support)
1695 ("maven-model" ,maven-model)
1696 ("maven-model-builder" ,maven-model-builder)
1697 ("maven-settings" ,maven-settings)
1698 ("maven-settings-builder" ,maven-settings-builder)
1699 ("maven-core" ,maven-core)
1700 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1701 ("maven-wagon-file" ,maven-wagon-file)
1702 ("maven-resolver-api" ,maven-resolver-api)
1703 ("maven-resolver-util" ,maven-resolver-util)
1704 ("maven-resolver-spi" ,maven-resolver-spi)
1705 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1706 (native-inputs
1707 `(("java-modello-core" ,java-modello-core)
1708 ("java-plexus-utils" ,java-plexus-utils)
1709 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1710 ("java-plexus-classworlds" ,java-plexus-classworlds)
1711 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1712 ("java-sisu-build-api" ,java-sisu-build-api)
1713 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1714 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1715 ("java-javax-inject" ,java-javax-inject)
1716 ("java-guice" ,java-guice)
1717 ("java-guava" ,java-guava)
1718 ("java-cglib" ,java-cglib)
1719 ("java-asm" ,java-asm)
1720 ("java-modello-plugins-java" ,java-modello-plugins-java)
1721 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1722 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1723 ;; metadata
1724 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
1725 ("java-commons-cli" ,java-commons-cli)
1726 ("java-plexus-cli" ,java-plexus-cli)
1727 ("java-jdom2" ,java-jdom2)
1728 ("maven-plugin-api" ,maven-plugin-api)
1729 ("java-qdox" ,java-qdox)
1730 ;; tests
1731 ("java-plexus-cipher" ,java-plexus-cipher)
1732 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1733 ("java-jsr250" ,java-jsr250)
1734 ("java-cdi-api" ,java-cdi-api)
1735 ("java-junit" ,java-junit)
1736 ("maven-resolver-impl" ,maven-resolver-impl)
1737 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1738 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1739 ("java-commons-lang3" ,java-commons-lang3)
1740 ("java-aop" ,java-aopalliance)
1741 ("maven-resolver-provider" ,maven-resolver-provider)
1742 ("java-slf4j-api" ,java-slf4j-api)
1743 ("java-slf4j-simple" ,java-slf4j-simple)
1744 ,@(package-inputs java-slf4j-api)))
1745 (description "Apache Maven is a software project management and comprehension
1746 tool. This package contains Maven2 classes maintained as compatibility
1747 layer for plugins that need to keep Maven2 compatibility.")))
1748
1749 (define-public maven
1750 (package
1751 (inherit maven-artifact)
1752 (name "maven")
1753 (arguments
1754 `(#:phases
1755 (modify-phases %standard-phases
1756 (replace 'build
1757 (lambda* (#:key inputs #:allow-other-keys)
1758 ;; Recreate the configuration for the loader
1759 (with-output-to-file "apache-maven/src/bin/m2.conf"
1760 (lambda _
1761 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1762 (format #t "~%")
1763 (format #t "set maven.conf default ${maven.home}/conf~%")
1764 (format #t "~%")
1765 (format #t "[plexus.core]~%")
1766 (format #t "load ${maven.conf}/logging~%")
1767 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1768 ;; Reference every jar so plexus-classworlds can find them.
1769 (for-each
1770 (lambda (dependency)
1771 (for-each
1772 (lambda (file)
1773 (format #t "load ~a~%" file))
1774 (find-files (assoc-ref inputs dependency) ".*.jar$")))
1775 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1776 "maven-builder-support" "maven-model" "maven-model-builder"
1777 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1778 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1779 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1780 "maven-resolver-connector-basic" "maven-resolver-provider"
1781 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1782 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1783 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1784 "maven-wagon-http-shared" "maven-wagon-tck-http"
1785 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1786 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1787 "java-javax-inject" "java-plexus-component-annotations"
1788 "java-plexus-utils" "java-plexus-interpolation"
1789 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1790 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1791 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1792 "java-slf4j-simple"))))
1793 (substitute* "apache-maven/src/bin/mvn"
1794 (("cygwin=false;")
1795 (string-append
1796 "CLASSPATH="
1797 (car (find-files
1798 (assoc-ref inputs "java-plexus-classworlds")
1799 ".*.jar"))
1800 "\ncygwin=false;"))
1801 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
1802 #t))
1803 (delete 'check)
1804 (replace 'install
1805 (lambda* (#:key outputs #:allow-other-keys)
1806 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
1807 (conf (string-append (assoc-ref outputs "out") "/conf/")))
1808 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
1809 (for-each (lambda (file)
1810 (install-file (string-append "apache-maven/src/bin/" file)
1811 bin)
1812 (chmod (string-append bin file) #o755))
1813 '("mvn" "mvnDebug" "mvnyjp"))
1814 (install-file "apache-maven/src/bin/m2.conf" bin)
1815 (copy-recursively "apache-maven/src/conf" conf))
1816 #t)))))
1817 (inputs
1818 `(("java-plexus-classworlds" ,java-plexus-classworlds)
1819 ("maven-artifact" ,maven-artifact)
1820 ("maven-embedder" ,maven-embedder)
1821 ("maven-core" ,maven-core)
1822 ("maven-compat" ,maven-compat)
1823 ("maven-builder-support" ,maven-builder-support)
1824 ("maven-model" ,maven-model)
1825 ("maven-model-builder" ,maven-model-builder)
1826 ("maven-settings" ,maven-settings)
1827 ("maven-settings-builder" ,maven-settings-builder)
1828 ("maven-plugin-api" ,maven-plugin-api)
1829 ("maven-repository-metadata" ,maven-repository-metadata)
1830 ("maven-shared-utils" ,maven-shared-utils)
1831 ("maven-resolver-api" ,maven-resolver-api)
1832 ("maven-resolver-spi" ,maven-resolver-spi)
1833 ("maven-resolver-util" ,maven-resolver-util)
1834 ("maven-resolver-impl" ,maven-resolver-impl)
1835 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1836 ("maven-resolver-provider" ,maven-resolver-provider)
1837 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1838 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1839 ("maven-wagon-file" ,maven-wagon-file)
1840 ("maven-wagon-http" ,maven-wagon-http)
1841 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1842 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
1843 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
1844 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
1845 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
1846 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1847 ("java-guice" ,java-guice)
1848 ("java-aopalliance" ,java-aopalliance)
1849 ("java-cglib" ,java-cglib)
1850 ("java-asm" ,java-asm)
1851 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1852 ("java-javax-inject" ,java-javax-inject)
1853 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1854 ("java-plexus-utils" ,java-plexus-utils)
1855 ("java-plexus-interpolation" ,java-plexus-interpolation)
1856 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1857 ("java-plexus-cipher" ,java-plexus-cipher)
1858 ("java-guava" ,java-guava)
1859 ("java-jansi" ,java-jansi)
1860 ("java-jsr250" ,java-jsr250)
1861 ("java-cdi-api" ,java-cdi-api)
1862 ("java-commons-cli" ,java-commons-cli)
1863 ("java-commons-io" ,java-commons-io)
1864 ("java-commons-lang3" ,java-commons-lang3)
1865 ("java-slf4j-api" ,java-slf4j-api)
1866 ;; TODO: replace with maven-slf4j-provider
1867 ("java-slf4j-simple" ,java-slf4j-simple)))
1868 (propagated-inputs
1869 `(("coreutils" ,coreutils)
1870 ("which" ,which)))
1871 (description "Apache Maven is a software project management and comprehension
1872 tool. Based on the concept of a project object model: builds, dependency
1873 management, documentation creation, site publication, and distribution
1874 publication are all controlled from the @file{pom.xml} declarative file. Maven
1875 can be extended by plugins to utilise a number of other development tools for
1876 reporting or the build process.")))