gnu: Remove unneeded uses of 'libiconv'.
[jackhill/guix/guix.git] / gnu / packages / maven.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2018-2021 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 #:use-module (ice-9 match))
37
38 (define-public maven-resolver-api
39 (package
40 (name "maven-resolver-api")
41 (version "1.6.3")
42 (source (origin
43 (method git-fetch)
44 (uri (git-reference
45 (url "https://github.com/apache/maven-resolver")
46 (commit (string-append "maven-resolver-" version))))
47 (file-name (git-file-name name version))
48 (sha256
49 (base32
50 "0hbbbxj14qyq8pccyab96pjqq90jnjmid1pml9kx55c5smfpjn37"))))
51 (build-system ant-build-system)
52 (arguments
53 `(#:jar-name "maven-resolver-api.jar"
54 #:source-dir "maven-resolver-api/src/main/java"
55 #:test-dir "maven-resolver-api/src/test"
56 #:phases
57 (modify-phases %standard-phases
58 (replace 'install
59 (install-from-pom "maven-resolver-api/pom.xml")))))
60 (native-inputs
61 `(("java-asm-8" ,java-asm-8)
62 ("java-cglib" ,java-cglib)
63 ("java-hamcrest-core" ,java-hamcrest-core)
64 ("java-junit" ,java-junit)
65 ("java-mockito-1" ,java-mockito-1)
66 ("java-objenesis" ,java-objenesis)))
67 (propagated-inputs
68 (list maven-resolver-parent-pom))
69 (home-page "https://github.com/apache/maven-resolver")
70 (synopsis "Maven repository system API")
71 (description "This package contains the API for the maven repository system.")
72 (license license:asl2.0)))
73
74 (define maven-resolver-parent-pom
75 (package
76 (inherit maven-resolver-api)
77 (name "maven-resolver-parent-pom")
78 (arguments
79 `(#:tests? #f
80 #:phases
81 (modify-phases %standard-phases
82 (delete 'configure)
83 (delete 'build)
84 (add-before 'install 'fix-pom
85 (lambda _
86 (substitute* "pom.xml"
87 (("<classifier>no_aop</classifier>") ""))
88 #t))
89 (replace 'install
90 (install-pom-file "pom.xml")))))
91 (propagated-inputs '())))
92
93 (define-public maven-resolver-spi
94 (package
95 (inherit maven-resolver-api)
96 (name "maven-resolver-spi")
97 (arguments
98 `(#:jar-name "maven-resolver-spi.jar"
99 #:source-dir "maven-resolver-spi/src/main/java"
100 #:test-dir "maven-resolver-spi/src/test"
101 #:phases
102 (modify-phases %standard-phases
103 (replace 'install
104 (install-from-pom "maven-resolver-spi/pom.xml")))))
105 (propagated-inputs
106 (list maven-resolver-api))
107 (synopsis "Maven repository system SPI")
108 (description "This package contains the service provider interface (SPI)
109 for repository system implementations and repository connectors.")))
110
111 (define-public maven-resolver-test-util
112 (package
113 (inherit maven-resolver-api)
114 (name "maven-resolver-test-util")
115 (arguments
116 `(#:jar-name "maven-resolver-test-util.jar"
117 #:source-dir "maven-resolver-test-util/src/main/java"
118 #:test-dir "maven-resolver-test-util/src/test"
119 #:jdk ,icedtea-8))
120 (inputs
121 (list maven-resolver-api maven-resolver-spi))
122 (synopsis "Utility classes for testing the maven repository system")
123 (description "This package contains a collection of utility classes to
124 ease testing of the repository system.")))
125
126 (define-public maven-resolver-util
127 (package
128 (inherit maven-resolver-api)
129 (name "maven-resolver-util")
130 (arguments
131 `(#:jar-name "maven-resolver-util.jar"
132 #:source-dir "maven-resolver-util/src/main/java"
133 #:test-dir "maven-resolver-util/src/test"
134 #:phases
135 (modify-phases %standard-phases
136 (replace 'install
137 (install-from-pom "maven-resolver-util/pom.xml")))))
138 (propagated-inputs
139 (list maven-resolver-api))
140 (native-inputs
141 (list java-junit java-hamcrest-core maven-resolver-test-util))
142 (synopsis "Utility classes for the maven repository system")
143 (description "This package contains a collection of utility classes to
144 ease usage of the repository system.")))
145
146 (define-public maven-resolver-connector-basic
147 (package
148 (inherit maven-resolver-api)
149 (name "maven-resolver-connector-basic")
150 (arguments
151 `(#:jar-name "maven-resolver-connector-basic.jar"
152 #:source-dir "maven-resolver-connector-basic/src/main/java"
153 #:test-dir "maven-resolver-connector-basic/src/test"
154 #:jdk ,icedtea-8
155 #:phases
156 (modify-phases %standard-phases
157 (add-before 'build 'generate-sisu
158 (lambda _
159 (mkdir-p "build/classes/META-INF/sisu")
160 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
161 (lambda _
162 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
163 #t))
164 (replace 'install
165 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
166 (propagated-inputs
167 (list maven-resolver-api maven-resolver-spi maven-resolver-util
168 java-slf4j-api))
169 (native-inputs
170 (list java-javax-inject java-junit maven-resolver-test-util))
171 (synopsis "Maven repository connector implementation")
172 (description "This package contains a repository connector implementation
173 for repositories using URI-based layouts.")))
174
175 (define-public maven-resolver-impl
176 (package
177 (inherit maven-resolver-api)
178 (name "maven-resolver-impl")
179 (arguments
180 `(#:jar-name "maven-resolver-impl.jar"
181 #:source-dir "maven-resolver-impl/src/main/java"
182 #:test-dir "maven-resolver-impl/src/test"
183 #:phases
184 (modify-phases %standard-phases
185 (add-before 'build 'generate-sisu
186 (lambda _
187 (mkdir-p "build/classes/META-INF/sisu")
188 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
189 (lambda _
190 (display
191 (string-append
192 ;; Build this list by looking for files containing "@Named"
193 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
194 "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
195 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
196 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
197 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
198 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
199 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
200 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
201 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
202 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
203 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
204 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
205 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
206 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
207 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
208 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
209 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
210 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
211 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
212 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
213 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
214 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
215 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
216 #t))
217 (replace 'install
218 (install-from-pom "maven-resolver-impl/pom.xml")))))
219 (propagated-inputs
220 (list maven-resolver-api
221 maven-resolver-spi
222 maven-resolver-util
223 java-commons-lang3
224 java-eclipse-sisu-inject
225 java-javax-inject
226 java-guice
227 java-slf4j-api
228 maven-resolver-parent-pom))
229 (native-inputs
230 (list java-junit maven-resolver-test-util))))
231
232 (define-public maven-resolver-transport-wagon
233 (package
234 (inherit maven-resolver-api)
235 (name "maven-resolver-transport-wagon")
236 (arguments
237 `(#:jar-name "maven-resolver-transport-wagon.jar"
238 #:source-dir "maven-resolver-transport-wagon/src/main/java"
239 #:test-dir "maven-resolver-transport-wagon/src/test"
240 #:jdk ,icedtea-8
241 #:phases
242 (modify-phases %standard-phases
243 (add-before 'build 'generate-sisu
244 (lambda _
245 (mkdir-p "build/classes/META-INF/sisu")
246 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
247 (lambda _
248 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
249 #t))
250 (add-before 'build 'generate-components.xml
251 (lambda _
252 (mkdir-p "build/classes/META-INF/plexus")
253 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
254 (lambda _
255 (display
256 (string-append
257 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
258 <component-set>
259 <components>
260 <component>
261 <role>org.eclipse.aether.transport.wagon.WagonConfigurator</role>
262 <role-hint>plexus</role-hint>
263 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator</implementation>
264 <description />
265 <isolated-realm>false</isolated-realm>
266 <requirements>
267 <requirement>
268 <role>org.codehaus.plexus.PlexusContainer</role>
269 <role-hint />
270 <field-name>container</field-name>
271 </requirement>
272 </requirements>
273 </component>
274 <component>
275 <role>org.eclipse.aether.transport.wagon.WagonProvider</role>
276 <role-hint>plexus</role-hint>
277 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider</implementation>
278 <description />
279 <isolated-realm>false</isolated-realm>
280 <requirements>
281 <requirement>
282 <role>org.codehaus.plexus.PlexusContainer</role>
283 <role-hint />
284 <field-name>container</field-name>
285 </requirement>
286 </requirements>
287 </component>
288 </components>
289 </component-set>\n"))))
290 #t)))))
291 (inputs
292 `(("maven-resolver-api" ,maven-resolver-api)
293 ("maven-resolver-spi" ,maven-resolver-spi)
294 ("maven-resolver-util" ,maven-resolver-util)
295 ("java-javax-inject" ,java-javax-inject)
296 ("mavne-wagon-provider-api" ,maven-wagon-provider-api)
297 ("java-plexus-component-annotation" ,java-plexus-component-annotations-1.7)
298 ("java-plexus-classworld" ,java-plexus-classworlds)
299 ("java-plexus-plexus-util" ,java-plexus-utils)
300 ("java-slf4j-api" ,java-slf4j-api)
301 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
302 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
303 (native-inputs
304 (list java-junit
305 java-hamcrest-core
306 maven-resolver-test-util
307 java-guava
308 java-cglib
309 java-aopalliance
310 java-guice))
311 (synopsis "Transport implementation for Maven")
312 (description "This package contains a transport implementation based on
313 Maven Wagon, for use in Maven.")))
314
315 (define-public maven-resolver-transport-file
316 (package
317 (inherit maven-resolver-api)
318 (name "maven-resolver-transport-file")
319 (arguments
320 `(#:jar-name "maven-resolver-transport-file.jar"
321 #:source-dir "maven-resolver-transport-file/src/main/java"
322 #:test-dir "maven-resolver-transport-file/src/test"
323 #:jdk ,icedtea-8
324 #:phases
325 (modify-phases %standard-phases
326 (add-before 'build 'generate-sisu
327 (lambda _
328 (mkdir-p "build/classes/META-INF/sisu")
329 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
330 (lambda _
331 (display "org.eclipse.aether.transport.file.FileTransporterFactory\n"))))))))
332 (inputs
333 (list java-eclipse-sisu-inject
334 java-eclipse-sisu-plexus
335 java-javax-inject
336 java-plexus-classworlds
337 java-plexus-component-annotations
338 java-plexus-utils
339 java-slf4j-api
340 maven-resolver-api
341 maven-resolver-spi
342 maven-resolver-util
343 maven-wagon-provider-api))
344 (native-inputs
345 (list java-asm
346 java-aopalliance
347 java-cglib
348 java-guava
349 java-guice
350 java-hamcrest-core
351 java-junit
352 maven-resolver-test-util))
353 (synopsis "Transport implementation for Maven")
354 (description "This package contains a transport implementation based on
355 files, for use in Maven.")))
356
357 (define-public maven-resolver-transport-http
358 (package
359 (inherit maven-resolver-api)
360 (name "maven-resolver-transport-http")
361 (arguments
362 `(#:jar-name "maven-resolver-transport-http.jar"
363 #:source-dir "maven-resolver-transport-http/src/main/java"
364 #:test-dir "maven-resolver-transport-http/src/test"
365 #:jdk ,icedtea-8
366 ;; Tests all fail because
367 ;; org.eclipse.aether.transport.http.SslSocketFactory is not available.
368 #:tests? #f
369 #:phases
370 (modify-phases %standard-phases
371 (add-before 'build 'generate-sisu
372 (lambda _
373 (mkdir-p "build/classes/META-INF/sisu")
374 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
375 (lambda _
376 (display "org.eclipse.aether.transport.http.HttpTransporterFactory\n"))))))))
377 (inputs
378 (list java-eclipse-sisu-inject
379 java-eclipse-sisu-plexus
380 java-javax-inject
381 java-plexus-classworlds
382 java-plexus-component-annotations
383 java-plexus-utils
384 java-slf4j-api
385 maven-resolver-api
386 maven-resolver-spi
387 maven-resolver-util
388 maven-wagon-provider-api))
389 (propagated-inputs
390 (list java-httpcomponents-httpclient
391 java-httpcomponents-httpcore))
392 (native-inputs
393 (list java-aopalliance
394 java-asm
395 java-cglib
396 java-eclipse-aether-api
397 java-eclipse-jetty-http
398 java-eclipse-jetty-io
399 java-eclipse-jetty-server
400 java-eclipse-jetty-servlet
401 java-eclipse-jetty-util
402 java-guava
403 java-guice
404 java-hamcrest-core
405 java-javaee-servletapi
406 java-junit
407 maven-resolver-test-util))
408 (synopsis "Transport implementation for Maven")
409 (description "This package contains a transport implementation based on
410 HTTP, for use in Maven.")))
411
412 ;; aether is the parent project that was forked into maven-resolver. It used
413 ;; to be used with older versions of Maven, and is still required for some
414 ;; plugins and their dependencies. This version is required for the plugins,
415 ;; even though there are newer versions of this project.
416 (define-public java-sonatype-aether-api
417 (package
418 (name "java-sonatype-aether-api")
419 (version "1.7")
420 (source (origin
421 (method git-fetch)
422 (uri (git-reference
423 (url "https://github.com/sonatype/sonatype-aether")
424 (commit (string-append "aether-" version))))
425 (file-name (git-file-name name version))
426 (sha256
427 (base32
428 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
429 (build-system ant-build-system)
430 (arguments
431 `(#:jar-name "aether-api.jar"
432 #:source-dir "aether-api/src/main/java"
433 #:test-dir "aether-api/src/test"
434 #:phases
435 (modify-phases %standard-phases
436 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
437 (replace 'install (install-from-pom "aether-api/pom.xml")))))
438 (propagated-inputs
439 (list java-sonatype-forge-parent-pom-6))
440 (native-inputs (list java-junit))
441 (home-page "https://github.com/sonatype/sonatype-aether")
442 (synopsis "Maven repository system API")
443 (description "This package contains the API for the maven repository system.")
444 (license license:asl2.0)))
445
446 (define-public java-sonatype-aether-spi
447 (package
448 (inherit java-sonatype-aether-api)
449 (name "java-sonatype-aether-spi")
450 (arguments
451 `(#:jar-name "aether-spi.jar"
452 #:source-dir "aether-spi/src/main/java"
453 #:tests? #f; no tests
454 #:phases
455 (modify-phases %standard-phases
456 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
457 (propagated-inputs
458 (list java-sonatype-aether-api))
459 (synopsis "Maven repository system SPI")
460 (description "This package contains the service provider interface (SPI)
461 for repository system implementations and repository connectors.")))
462
463 (define-public java-sonatype-aether-test-util
464 (package
465 (inherit java-sonatype-aether-api)
466 (name "java-sonatype-aether-test-util")
467 (arguments
468 `(#:jar-name "java-sonatype-aether-test-util.jar"
469 #:source-dir "aether-test-util/src/main/java"
470 #:test-dir "aether-test-util/src/test"))
471 (inputs
472 (list java-sonatype-aether-api java-sonatype-aether-spi))
473 (synopsis "Utility classes for testing the maven repository system")
474 (description "This package contains a collection of utility classes to
475 ease testing of the repository system.")))
476
477 (define-public java-sonatype-aether-util
478 (package
479 (inherit java-sonatype-aether-api)
480 (name "java-sonatype-aether-util")
481 (arguments
482 `(#:jar-name "aether-util.jar"
483 #:source-dir "aether-util/src/main/java"
484 #:test-dir "aether-util/src/test"
485 #:phases
486 (modify-phases %standard-phases
487 (replace 'install (install-from-pom "aether-util/pom.xml")))))
488 (propagated-inputs
489 (list java-sonatype-aether-api))
490 (native-inputs
491 (list java-junit java-sonatype-aether-test-util))
492 (synopsis "Utility classes for the maven repository system")
493 (description "This package contains a collection of utility classes to
494 ease usage of the repository system.")))
495
496 (define-public java-sonatype-aether-impl
497 (package
498 (inherit java-sonatype-aether-api)
499 (name "java-sonatype-aether-impl")
500 (arguments
501 `(#:jar-name "aether-impl.jar"
502 #:source-dir "aether-impl/src/main/java"
503 #:test-dir "aether-impl/src/test"
504 #:phases
505 (modify-phases %standard-phases
506 (add-before 'install 'fix-pom
507 (lambda _
508 (substitute* "aether-impl/pom.xml"
509 (("org.sonatype.sisu") "org.codehaus.plexus")
510 (("sisu-inject-plexus") "plexus-container-default"))
511 #t))
512 (add-after 'build 'generate-metadata
513 (lambda _
514 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
515 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
516 "--source" "src/main/java"
517 "--output" "build/classes/META-INF/plexus/components.xml"
518 "--classes" "build/classes"
519 "--descriptors" "build/classes/META-INF")
520 #t))
521 (add-after 'generate-metadata 'rebuild
522 (lambda _
523 (invoke "ant" "jar")
524 #t))
525 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
526 (propagated-inputs
527 (list java-sonatype-aether-api
528 java-sonatype-aether-spi
529 java-sonatype-aether-util
530 java-plexus-component-annotations
531 java-plexus-container-default
532 java-slf4j-api))
533 (native-inputs
534 (list java-junit java-plexus-component-metadata
535 java-sonatype-aether-test-util))))
536
537 ;; This slightly newer version is also required by some plugins
538 (define-public java-sonatype-aether-api-1.13
539 (package
540 (name "java-sonatype-aether-api")
541 (version "1.13.1")
542 (source (origin
543 (method git-fetch)
544 (uri (git-reference
545 (url "https://github.com/sonatype/sonatype-aether")
546 (commit (string-append "aether-" version))))
547 (file-name (git-file-name name version))
548 (sha256
549 (base32
550 "1yl34dqhm6ykb7h63gkssyrdxv3dsa3n5b8d8cvy8rh4qsm6p2yb"))))
551 (build-system ant-build-system)
552 (arguments
553 `(#:jar-name "aether-api.jar"
554 #:source-dir "aether-api/src/main/java"
555 #:test-dir "aether-api/src/test"
556 #:phases
557 (modify-phases %standard-phases
558 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
559 (replace 'install (install-from-pom "aether-api/pom.xml")))))
560 (propagated-inputs
561 `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-10)))
562 (native-inputs `(("java-junit" ,java-junit)))
563 (home-page "https://github.com/sonatype/sonatype-aether")
564 (synopsis "Maven repository system API")
565 (description "This package contains the API for the maven repository system.")
566 (license license:asl2.0)))
567
568 (define-public java-sonatype-aether-spi-1.13
569 (package
570 (inherit java-sonatype-aether-api-1.13)
571 (name "java-sonatype-aether-spi")
572 (arguments
573 `(#:jar-name "aether-spi.jar"
574 #:source-dir "aether-spi/src/main/java"
575 #:tests? #f; no tests
576 #:phases
577 (modify-phases %standard-phases
578 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
579 (propagated-inputs
580 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)))
581 (synopsis "Maven repository system SPI")
582 (description "This package contains the service provider interface (SPI)
583 for repository system implementations and repository connectors.")))
584
585 (define-public java-sonatype-aether-test-util-1.13
586 (package
587 (inherit java-sonatype-aether-api-1.13)
588 (name "java-sonatype-aether-test-util")
589 (arguments
590 `(#:jar-name "java-sonatype-aether-test-util.jar"
591 #:source-dir "aether-test-util/src/main/java"
592 #:test-dir "aether-test-util/src/test"))
593 (inputs
594 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)
595 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi-1.13)))
596 (synopsis "Utility classes for testing the maven repository system")
597 (description "This package contains a collection of utility classes to
598 ease testing of the repository system.")))
599
600 (define-public java-sonatype-aether-util-1.13
601 (package
602 (inherit java-sonatype-aether-api-1.13)
603 (name "java-sonatype-aether-util")
604 (arguments
605 `(#:jar-name "aether-util.jar"
606 #:source-dir "aether-util/src/main/java"
607 #:test-dir "aether-util/src/test"
608 #:phases
609 (modify-phases %standard-phases
610 (replace 'install (install-from-pom "aether-util/pom.xml")))))
611 (propagated-inputs
612 `(("java-sonatype-aether-api" ,java-sonatype-aether-api-1.13)))
613 (native-inputs
614 `(("java-junit" ,java-junit)
615 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util-1.13)))
616 (synopsis "Utility classes for the maven repository system")
617 (description "This package contains a collection of utility classes to
618 ease usage of the repository system.")))
619
620 ;; Again, this old version is required by some maven plugins
621 (define-public java-eclipse-aether-api
622 (package
623 (name "java-eclipse-aether-api")
624 (version "1.0.2")
625 (source (origin
626 (method git-fetch)
627 (uri (git-reference
628 (url "https://github.com/eclipse/aether-core")
629 (commit "aether-1.0.2.v20150114")))
630 (file-name (git-file-name name version))
631 (sha256
632 (base32
633 "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
634 (build-system ant-build-system)
635 (arguments
636 `(#:jar-name "aether-api.jar"
637 #:source-dir "aether-api/src/main/java"
638 #:test-dir "aether-api/src/test"
639 #:phases
640 (modify-phases %standard-phases
641 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
642 (replace 'install (install-from-pom "aether-api/pom.xml")))))
643 (native-inputs (list java-junit))
644 (home-page "https://github.com/sonatype/sonatype-aether")
645 (synopsis "Maven repository system API")
646 (description "This package contains the API for the maven repository system.")
647 (license license:asl2.0)))
648
649 (define-public java-eclipse-aether-spi
650 (package
651 (inherit java-eclipse-aether-api)
652 (name "java-eclipse-aether-spi")
653 (arguments
654 `(#:jar-name "aether-spi.jar"
655 #:source-dir "aether-spi/src/main/java"
656 #:test-dir "aether-spi/src/test"
657 #:phases
658 (modify-phases %standard-phases
659 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
660 (propagated-inputs
661 (list java-eclipse-aether-api))
662 (synopsis "Maven repository system SPI")
663 (description "This package contains the service provider interface (SPI)
664 for repository system implementations and repository connectors.")))
665
666 (define-public java-eclipse-aether-test-util
667 (package
668 (inherit java-eclipse-aether-api)
669 (name "java-eclipse-aether-test-util")
670 (arguments
671 `(#:jar-name "aether-test-util.jar"
672 #:source-dir "aether-test-util/src/main/java"
673 #:test-dir "aether-test-util/src/test"
674 #:phases
675 (modify-phases %standard-phases
676 (replace 'install (install-from-pom "aether-util/pom.xml")))))
677 (propagated-inputs
678 (list java-eclipse-aether-api java-eclipse-aether-spi))
679 (synopsis "Utility classes for testing the maven repository system")
680 (description "This package contains a collection of utility classes to
681 ease testing of the repository system.")))
682
683 (define-public java-eclipse-aether-util
684 (package
685 (inherit java-eclipse-aether-api)
686 (name "java-eclipse-aether-util")
687 (arguments
688 `(#:jar-name "aether-util.jar"
689 #:source-dir "aether-util/src/main/java"
690 #:test-dir "aether-util/src/test"
691 #:phases
692 (modify-phases %standard-phases
693 (replace 'install (install-from-pom "aether-util/pom.xml")))))
694 (propagated-inputs
695 (list java-eclipse-aether-api))
696 (native-inputs
697 (list java-eclipse-aether-test-util java-junit))
698 (synopsis "Utility classes for the maven repository system")
699 (description "This package contains a collection of utility classes to
700 ease usage of the repository system.")))
701
702 (define-public java-eclipse-aether-impl
703 (package
704 (inherit java-eclipse-aether-api)
705 (name "java-eclipse-aether-impl")
706 (arguments
707 `(#:jar-name "aether-impl.jar"
708 #:source-dir "aether-impl/src/main/java"
709 #:test-dir "aether-impl/src/test"
710 #:phases
711 (modify-phases %standard-phases
712 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
713 (propagated-inputs
714 (list java-eclipse-aether-api
715 java-eclipse-aether-spi
716 java-eclipse-aether-util
717 java-javax-inject
718 java-eclipse-sisu-inject
719 java-guice
720 java-slf4j-api))
721 (native-inputs
722 (list java-eclipse-aether-test-util java-junit))))
723
724 (define-public maven-shared-utils
725 (package
726 (name "maven-shared-utils")
727 (version "3.2.1")
728 (source (origin
729 (method url-fetch)
730 (uri (string-append "mirror://apache/maven/shared/"
731 "maven-shared-utils-" version "-source-release.zip"))
732 (sha256
733 (base32
734 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
735 (build-system ant-build-system)
736 (arguments
737 `(#:jar-name "maven-shared-utils.jar"
738 #:source-dir "src/main/java"
739 #:phases
740 (modify-phases %standard-phases
741 (add-before 'build 'fix-/bin/sh-invocation
742 (lambda _
743 (substitute* (find-files "src" ".*.java$")
744 (("/bin/sh") (which "sh")))
745 #t))
746 (add-before 'check 'remove-cyclic-dep
747 (lambda _
748 (delete-file
749 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
750 #t))
751 (replace 'install
752 (install-from-pom "pom.xml")))))
753 (propagated-inputs
754 `(("java-jansi" ,java-jansi)
755 ("java-commons-io" ,java-commons-io)
756 ("java-jsr305" ,java-jsr305)
757 ("java-plexus-container-default" ,java-plexus-container-default)
758 ("maven-parent-pom-30" ,maven-parent-pom-30)))
759 (native-inputs
760 (list unzip java-junit java-hamcrest-core java-commons-lang3))
761 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
762 (synopsis "Plexus-util replacement for maven")
763 (description "This project aims to be a functional replacement for
764 plexus-utils in Maven. It is not a 100% API compatible replacement but a
765 replacement with improvements.")
766 (license license:asl2.0)))
767
768 (define-public maven-plugin-annotations
769 (package
770 (name "maven-plugin-annotations")
771 (version "3.5")
772 (source (origin
773 (method url-fetch)
774 (uri (string-append "mirror://apache/maven/"
775 "plugin-tools/maven-plugin-tools-" version
776 "-source-release.zip"))
777 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
778 (build-system ant-build-system)
779 (arguments
780 `(#:jar-name "maven-plugin-annotations.jar"
781 #:source-dir "maven-plugin-annotations/src/main/java"
782 #:tests? #f
783 #:phases
784 (modify-phases %standard-phases
785 (replace 'install
786 (install-from-pom "maven-plugin-annotations/pom.xml")))))
787 (propagated-inputs
788 (list maven-artifact maven-plugin-tools-parent-pom))
789 (native-inputs
790 (list unzip))
791 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
792 (synopsis "Java 5 annotations to use in Mojos")
793 (description "This package contains Java 5 annotations for use in Mojos.")
794 (license license:asl2.0)))
795
796 (define maven-plugin-tools-parent-pom
797 (package
798 (inherit maven-plugin-annotations)
799 (name "maven-plugin-tools-parent-pom")
800 (arguments
801 `(#:tests? #f
802 #:phases
803 (modify-phases %standard-phases
804 (delete 'configure)
805 (delete 'build)
806 (replace 'install
807 (install-pom-file "pom.xml")))))
808 (propagated-inputs '())))
809
810 (define-public maven-wagon-provider-api
811 (package
812 (name "maven-wagon-provider-api")
813 (version "3.4.3")
814 (source (origin
815 (method url-fetch)
816 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
817 "wagon-" version "-source-release.zip"))
818 (sha256
819 (base32
820 "1rnviw0yr4g5902fb8pkd1gyvci4bz7hndjvhkqmnkj7ay0y6mf0"))))
821 (build-system ant-build-system)
822 (arguments
823 `(#:jar-name "maven-wagon-provider-api.jar"
824 #:source-dir "wagon-provider-api/src/main/java"
825 #:test-dir "wagon-provider-api/src/test"
826 #:phases
827 (modify-phases %standard-phases
828 (replace 'install
829 (install-from-pom "wagon-provider-api/pom.xml")))))
830 (propagated-inputs
831 `(("java-plexus-utils" ,java-plexus-utils)
832 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
833 (native-inputs
834 (list unzip java-junit java-easymock))
835 (home-page "https://maven.apache.org/wagon")
836 (synopsis "Transport abstraction for Maven")
837 (description "Maven Wagon is a transport abstraction that is used in Maven's
838 artifact and repository handling code.")
839 (license license:asl2.0)))
840
841 (define maven-wagon-parent-pom
842 (package
843 (inherit maven-wagon-provider-api)
844 (arguments
845 `(#:tests? #f
846 #:phases
847 (modify-phases %standard-phases
848 (delete 'configure)
849 (delete 'build)
850 (replace 'install
851 (install-pom-file "pom.xml")))))
852 (propagated-inputs
853 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
854 (native-inputs
855 `(("unzip" ,unzip)))))
856
857 (define-public maven-wagon-provider-test
858 (package
859 (inherit maven-wagon-provider-api)
860 (name "maven-wagon-provider-test")
861 (arguments
862 `(#:jar-name "maven-wagon-provider-test.jar"
863 #:source-dir "wagon-provider-test/src/main/java"
864 #:tests? #f; no tests
865 #:jdk ,icedtea-8))
866 (inputs
867 `(("java-plexus-utils" ,java-plexus-utils)
868 ("java-plexus-container-default" ,java-plexus-container-default)
869 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
870 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
871 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
872 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
873 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
874 ("java-slf4j-api" ,java-slf4j-api)
875 ("java-javaee-servletapi" ,java-javaee-servletapi)
876 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
877 (synopsis "Test classes from maven-wagon")
878 (description "Maven Wagon is a transport abstraction that is used in Maven's
879 artifact and repository handling code. This package contains common test
880 classes used in multiple maven-wagon components.")))
881
882 (define-public maven-wagon-file
883 (package
884 (inherit maven-wagon-provider-api)
885 (name "maven-wagon-file")
886 (arguments
887 `(#:jar-name "maven-wagon-file.jar"
888 #:source-dir "wagon-providers/wagon-file/src/main/java"
889 #:test-dir "wagon-providers/wagon-file/src/test"
890 #:jdk ,icedtea-8
891 #:phases
892 (modify-phases %standard-phases
893 (add-before 'check 'fix-paths
894 (lambda _
895 ;; Tests assume they are run by maven, which copies test resources
896 ;; to target. Our ant-build-system does the same, but with the
897 ;; build directory.
898 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
899 (("target") "build"))
900 #t))
901 (add-after 'build 'generate-metadata
902 (lambda _
903 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
904 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
905 "--source" "wagon-providers/wagon-file/src/main/java"
906 "--output" "build/classes/META-INF/plexus/components.xml"
907 "--classes" "build/classes"
908 "--descriptors" "build/classes/META-INF")
909 #t))
910 (add-after 'generate-metadata 'rebuild
911 (lambda _
912 (invoke "ant" "jar")
913 #t)))))
914 (inputs
915 (list java-plexus-utils maven-wagon-provider-api))
916 (native-inputs
917 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
918 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
919 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
920 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
921 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
922 ("java-plexus-classworlds" ,java-plexus-classworlds)
923 ("java-guava" ,java-guava)
924 ("java-guice" ,java-guice)
925 ("java-javax-inject" ,java-javax-inject)
926 ("java-cglib" ,java-cglib)
927 ("java-slf4j-api" ,java-slf4j-api)
928 ("java-plexus-utils" ,java-plexus-utils)
929 ("java-plexus-cli" ,java-plexus-cli)
930 ("maven-plugin-api" ,maven-plugin-api)
931 ("maven-plugin-annotations" ,maven-plugin-annotations)
932 ("maven-core" ,maven-core)
933 ("maven-model" ,maven-model)
934 ("java-commons-cli" ,java-commons-cli)
935 ("java-qdox" ,java-qdox)
936 ("java-jdom2" ,java-jdom2)
937 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
938 ,@(package-native-inputs maven-wagon-provider-api)))
939 (synopsis "Wagon provider that gets and puts artifacts using the file system")
940 (description "Maven Wagon is a transport abstraction that is used in Maven's
941 artifact and repository handling code. It uses providers, that are tools to
942 manage artifacts and deployment. This package contains the file provider which
943 gets and puts artifacts using the file system.")))
944
945 (define-public maven-wagon-tck-http
946 (package
947 (inherit maven-wagon-provider-api)
948 (name "maven-wagon-tck-http")
949 (arguments
950 `(#:jar-name "maven-wagon-tck-http.jar"
951 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
952 #:tests? #f; no tests
953 #:jdk ,icedtea-8))
954 (inputs
955 `(("java-plexus-util" ,java-plexus-utils)
956 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
957 ("java-javaee-servletapi" ,java-javaee-servletapi)
958 ("java-slf4j-api" ,java-slf4j-api)
959 ("java-commons-codec" ,java-commons-codec)
960 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
961 ("java-plexus-classworlds" ,java-plexus-classworlds)
962 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
963 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
964 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
965 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
966 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
967 (synopsis "Wagon HTTP Test Compatibility Kit")
968 (description "Maven Wagon is a transport abstraction that is used in Maven's
969 artifact and repository handling code. This package contains the HTTP
970 Test Compatibility Kit.")))
971
972 (define-public maven-wagon-http-shared
973 (package
974 (inherit maven-wagon-provider-api)
975 (name "maven-wagon-http-shared")
976 (arguments
977 `(#:jar-name "maven-wagon-http-shared.jar"
978 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
979 #:test-dir "wagon-providers/wagon-http-shared/src/test"
980 #:jdk ,icedtea-8
981 #:phases
982 (modify-phases %standard-phases
983 (add-after 'build 'generate-metadata
984 (lambda _
985 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
986 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
987 "--source" "wagon-providers/wagon-http-shared/src/main/java"
988 "--output" "build/classes/META-INF/plexus/components.xml"
989 "--classes" "build/classes"
990 "--descriptors" "build/classes/META-INF")
991 #t))
992 (add-after 'generate-metadata 'rebuild
993 (lambda _
994 (invoke "ant" "jar")
995 #t)))))
996 (inputs
997 (list java-plexus-utils
998 java-httpcomponents-httpclient
999 java-httpcomponents-httpcore
1000 java-commons-io
1001 java-jsoup
1002 maven-wagon-provider-api))
1003 (native-inputs
1004 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
1005 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1006 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1007 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1008 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1009 ("java-plexus-classworlds" ,java-plexus-classworlds)
1010 ("java-guava" ,java-guava)
1011 ("java-guice" ,java-guice)
1012 ("java-javax-inject" ,java-javax-inject)
1013 ("java-cglib" ,java-cglib)
1014 ("java-slf4j-api" ,java-slf4j-api)
1015 ("java-plexus-utils" ,java-plexus-utils)
1016 ("java-plexus-cli" ,java-plexus-cli)
1017 ("maven-plugin-api" ,maven-plugin-api)
1018 ("maven-plugin-annotations" ,maven-plugin-annotations)
1019 ("maven-core" ,maven-core)
1020 ("maven-model" ,maven-model)
1021 ("java-commons-cli" ,java-commons-cli)
1022 ("java-qdox" ,java-qdox)
1023 ("java-jdom2" ,java-jdom2)
1024 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1025 ,@(package-native-inputs maven-wagon-provider-api)))
1026 (synopsis "Shared Library for wagon providers supporting HTTP")
1027 (description "Maven Wagon is a transport abstraction that is used in Maven's
1028 artifact and repository handling code. It uses providers, that are tools to
1029 manage artifacts and deployment. This package contains a shared library for
1030 wagon providers supporting HTTP.")))
1031
1032 (define-public maven-wagon-http
1033 (package
1034 (inherit maven-wagon-provider-api)
1035 (name "maven-wagon-http")
1036 (arguments
1037 `(#:jar-name "maven-wagon-http.jar"
1038 #:source-dir "wagon-providers/wagon-http/src/main/java"
1039 #:test-dir "wagon-providers/wagon-http/src/test"
1040 #:test-exclude (list
1041 "**/Abstract*.java"
1042 ;; FIXME: javax.net.ssl.SSLHandshakeException:
1043 ;; sun.security.validator.ValidatorException:
1044 ;; PKIX path building failed:
1045 ;; sun.security.provider.certpath.SunCertPathBuilderException:
1046 ;; unable to find valid certification path to requested target
1047 "**/HttpsWagonPreemptiveTest.java"
1048 "**/HttpsWagonTest.java"
1049 ;; Timeout
1050 "**/HugeFileDownloadTest.java"
1051 ;; Injection errors
1052 "**/TckTest.java")
1053 #:jdk ,icedtea-8
1054 #:phases
1055 (modify-phases %standard-phases
1056 (add-before 'build 'copy-resources
1057 (lambda _
1058 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
1059 "build/classes/META-INF/plexus")
1060 #t))
1061 (add-before 'check 'fix-resource-path
1062 (lambda _
1063 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
1064 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
1065 (("src/test") "wagon-providers/wagon-http/src/test"))
1066 #t)))))
1067 (inputs
1068 (list java-plexus-utils
1069 java-httpcomponents-httpclient
1070 java-httpcomponents-httpcore
1071 maven-wagon-http-shared
1072 maven-wagon-tck-http
1073 maven-wagon-provider-api))
1074 (native-inputs
1075 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
1076 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1077 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1078 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1079 ("java-plexus-container-default" ,java-plexus-container-default)
1080 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1081 ("java-plexus-classworlds" ,java-plexus-classworlds)
1082 ("java-guava" ,java-guava)
1083 ("java-guice" ,java-guice)
1084 ("java-inject" ,java-javax-inject)
1085 ("java-cglib" ,java-cglib)
1086 ("java-slf4j-api" ,java-slf4j-api)
1087 ("java-plexus-utils" ,java-plexus-utils)
1088 ("java-plexus-cli" ,java-plexus-cli)
1089 ("maven-plugin-api" ,maven-plugin-api)
1090 ("maven-plugin-annotations" ,maven-plugin-annotations)
1091 ("maven-core" ,maven-core)
1092 ("maven-model" ,maven-model)
1093 ("java-commons-cli" ,java-commons-cli)
1094 ("java-qdox" ,java-qdox)
1095 ("java-jdom2" ,java-jdom2)
1096 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1097 ("java-javaee-servletapi" ,java-javaee-servletapi)
1098 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
1099 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
1100 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
1101 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
1102 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
1103 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
1104 ("java-hamcrest-core" ,java-hamcrest-core)
1105 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1106 ("java-commons-codec" ,java-commons-codec)
1107 ("java-commons-io" ,java-commons-io)
1108 ("java-jsoup" ,java-jsoup)
1109 ("java-slf4j-simple" ,java-slf4j-simple)
1110 ,@(package-native-inputs maven-wagon-provider-api)))
1111 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
1112 (description "Maven Wagon is a transport abstraction that is used in Maven's
1113 artifact and repository handling code. It uses providers, that are tools to
1114 manage artifacts and deployment. This package contains a Wagon provider that
1115 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
1116
1117 (define maven-pom
1118 (package
1119 (name "maven-pom")
1120 (version "3.8.4")
1121 (source (origin
1122 (method url-fetch)
1123 (uri (string-append "mirror://apache/maven/"
1124 "maven-3/" version "/source/"
1125 "apache-maven-" version "-src.tar.gz"))
1126 (sha256 (base32 "16xbhkhhp05gskgbhrf1ia8riivvkhpk822n9xgnad61f9hzp2r9"))
1127 (modules '((guix build utils)))
1128 (snippet
1129 '(begin
1130 (for-each delete-file (find-files "." "\\.jar$"))
1131 #t))
1132 (patches
1133 (search-patches "maven-generate-component-xml.patch"
1134 "maven-generate-javax-inject-named.patch"))))
1135 (build-system ant-build-system)
1136 (arguments
1137 `(#:tests? #f
1138 #:phases
1139 (modify-phases %standard-phases
1140 (delete 'configure)
1141 (delete 'build)
1142 (add-before 'install 'fix-dependencies
1143 (lambda _
1144 (substitute* "pom.xml"
1145 (("classWorldsVersion>.*")
1146 (string-append
1147 "classWorldsVersion>"
1148 ,(package-version java-plexus-classworlds)
1149 "</classWorldsVersion>\n"))
1150 (("commonsCliVersion>.*")
1151 (string-append
1152 "commonsCliVersion>"
1153 ,(package-version java-commons-cli)
1154 "</commonsCliVersion>\n"))
1155 (("commonsLangVersion>.*")
1156 (string-append
1157 "commonsLangVersion>"
1158 ,(package-version java-commons-lang3)
1159 "</commonsLangVersion>\n"))
1160 (("plexusUtilsVersion>.*")
1161 (string-append
1162 "plexusUtilsVersion>"
1163 ,(package-version java-plexus-utils)
1164 "</plexusUtilsVersion>\n"))
1165 (("plexusInterpolationVersion>.*")
1166 (string-append
1167 "plexusInterpolationVersion>"
1168 ,(package-version java-plexus-interpolation)
1169 "</plexusInterpolationVersion>\n"))
1170 (("guiceVersion>.*")
1171 (string-append
1172 "guiceVersion>"
1173 ,(package-version java-guice)
1174 "</guiceVersion>\n"))
1175 (("sisuInjectVersion>.*")
1176 (string-append
1177 "sisuInjectVersion>"
1178 ,(package-version java-eclipse-sisu-inject)
1179 "</sisuInjectVersion>\n"))
1180 (("securityDispatcherVersion>.*")
1181 (string-append
1182 "securityDispatcherVersion>"
1183 ,(package-version java-plexus-sec-dispatcher)
1184 "</securityDispatcherVersion>\n"))
1185 (("cipherVersion>.*")
1186 (string-append
1187 "cipherVersion>"
1188 ,(package-version java-plexus-cipher)
1189 "</cipherVersion>\n"))
1190 (("slf4jVersion>.*")
1191 (string-append
1192 "slf4jVersion>"
1193 ,(package-version java-slf4j-api)
1194 "</slf4jVersion>\n"))
1195 (("<classifier>no_aop</classifier>") ""))
1196 #t))
1197 (replace 'install
1198 (install-pom-file "pom.xml")))))
1199 (propagated-inputs
1200 `(("maven-parent-pom-34" ,maven-parent-pom-34)))
1201 (home-page "https://maven.apache.org/")
1202 (synopsis "Build system")
1203 (description "Apache Maven is a software project management and comprehension
1204 tool. This package contains the Maven pom file, used by all maven components.")
1205 (license license:asl2.0)))
1206
1207 (define-public maven-artifact
1208 (package
1209 (inherit maven-pom)
1210 (name "maven-artifact")
1211 (arguments
1212 `(#:jar-name "maven-artifact.jar"
1213 #:source-dir "maven-artifact/src/main/java"
1214 #:test-dir "maven-artifact/src/test"
1215 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1216 #:phases
1217 (modify-phases %standard-phases
1218 (replace 'install
1219 (install-from-pom "maven-artifact/pom.xml")))))
1220 (propagated-inputs
1221 (list java-plexus-utils java-commons-lang3 maven-pom))
1222 (native-inputs
1223 (list java-junit))
1224 (description "Apache Maven is a software project management and comprehension
1225 tool. This package contains the Maven Artifact classes, providing the
1226 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1227 jar file is executable and provides a little tool to display how Maven parses
1228 and compares versions:")))
1229
1230 (define-public maven-model
1231 (package
1232 (inherit maven-artifact)
1233 (name "maven-model")
1234 (arguments
1235 `(#:jar-name "maven-model.jar"
1236 #:source-dir "maven-model/src/main/java"
1237 #:test-dir "maven-model/src/test"
1238 #:phases
1239 (modify-phases %standard-phases
1240 (add-before 'build 'generate-models
1241 (lambda* (#:key inputs #:allow-other-keys)
1242 (define (modello-single-mode file version mode)
1243 (invoke "java" "org.codehaus.modello.ModelloCli"
1244 file mode "maven-model/src/main/java" version
1245 "false" "true"))
1246 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1247 (modello-single-mode file "4.0.0" "java")
1248 (modello-single-mode file "4.0.0" "xpp3-reader")
1249 (modello-single-mode file "4.0.0" "xpp3-extended-reader")
1250 (modello-single-mode file "4.0.0" "xpp3-writer")
1251 (modello-single-mode file "4.0.0" "xpp3-extended-writer"))
1252 #t))
1253 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1254 (propagated-inputs
1255 (list java-commons-lang3 java-plexus-utils maven-pom))
1256 (native-inputs
1257 (list java-modello-core
1258 ;; for modello:
1259 java-eclipse-sisu-plexus
1260 java-plexus-component-annotations
1261 java-guice
1262 java-cglib
1263 java-asm
1264 java-eclipse-sisu-inject
1265 java-javax-inject
1266 java-plexus-classworlds
1267 java-guava
1268 java-geronimo-xbean-reflect
1269 java-plexus-build-api
1270 ;; modello plugins:
1271 java-modello-plugins-java
1272 java-modello-plugins-xml
1273 java-modello-plugins-xpp3
1274 ;; for tests
1275 java-junit))
1276 (description "Apache Maven is a software project management and comprehension
1277 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1278 so really just plain Java objects.")))
1279
1280 (define-public maven-builder-support
1281 (package
1282 (inherit maven-artifact)
1283 (name "maven-builder-support")
1284 (arguments
1285 `(#:jar-name "maven-builder-support.jar"
1286 #:source-dir "maven-builder-support/src/main/java"
1287 #:jdk ,icedtea-8
1288 #:test-dir "maven-builder-support/src/test"
1289 #:phases
1290 (modify-phases %standard-phases
1291 (add-before 'check 'fix-paths
1292 (lambda _
1293 (with-directory-excursion "maven-builder-support/src/test/java"
1294 (substitute*
1295 '("org/apache/maven/building/FileSourceTest.java"
1296 "org/apache/maven/building/UrlSourceTest.java")
1297 (("target/test-classes") "maven-builder-support/src/test/resources")))
1298 #t))
1299 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1300 (propagated-inputs
1301 (list maven-pom))
1302 (native-inputs
1303 (list java-junit))
1304 (description "Apache Maven is a software project management and comprehension
1305 tool. This package contains a support library for descriptor builders (model,
1306 setting, toolchains)")))
1307
1308 (define-public maven-settings
1309 (package
1310 (inherit maven-artifact)
1311 (name "maven-settings")
1312 (arguments
1313 `(#:jar-name "maven-settings.jar"
1314 #:source-dir "maven-settings/src/main/java"
1315 #:tests? #f; no tests
1316 #:phases
1317 (modify-phases %standard-phases
1318 (add-before 'build 'generate-models
1319 (lambda* (#:key inputs #:allow-other-keys)
1320 (define (modello-single-mode file version mode)
1321 (invoke "java" "org.codehaus.modello.ModelloCli"
1322 file mode "maven-settings/src/main/java" version
1323 "false" "true"))
1324 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1325 (modello-single-mode file "1.2.0" "java")
1326 (modello-single-mode file "1.2.0" "xpp3-reader")
1327 (modello-single-mode file "1.2.0" "xpp3-writer"))
1328 #t))
1329 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1330 (propagated-inputs
1331 (list java-plexus-utils maven-pom))
1332 (native-inputs
1333 (list java-modello-core
1334 ;; for modello:
1335 ;("container" ,java-plexus-container-default)
1336 java-eclipse-sisu-plexus
1337 java-plexus-component-annotations
1338 java-guice
1339 java-cglib
1340 java-eclipse-sisu-inject
1341 java-javax-inject
1342 java-plexus-classworlds
1343 java-plexus-utils
1344 java-guava
1345 java-geronimo-xbean-reflect
1346 java-plexus-build-api
1347 ;; modello plugins:
1348 java-modello-plugins-java
1349 java-modello-plugins-xml
1350 java-modello-plugins-xpp3))
1351 (description "Apache Maven is a software project management and comprehension
1352 tool. This package contains strictly the model for Maven settings, that is
1353 simply plain java objects.")))
1354
1355 (define-public maven-settings-builder
1356 (package
1357 (inherit maven-artifact)
1358 (name "maven-settings-builder")
1359 (arguments
1360 `(#:jar-name "maven-settings-builder.jar"
1361 #:source-dir "maven-settings-builder/src/main/java"
1362 #:jdk ,icedtea-8
1363 #:test-dir "maven-settings-builder/src/test"
1364 #:phases
1365 (modify-phases %standard-phases
1366 (add-before 'build 'generate-sisu-named
1367 (lambda _
1368 (mkdir-p "build/classes/META-INF/sisu")
1369 (chmod "sisu.sh" #o755)
1370 (invoke "./sisu.sh" "maven-settings-builder/src/main/java"
1371 "build/classes/META-INF/sisu/javax.inject.Named")))
1372 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1373 (propagated-inputs
1374 (list java-plexus-utils
1375 java-plexus-interpolation
1376 java-plexus-sec-dispatcher
1377 maven-builder-support
1378 maven-settings
1379 maven-pom))
1380 (native-inputs
1381 (list java-junit java-javax-inject java-plexus-component-annotations))
1382 (description "Apache Maven is a software project management and comprehension
1383 tool. This package contains the effective model builder, with profile activation,
1384 inheritance, interpolation, @dots{}")))
1385
1386 (define-public maven-model-builder
1387 (package
1388 (inherit maven-artifact)
1389 (name "maven-model-builder")
1390 (arguments
1391 `(#:jar-name "maven-model-builder.jar"
1392 #:source-dir "maven-model-builder/src/main/java"
1393 #:jdk ,icedtea-8
1394 #:test-dir "maven-model-builder/src/test"
1395 #:phases
1396 (modify-phases %standard-phases
1397 (add-before 'build 'copy-resources
1398 (lambda _
1399 (copy-recursively "maven-model-builder/src/main/resources"
1400 "build/classes")
1401 #t))
1402 (add-before 'build 'generate-sisu-named
1403 (lambda _
1404 (mkdir-p "build/classes/META-INF/sisu")
1405 (chmod "sisu.sh" #o755)
1406 (invoke "./sisu.sh" "maven-model-builder/src/main/java"
1407 "build/classes/META-INF/sisu/javax.inject.Named")))
1408 (add-before 'check 'fix-paths
1409 (lambda _
1410 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1411 (("src/test") "maven-model-builder/src/test"))
1412 #t))
1413 (replace 'install
1414 (install-from-pom "maven-model-builder/pom.xml")))))
1415 (propagated-inputs
1416 (list java-plexus-interpolation
1417 java-plexus-utils
1418 maven-artifact
1419 maven-builder-support
1420 maven-model
1421 maven-pom))
1422 (native-inputs
1423 `(("java-junit" ,java-junit)
1424 ("java-guava" ,java-guava)
1425 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1426 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1427 ("java-powermock-reflect" ,java-powermock-reflect)
1428 ("java-objenesis" ,java-objenesis)
1429 ("guice" ,java-guice)
1430 ("java-cglib" ,java-cglib)
1431 ("sisu-inject" ,java-eclipse-sisu-inject)
1432 ("javax-inject" ,java-javax-inject)
1433 ("java-xmlunit" ,java-xmlunit)
1434 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1435 ("xbean" ,java-geronimo-xbean-reflect)
1436 ("classworlds" ,java-plexus-classworlds)))
1437 (description "Apache Maven is a software project management and comprehension
1438 tool. This package contains the effective model builder, with profile activation,
1439 inheritance, interpolation, @dots{}")))
1440
1441 (define-public maven-repository-metadata
1442 (package
1443 (inherit maven-artifact)
1444 (name "maven-repository-metadata")
1445 (arguments
1446 `(#:jar-name "maven-repository-metadata.jar"
1447 #:source-dir "maven-repository-metadata/src/main/java"
1448 #:jdk ,icedtea-8
1449 #:tests? #f; no tests
1450 #:phases
1451 (modify-phases %standard-phases
1452 (add-before 'build 'generate-models
1453 (lambda* (#:key inputs #:allow-other-keys)
1454 (define (modello-single-mode file version mode)
1455 (invoke "java" "org.codehaus.modello.ModelloCli"
1456 file mode "maven-repository-metadata/src/main/java" version
1457 "false" "true"))
1458 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1459 (modello-single-mode file "1.1.0" "java")
1460 (modello-single-mode file "1.1.0" "xpp3-reader")
1461 (modello-single-mode file "1.1.0" "xpp3-writer"))
1462 #t))
1463 (replace 'install
1464 (install-from-pom "maven-repository-metadata/pom.xml")))))
1465 (propagated-inputs
1466 (list java-plexus-utils maven-pom))
1467 (native-inputs
1468 `(("modello" ,java-modello-core)
1469 ;; for modello:
1470 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1471 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1472 ("java-guice" ,java-guice)
1473 ("java-cglib" ,java-cglib)
1474 ("java-asm" ,java-asm)
1475 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1476 ("java-javax-inject" ,java-javax-inject)
1477 ("java-plexus-utils" ,java-plexus-utils)
1478 ("java-plexus-classworlds" ,java-plexus-classworlds)
1479 ("java-guava" ,java-guava)
1480 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1481 ("java-plexus-build-api" ,java-plexus-build-api)
1482 ;; modello plugins:
1483 ("java-modello-plugins-java" ,java-modello-plugins-java)
1484 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1485 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1486 (description "Apache Maven is a software project management and comprehension
1487 tool. This package contains strictly the model for Maven Repository Metadata,
1488 so really just plain objects.")))
1489
1490 (define-public maven-resolver-provider
1491 (package
1492 (inherit maven-artifact)
1493 (name "maven-resolver-provider")
1494 (arguments
1495 `(#:jar-name "maven-resolver-provider.jar"
1496 #:source-dir "maven-resolver-provider/src/main/java"
1497 #:test-dir "maven-resolver-provider/src/test"
1498 #:jdk ,icedtea-8
1499 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1500 #:phases
1501 (modify-phases %standard-phases
1502 (add-before 'build 'generate-sisu-named
1503 (lambda _
1504 (mkdir-p "build/classes/META-INF/sisu")
1505 (chmod "./sisu.sh" #o755)
1506 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1507 "build/classes/META-INF/sisu/javax.inject.Named")
1508 #t))
1509 (replace 'install
1510 (install-from-pom "maven-resolver-provider/pom.xml")))))
1511 (propagated-inputs
1512 (list maven-model
1513 maven-model-builder
1514 maven-resolver-spi
1515 maven-resolver-api
1516 maven-resolver-impl
1517 maven-resolver-util
1518 maven-builder-support
1519 maven-repository-metadata
1520 java-plexus-utils
1521 java-plexus-component-annotations
1522 java-guice
1523 java-javax-inject))))
1524
1525 (define-public maven-plugin-api
1526 (package
1527 (inherit maven-artifact)
1528 (name "maven-plugin-api")
1529 (arguments
1530 `(#:jar-name "maven-plugin-api.jar"
1531 #:source-dir "maven-plugin-api/src/main/java"
1532 #:jdk ,icedtea-8
1533 #:test-dir "maven-plugin-api/src/test"
1534 #:phases
1535 (modify-phases %standard-phases
1536 (add-before 'build 'generate-models
1537 (lambda* (#:key inputs #:allow-other-keys)
1538 (define (modello-single-mode file version mode)
1539 (invoke "java" "org.codehaus.modello.ModelloCli"
1540 file mode "maven-plugin-api/src/main/java" version
1541 "false" "true"))
1542 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1543 (modello-single-mode file "1.0.0" "java")
1544 (modello-single-mode file "1.0.0" "xpp3-reader")
1545 (modello-single-mode file "1.0.0" "xpp3-writer"))
1546 #t))
1547 (replace 'install
1548 (install-from-pom "maven-plugin-api/pom.xml")))))
1549 (propagated-inputs
1550 `(("maven-artifact" ,maven-artifact)
1551 ("maven-model" ,maven-model)
1552 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1553 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1554 ("guice" ,java-guice)
1555 ("java-cglib" ,java-cglib)
1556 ("sisu-inject" ,java-eclipse-sisu-inject)
1557 ("javax-inject" ,java-javax-inject)
1558 ("utils" ,java-plexus-utils)))
1559 (native-inputs
1560 `(("modello" ,java-modello-core)
1561 ;; for modello:
1562 ("classworlds" ,java-plexus-classworlds)
1563 ("guava" ,java-guava)
1564 ("xbean" ,java-geronimo-xbean-reflect)
1565 ("build-api" ,java-plexus-build-api)
1566 ;; modello plugins:
1567 ("java" ,java-modello-plugins-java)
1568 ("xml" ,java-modello-plugins-xml)
1569 ("xpp3" ,java-modello-plugins-xpp3)
1570 ;; for tests
1571 ("java-junit" ,java-junit)))
1572 (description "Apache Maven is a software project management and comprehension
1573 tool. This package contains strictly the API for plugins -- composed of goals
1574 implemented by Mojos -- development.
1575
1576 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1577 generally generated from plugin sources using maven-plugin-plugin.")))
1578
1579 (define-public maven-core-bootstrap
1580 (hidden-package
1581 (package
1582 (inherit maven-artifact)
1583 (name "maven-core")
1584 (arguments
1585 `(#:jar-name "maven-core.jar"
1586 #:source-dir "src/main/java"
1587 #:jdk ,icedtea-8
1588 ;; Tests need maven-compat, which requires maven-core
1589 #:tests? #f
1590 #:phases
1591 (modify-phases %standard-phases
1592 (add-before 'configure 'chdir
1593 (lambda _
1594 ;; Required for generating components.xml in maven-core
1595 (chdir "maven-core")
1596 #t))
1597 (add-before 'build 'copy-resources
1598 (lambda _
1599 (mkdir-p "build/classes/")
1600 (copy-recursively "src/main/resources" "build/classes")
1601 #t))
1602 (add-after 'copy-resources 'fill-properties
1603 (lambda _
1604 ;; This file controls the output of some mvn subcommands, such as
1605 ;; mvn -version.
1606 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1607 (("\\$\\{buildNumber\\}") "guix_build")
1608 (("\\$\\{timestamp\\}") "0")
1609 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1610 (("\\$\\{distributionId\\}") "apache-maven")
1611 (("\\$\\{distributionShortName\\}") "Maven")
1612 (("\\$\\{distributionName\\}") "Apache Maven"))
1613 #t))
1614 (add-before 'build 'generate-sisu-named
1615 (lambda _
1616 (mkdir-p "build/classes/META-INF/sisu")
1617 (chmod "../sisu.sh" #o755)
1618 (invoke "../sisu.sh" "src/main/java"
1619 "build/classes/META-INF/sisu/javax.inject.Named")
1620 #t))
1621 (add-before 'build 'generate-models
1622 (lambda* (#:key inputs #:allow-other-keys)
1623 (define (modello-single-mode file version mode)
1624 (invoke "java" "org.codehaus.modello.ModelloCli"
1625 file mode "src/main/java" version
1626 "false" "true"))
1627 (let ((file "src/main/mdo/toolchains.mdo"))
1628 (modello-single-mode file "1.1.0" "java")
1629 (modello-single-mode file "1.1.0" "xpp3-reader")
1630 (modello-single-mode file "1.1.0" "xpp3-writer"))
1631 #t))
1632 (add-before 'install 'fix-pom
1633 (lambda _
1634 (substitute* "pom.xml"
1635 (("<classifier>no_aop</classifier>") ""))
1636 #t))
1637 (replace 'install
1638 (install-from-pom "pom.xml")))))
1639 (propagated-inputs
1640 `(("maven-artifact" ,maven-artifact)
1641 ("maven-resolver-provider" ,maven-resolver-provider)
1642 ("maven-builder-support" ,maven-builder-support)
1643 ("maven-model" ,maven-model)
1644 ("maven-model-builder" ,maven-model-builder)
1645 ("maven-settings" ,maven-settings)
1646 ("maven-settings-builder" ,maven-settings-builder)
1647 ("maven-plugin-api" ,maven-plugin-api)
1648 ("maven-repository-metadata" ,maven-repository-metadata)
1649 ("maven-shared-utils" ,maven-shared-utils)
1650 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1651 ("java-plexus-utils" ,java-plexus-utils)
1652 ("java-commons-lang3" ,java-commons-lang3)
1653 ("java-guava" ,java-guava)
1654 ("java-guice" ,java-guice)
1655 ("maven-resolver-api" ,maven-resolver-api)
1656 ("maven-resolver-spi" ,maven-resolver-spi)
1657 ("maven-resolver-util" ,maven-resolver-util)
1658 ("maven-resolver-impl" ,maven-resolver-impl)
1659 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1660 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1661 ("java-javax-inject" ,java-javax-inject)
1662 ("java-plexus-classworld" ,java-plexus-classworlds)))
1663 (native-inputs
1664 `(("java-modello-core" ,java-modello-core)
1665 ("java-cglib" ,java-cglib)
1666 ("java-plexus-classworlds" ,java-plexus-classworlds)
1667 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1668 ("java-plexus-build-api" ,java-plexus-build-api)
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)
1672 ;; tests
1673 ("java-junit" ,java-junit)
1674 ("java-mockito-1" ,java-mockito-1)
1675 ("java-commons-jxpath" ,java-commons-jxpath)))
1676 (description "Apache Maven is a software project management and comprehension
1677 tool. This package contains the maven core classes managing the whole build
1678 process."))))
1679
1680 (define-public maven-core
1681 (package
1682 (inherit maven-core-bootstrap)
1683 (arguments
1684 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1685 ((#:phases phases)
1686 `(modify-phases ,phases
1687 (add-before 'build 'modify-metainf
1688 (lambda _
1689 (substitute* "build.xml"
1690 (("message=\"\"")
1691 (string-append "message=\"Implementation-Version: "
1692 (package-version maven) "\n\"")))
1693 #t))
1694 (add-before 'build 'add-maven-files
1695 (lambda _
1696 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1697 (copy-file "pom.xml"
1698 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1699 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1700 (lambda _
1701 (format #t "version=~a~%
1702 groupId=org.apache.maven~%
1703 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1704 #t))
1705 (add-after 'build 'generate-metadata
1706 (lambda _
1707 (define (components file)
1708 (let ((sxml (with-input-from-file file
1709 (lambda _ (xml->sxml (current-input-port)
1710 #:trim-whitespace? #t)))))
1711 ;; Select the list of <component>s inside the <component-set>
1712 ;; and <components>.
1713 ((@ (ice-9 match) match) sxml
1714 (('*TOP*
1715 ('*PI* foo ...)
1716 ('component-set
1717 ('components x ...))) x))))
1718 (use-modules (sxml simple))
1719 (delete-file "build/classes/META-INF/plexus/components.xml")
1720 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1721 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1722 "--source" "build/classes/META-INF/plexus"
1723 "--output" "build/classes/META-INF/plexus/components.t.xml"
1724 "--classes" "build/classes"
1725 "--descriptors" "build/classes")
1726 ;; Now we merge all other components from hand-written xml
1727 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1728 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1729 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1730 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1731 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1732 (lambda _
1733 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1734 (sxml->xml
1735 `(component-set
1736 (components
1737 ,@(append generated-xml components-xml
1738 default-bindings-xml
1739 artifact-handlers-xml)))))))
1740 #t))
1741 (add-after 'generate-metadata 'fix-plugin-versions
1742 (lambda _
1743 ;; This file controls the default plugins used by Maven. Ensure
1744 ;; we use the versions we have packaged by default
1745 (substitute* '("build/classes/META-INF/plexus/default-bindings.xml"
1746 "build/classes/META-INF/plexus/components.xml")
1747 (("maven-install-plugin:[0-9.]+")
1748 (string-append "maven-install-plugin:"
1749 ,(package-version maven-install-plugin)))
1750 (("maven-resources-plugin:[0-9.]+")
1751 (string-append "maven-resources-plugin:"
1752 ,(package-version maven-resources-plugin)))
1753 (("maven-compiler-plugin:[0-9.]+")
1754 (string-append "maven-compiler-plugin:"
1755 ,(package-version maven-compiler-plugin)))
1756 (("maven-surefire-plugin:[0-9.]+")
1757 (string-append "maven-surefire-plugin:"
1758 ,(package-version maven-surefire-plugin)))
1759 (("maven-jar-plugin:[0-9.]+")
1760 (string-append "maven-jar-plugin:"
1761 ,(package-version maven-jar-plugin))))))
1762 (add-after 'fix-plugin-versions 'rebuild
1763 (lambda _
1764 (invoke "ant" "jar")
1765 #t))))))
1766 (native-inputs
1767 `(("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1768 ("java-commons-cli" ,java-commons-cli)
1769 ("java-plexus-cli" ,java-plexus-cli)
1770 ("java-jdom2" ,java-jdom2)
1771 ("java-qdox" ,java-qdox)
1772 ("maven-core-boot" ,maven-core-bootstrap)
1773 ,@(package-native-inputs maven-core-bootstrap)))))
1774
1775 (define-public maven-embedder
1776 (package
1777 (inherit maven-artifact)
1778 (name "maven-embedder")
1779 (arguments
1780 `(#:jar-name "maven-embedder.jar"
1781 #:source-dir "maven-embedder/src/main/java"
1782 #:test-dir "maven-embedder/src/test"
1783 #:test-exclude (list "**/MavenCliTest.java")
1784 #:jdk ,icedtea-8
1785 #:phases
1786 (modify-phases %standard-phases
1787 (add-before 'build 'generate-sisu-named
1788 (lambda _
1789 (mkdir-p "build/classes/META-INF/sisu")
1790 (chmod "sisu.sh" #o755)
1791 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1792 "build/classes/META-INF/sisu/javax.inject.Named")
1793 #t))
1794 (add-before 'build 'generate-models
1795 (lambda* (#:key inputs #:allow-other-keys)
1796 (define (modello-single-mode file version mode)
1797 (invoke "java" "org.codehaus.modello.ModelloCli"
1798 file mode "maven-embedder/src/main/java" version
1799 "false" "true"))
1800 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1801 (modello-single-mode file "1.0.0" "java")
1802 (modello-single-mode file "1.0.0" "xpp3-reader")
1803 (modello-single-mode file "1.0.0" "xpp3-writer"))
1804 #t))
1805 (add-before 'check 'fix-test-paths
1806 (lambda _
1807 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1808 (("target/test-classes") "build/test-classes"))
1809 #t))
1810 (add-before 'check 'fix-test-compilation
1811 (lambda _
1812 ;; Tests are in the java/ subdir. Other subdirectories contain
1813 ;; additional test plugins, with duplicate classes, so we can't
1814 ;; compile them. Also, they are meant to be built with maven, to
1815 ;; test its build process.
1816 (substitute* "build.xml"
1817 (("srcdir=\"maven-embedder/src/test\"")
1818 "srcdir=\"maven-embedder/src/test/java\""))
1819 #t))
1820 (add-before 'check 'disable-failing-test
1821 (lambda _
1822 (delete-file "maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java")))
1823 (add-before 'install 'fix-pom
1824 (lambda _
1825 (substitute* "maven-embedder/pom.xml"
1826 (("jsr250-api") "javax.annotation-api"))))
1827 (replace 'install
1828 (install-from-pom "maven-embedder/pom.xml")))))
1829 (propagated-inputs
1830 `(("maven-core" ,maven-core)
1831 ("maven-artifact" ,maven-artifact)
1832 ("maven-plugin-api" ,maven-plugin-api)
1833 ("maven-builder-support" ,maven-builder-support)
1834 ("maven-model" ,maven-model)
1835 ("maven-model-builder" ,maven-model-builder)
1836 ("maven-settings" ,maven-settings)
1837 ("maven-settings-builder" ,maven-settings-builder)
1838 ("maven-shared-utils" ,maven-shared-utils)
1839 ("java-plexus-classworlds" ,java-plexus-classworlds)
1840 ("java-plexus-util" ,java-plexus-utils)
1841 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1842 ("java-plexus-cipher" ,java-plexus-cipher)
1843 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1844 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1845 ("maven-resolevr-util" ,maven-resolver-util)
1846 ("maven-resolevr-api" ,maven-resolver-api)
1847 ("java-logback-core" ,java-logback-core)
1848 ("java-logback-classic" ,java-logback-classic)
1849 ("java-commons-cli" ,java-commons-cli)
1850 ("java-commons-io" ,java-commons-io)
1851 ("java-commons-lang3" ,java-commons-lang3)
1852 ("java-guava" ,java-guava)
1853 ("java-guice" ,java-guice)
1854 ("java-javax-inject" ,java-javax-inject)
1855 ("java-slf4j-api" ,java-slf4j-api)
1856 ("java-slf4j-simple" ,java-slf4j-simple)
1857 ("java-jsr250" ,java-jsr250)))
1858 (native-inputs
1859 `(("java-asm-8" ,java-asm-8)
1860 ("java-modello-core" ,java-modello-core)
1861 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1862 ("java-plexus-build-api" ,java-plexus-build-api)
1863 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1864 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1865 ("java-cglib" ,java-cglib)
1866 ("java-modello-plugins-java" ,java-modello-plugins-java)
1867 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1868 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1869 ;; tests
1870 ("java-junit" ,java-junit)
1871 ("java-objenesis" ,java-objenesis)
1872 ("java-mockito-1" ,java-mockito-1)
1873 ("java-hamcrest-core" ,java-hamcrest-core)))
1874 (description "Apache Maven is a software project management and comprehension
1875 tool. This package contains a Maven embeddable component, with CLI and
1876 logging support.")))
1877
1878 (define-public maven-compat
1879 (package
1880 (inherit maven-artifact)
1881 (name "maven-compat")
1882 (arguments
1883 `(#:jar-name "maven-compat.jar"
1884 #:source-dir "src/main/java"
1885 #:jdk ,icedtea-8
1886 #:test-dir "src/test"
1887 #:phases
1888 (modify-phases %standard-phases
1889 ;; Tests assume we're in this directory
1890 (add-before 'configure 'chdir
1891 (lambda _
1892 (chdir "maven-compat")
1893 #t))
1894 (add-before 'build 'recreate-removed-jar
1895 (lambda _
1896 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1897 (const #t))
1898 (with-directory-excursion "src/test/resources"
1899 (with-output-to-file "artifact-install/artifact-1.0.jar"
1900 (lambda _
1901 (format #t "dummy~%")))
1902 (for-each
1903 (lambda (file)
1904 (with-output-to-file file
1905 (lambda _
1906 (format #t "foo~%"))))
1907 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1908 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1909 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1910 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1911 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1912 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1913 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1914 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1915 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1916 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1917 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1918 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1919 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1920 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1921 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1922 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1923 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1924 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1925 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1926 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1927 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1928 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1929 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1930 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1931 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1932 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1933 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1934 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1935 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1936 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1937 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1938 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1939 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1940 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1941 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1942 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1943 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1944 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1945 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1946 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1947 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1948 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1949 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1950 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1951 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1952 (with-directory-excursion "local-repo/snapshot-test/jars"
1953 (for-each
1954 (lambda (file)
1955 (with-output-to-file file
1956 (lambda _
1957 ;; No end-of-line
1958 (format #t "local"))))
1959 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1960 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1961 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1962 (for-each
1963 (lambda (letter)
1964 (with-directory-excursion
1965 (string-append "src/test/remote-repo/org/apache/maven/its/"
1966 letter "/0.1")
1967 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1968 letter)))
1969 (mkdir-p dir)
1970 (copy-file (string-append letter "-0.1.pom")
1971 (string-append dir "/pom.xml"))
1972 (with-output-to-file (string-append dir "/pom.properties")
1973 (lambda _
1974 (format #t "version=0.1~%")
1975 (format #t "groupId=org.apache.maven.its")
1976 (format #t (string-append "artifactId=" letter))))
1977 (with-output-to-file "META-INF/MANIFEST.MF"
1978 (lambda _
1979 (format #t "Manifest-Version: 1.0~%"))))
1980 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1981 (string-append letter "-0.1.jar") "META-INF")))
1982 '("a" "b"))
1983 #t))
1984 (add-before 'build 'generate-models
1985 (lambda* (#:key inputs #:allow-other-keys)
1986 (define (modello-single-mode file version mode)
1987 (invoke "java" "org.codehaus.modello.ModelloCli"
1988 file mode "src/main/java" version
1989 "false" "true"))
1990 (let ((file "src/main/mdo/profiles.mdo"))
1991 (modello-single-mode file "1.0.0" "java")
1992 (modello-single-mode file "1.0.0" "xpp3-reader")
1993 (modello-single-mode file "1.0.0" "xpp3-writer"))
1994 (let ((file "src/main/mdo/paramdoc.mdo"))
1995 (modello-single-mode file "1.0.0" "java")
1996 (modello-single-mode file "1.0.0" "xpp3-reader")
1997 (modello-single-mode file "1.0.0" "xpp3-writer"))
1998 #t))
1999 (add-after 'build 'generate-metadata
2000 (lambda _
2001 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2002 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2003 "--source" "src/main/java"
2004 "--output" "build/classes/META-INF/plexus/components.xml"
2005 "--classes" "build/classes"
2006 "--descriptors" "build/classes/META-INF")
2007 #t))
2008 (add-before 'check 'build-tests
2009 (lambda _
2010 (invoke "ant" "compile-tests")
2011 #t))
2012 (add-after 'build-tests 'generate-test-metadata
2013 (lambda _
2014 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
2015 ":build/classes"
2016 ":build/test-classes")
2017 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2018 "--source" "src/test/java"
2019 "--output" "build/test-classes/META-INF/plexus/components.xml"
2020 "--classes" "build/test-classes"
2021 "--descriptors" "build/test-classes/META-INF")
2022 #t))
2023 (add-before 'check 'disable-failing-test
2024 (lambda _
2025 (delete-file "src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java")))
2026 (add-after 'generate-metadata 'rebuild
2027 (lambda _
2028 (invoke "ant" "jar")
2029 #t))
2030 (replace 'install
2031 (install-from-pom "pom.xml")))))
2032 (propagated-inputs
2033 (list maven-artifact
2034 maven-repository-metadata
2035 maven-builder-support
2036 maven-model
2037 maven-model-builder
2038 maven-settings
2039 maven-settings-builder
2040 maven-core
2041 maven-wagon-provider-api
2042 maven-wagon-file
2043 maven-resolver-api
2044 maven-resolver-util
2045 maven-resolver-spi
2046 java-plexus-interpolation))
2047 (native-inputs
2048 `(("java-modello-core" ,java-modello-core)
2049 ("java-plexus-utils" ,java-plexus-utils)
2050 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
2051 ("java-plexus-classworlds" ,java-plexus-classworlds)
2052 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
2053 ("java-plexus-build-api" ,java-plexus-build-api)
2054 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2055 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
2056 ("java-javax-inject" ,java-javax-inject)
2057 ("java-guice" ,java-guice)
2058 ("java-guava" ,java-guava)
2059 ("java-cglib" ,java-cglib)
2060 ("java-asm" ,java-asm)
2061 ("java-modello-plugins-java" ,java-modello-plugins-java)
2062 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
2063 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
2064 ;; metadata
2065 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
2066 ("java-commons-cli" ,java-commons-cli)
2067 ("java-plexus-cli" ,java-plexus-cli)
2068 ("java-jdom2" ,java-jdom2)
2069 ("maven-plugin-api" ,maven-plugin-api)
2070 ("java-qdox" ,java-qdox)
2071 ;; tests
2072 ("java-plexus-cipher" ,java-plexus-cipher)
2073 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2074 ("java-jsr250" ,java-jsr250)
2075 ("java-cdi-api" ,java-cdi-api)
2076 ("java-junit" ,java-junit)
2077 ("maven-resolver-impl" ,maven-resolver-impl)
2078 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
2079 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
2080 ("java-commons-lang3" ,java-commons-lang3)
2081 ("java-aop" ,java-aopalliance)
2082 ("maven-resolver-provider" ,maven-resolver-provider)
2083 ("java-slf4j-api" ,java-slf4j-api)
2084 ("java-slf4j-simple" ,java-slf4j-simple)
2085 ,@(package-inputs java-slf4j-api)))
2086 (description "Apache Maven is a software project management and comprehension
2087 tool. This package contains Maven2 classes maintained as compatibility
2088 layer for plugins that need to keep Maven2 compatibility.")))
2089
2090 (define-public maven
2091 (package
2092 (inherit maven-artifact)
2093 (name "maven")
2094 (arguments
2095 `(#:phases
2096 (modify-phases %standard-phases
2097 (replace 'build
2098 (lambda* (#:key inputs #:allow-other-keys)
2099 ;; Recreate the configuration for the loader
2100 (with-output-to-file "apache-maven/src/bin/m2.conf"
2101 (lambda _
2102 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
2103 (format #t "~%")
2104 (format #t "set maven.conf default ${maven.home}/conf~%")
2105 (format #t "~%")
2106 (format #t "[plexus.core]~%")
2107 (format #t "load ${maven.conf}/logging~%")
2108 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
2109 ;; Reference every jar so plexus-classworlds can find them.
2110 (for-each
2111 (lambda (dependency)
2112 (for-each
2113 (lambda (file)
2114 (format #t "load ~a~%" file))
2115 (find-files (assoc-ref inputs dependency) ".*.jar$")))
2116 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
2117 "maven-builder-support" "maven-model" "maven-model-builder"
2118 "maven-settings" "maven-settings-builder" "maven-plugin-api"
2119 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
2120 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
2121 "maven-resolver-connector-basic" "maven-resolver-provider"
2122 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
2123 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
2124 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
2125 "maven-wagon-http-shared" "maven-wagon-tck-http"
2126 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
2127 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
2128 "java-javax-inject" "java-plexus-component-annotations"
2129 "java-plexus-utils" "java-plexus-interpolation"
2130 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
2131 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
2132 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
2133 "java-slf4j-simple"))))
2134 (substitute* "apache-maven/src/bin/mvn"
2135 (("cygwin=false;")
2136 (string-append
2137 "CLASSPATH="
2138 (car (find-files
2139 (assoc-ref inputs "java-plexus-classworlds")
2140 ".*.jar"))
2141 "\ncygwin=false;"))
2142 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
2143 #t))
2144 (delete 'check)
2145 (replace 'install
2146 (lambda* (#:key outputs #:allow-other-keys)
2147 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
2148 (conf (string-append (assoc-ref outputs "out") "/conf/")))
2149 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
2150 (for-each (lambda (file)
2151 (install-file (string-append "apache-maven/src/bin/" file)
2152 bin)
2153 (chmod (string-append bin file) #o755))
2154 '("mvn" "mvnDebug" "mvnyjp"))
2155 (install-file "apache-maven/src/bin/m2.conf" bin)
2156 (copy-recursively "apache-maven/src/conf" conf))
2157 #t)))))
2158 (inputs
2159 (list java-plexus-classworlds
2160 maven-artifact
2161 maven-embedder
2162 maven-core
2163 maven-compat
2164 maven-builder-support
2165 maven-model
2166 maven-model-builder
2167 maven-settings
2168 maven-settings-builder
2169 maven-plugin-api
2170 maven-repository-metadata
2171 maven-shared-utils
2172 maven-resolver-api
2173 maven-resolver-spi
2174 maven-resolver-util
2175 maven-resolver-impl
2176 maven-resolver-connector-basic
2177 maven-resolver-provider
2178 maven-resolver-transport-wagon
2179 maven-wagon-provider-api
2180 maven-wagon-file
2181 maven-wagon-http
2182 java-commons-logging-minimal
2183 java-httpcomponents-httpclient
2184 java-httpcomponents-httpcore
2185 maven-wagon-http-shared
2186 maven-wagon-tck-http
2187 java-eclipse-sisu-plexus
2188 java-guice
2189 java-aopalliance
2190 java-cglib
2191 java-asm-8
2192 java-eclipse-sisu-inject
2193 java-javax-inject
2194 java-plexus-component-annotations
2195 java-plexus-utils
2196 java-plexus-interpolation
2197 java-plexus-sec-dispatcher
2198 java-plexus-cipher
2199 java-guava
2200 java-jansi
2201 java-jsr250
2202 java-cdi-api
2203 java-commons-cli
2204 java-commons-io
2205 java-commons-lang3
2206 java-slf4j-api
2207 ;; TODO: replace with maven-slf4j-provider
2208 java-slf4j-simple))
2209 (propagated-inputs
2210 (list coreutils which))
2211 (description "Apache Maven is a software project management and comprehension
2212 tool. Based on the concept of a project object model: builds, dependency
2213 management, documentation creation, site publication, and distribution
2214 publication are all controlled from the @file{pom.xml} declarative file. Maven
2215 can be extended by plugins to utilise a number of other development tools for
2216 reporting or the build process.")))
2217
2218 ;; Many plugins require maven 3.0 as a dependency.
2219 (define maven-3.0-pom
2220 (package
2221 (inherit maven-pom)
2222 (version "3.0")
2223 (source (origin
2224 (method git-fetch)
2225 (uri (git-reference
2226 (url "https://github.com/apache/maven")
2227 (commit (string-append "maven-" version))))
2228 (file-name (git-file-name "maven" version))
2229 (sha256
2230 (base32
2231 "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
2232 (modules '((guix build utils)))
2233 (snippet
2234 '(begin
2235 (for-each delete-file (find-files "." "\\.jar$"))
2236 (for-each (lambda (file) (chmod file #o644))
2237 (find-files "." "."))
2238 #t))
2239 (patches
2240 (search-patches "maven-generate-component-xml.patch"
2241 "maven-generate-javax-inject-named.patch"))))
2242 (propagated-inputs
2243 `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
2244
2245 (define-public maven-3.0-artifact
2246 (package
2247 (inherit maven-artifact)
2248 (version (package-version maven-3.0-pom))
2249 (source (package-source maven-3.0-pom))
2250 (propagated-inputs
2251 (map
2252 (lambda (input)
2253 (if (equal? (car input) "maven-pom")
2254 `("maven-pom" ,maven-3.0-pom)
2255 input))
2256 (package-propagated-inputs maven-artifact)))))
2257
2258 (define-public maven-3.0-model
2259 (package
2260 (inherit maven-model)
2261 (version (package-version maven-3.0-pom))
2262 (source (package-source maven-3.0-pom))
2263 (propagated-inputs
2264 (map
2265 (lambda (input)
2266 (if (equal? (car input) "maven-pom")
2267 `("maven-pom" ,maven-3.0-pom)
2268 input))
2269 (package-propagated-inputs maven-artifact)))
2270 (arguments
2271 `(#:jar-name "maven-model.jar"
2272 #:source-dir "maven-model/src/main/java"
2273 #:test-dir "maven-model/src/test"
2274 #:modules
2275 ((guix build ant-build-system)
2276 (guix build java-utils)
2277 (guix build syscalls)
2278 (guix build utils))
2279 #:phases
2280 (modify-phases %standard-phases
2281 (add-after 'configure 'use-newer-model
2282 (lambda* (#:key inputs #:allow-other-keys)
2283 ;; The model has almost not changed, but the newer version is
2284 ;; needed to prevent an error in the newer modello we have
2285 (let ((source (assoc-ref inputs "maven-source"))
2286 (dir (mkdtemp! "maven-source-XXXXXXXX")))
2287 (with-directory-excursion dir
2288 (invoke "tar" "xf" source)
2289 (copy-file (car (find-files "." "maven.mdo"))
2290 "../maven-model/src/main/mdo/maven.mdo")))
2291 #t))
2292 (add-before 'build 'generate-models
2293 (lambda* (#:key inputs #:allow-other-keys)
2294 (define (modello-single-mode file version mode)
2295 (invoke "java" "org.codehaus.modello.ModelloCli"
2296 file mode "maven-model/src/main/java" version
2297 "false" "true" "UTF-8"))
2298 (let ((file "maven-model/src/main/mdo/maven.mdo"))
2299 (modello-single-mode file "4.0.0" "java")
2300 (modello-single-mode file "4.0.0" "xpp3-reader")
2301 (modello-single-mode file "4.0.0" "xpp3-writer")
2302 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
2303 #t))
2304 (replace 'install
2305 (install-from-pom "maven-model/pom.xml")))))
2306 (inputs
2307 `(("maven-source" ,(package-source maven-pom))
2308 ,@(package-inputs maven-model)))))
2309
2310 (define-public maven-3.0-settings
2311 (package
2312 (inherit maven-settings)
2313 (version (package-version maven-3.0-pom))
2314 (source (package-source maven-3.0-pom))
2315 (propagated-inputs
2316 (map
2317 (lambda (input)
2318 (if (equal? (car input) "maven-pom")
2319 `("maven-pom" ,maven-3.0-pom)
2320 input))
2321 (package-propagated-inputs maven-settings)))))
2322
2323 (define-public maven-3.0-settings-builder
2324 (package
2325 (inherit maven-settings-builder)
2326 (version (package-version maven-3.0-pom))
2327 (source (package-source maven-3.0-pom))
2328 (arguments
2329 (substitute-keyword-arguments (package-arguments maven-settings-builder)
2330 ((#:phases phases)
2331 `(modify-phases ,phases
2332 (add-before 'build 'generate-components.xml
2333 (lambda _
2334 (mkdir-p "build/classes/META-INF/plexus")
2335 (chmod "components.sh" #o755)
2336 (invoke "./components.sh" "maven-settings-builder/src/main/java"
2337 "build/classes/META-INF/plexus/components.xml")))))))
2338 (propagated-inputs
2339 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2340 ,@(filter
2341 (lambda (a) a)
2342 (map
2343 (lambda (input)
2344 (match (car input)
2345 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2346 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
2347 ("maven-builder-support" #f)
2348 ("java-plexus-sec-dispatcher"
2349 `("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher-1.4))
2350 (_ input)))
2351 (package-propagated-inputs maven-settings-builder)))))))
2352
2353 (define-public maven-3.0-model-builder
2354 (package
2355 (inherit maven-model-builder)
2356 (version (package-version maven-3.0-pom))
2357 (source (package-source maven-3.0-pom))
2358 (arguments
2359 (substitute-keyword-arguments (package-arguments maven-model-builder)
2360 ((#:phases phases)
2361 `(modify-phases ,phases
2362 (add-before 'build 'generate-components.xml
2363 (lambda _
2364 (mkdir-p "build/classes/META-INF/plexus")
2365 (chmod "components.sh" #o755)
2366 (invoke "./components.sh" "maven-model-builder/src/main/java"
2367 "build/classes/META-INF/plexus/components.xml")))
2368 (add-before 'check 'remove-failing-test
2369 (lambda _
2370 (delete-file "maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
2371 (propagated-inputs
2372 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2373 ,@(filter
2374 (lambda (a) a)
2375 (map
2376 (lambda (input)
2377 (match (car input)
2378 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2379 ("maven-model" `("maven-model" ,maven-3.0-model))
2380 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2381 ("maven-builder-support" #f)
2382 (_ input)))
2383 (package-propagated-inputs maven-model-builder)))))))
2384
2385 (define-public maven-3.0-plugin-api
2386 (package
2387 (inherit maven-plugin-api)
2388 (version (package-version maven-3.0-pom))
2389 (source (package-source maven-3.0-pom))
2390 (arguments
2391 (substitute-keyword-arguments (package-arguments maven-plugin-api)
2392 ((#:phases phases)
2393 `(modify-phases ,phases
2394 (add-before 'install 'fix-pom
2395 (lambda _
2396 (substitute* "maven-plugin-api/pom.xml"
2397 (("org.sonatype.sisu") "org.codehaus.plexus")
2398 (("sisu-inject-plexus") "plexus-container-default"))
2399 #t))))))
2400 (propagated-inputs
2401 (map
2402 (lambda (input)
2403 (match (car input)
2404 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2405 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2406 ("maven-model" `("maven-model" ,maven-3.0-model))
2407 (_ input)))
2408 (package-propagated-inputs maven-model-builder)))
2409 (native-inputs
2410 (modify-inputs (package-native-inputs maven-plugin-api)
2411 (prepend java-plexus-container-default)))))
2412
2413 (define-public maven-3.0-repository-metadata
2414 (package
2415 (inherit maven-repository-metadata)
2416 (version (package-version maven-3.0-pom))
2417 (source (package-source maven-3.0-pom))
2418 (propagated-inputs
2419 (map
2420 (lambda (input)
2421 (if (equal? (car input) "maven-pom")
2422 `("maven-pom" ,maven-3.0-pom)
2423 input))
2424 (package-propagated-inputs maven-repository-metadata)))))
2425
2426 (define-public maven-3.0-aether-provider
2427 (package
2428 (inherit maven-3.0-pom)
2429 (name "maven-aether-provider")
2430 (arguments
2431 `(#:jar-name "maven-aether-provider.jar"
2432 #:source-dir "maven-aether-provider/src/main/java"
2433 #:tests? #f; no tests in 3.0
2434 #:phases
2435 (modify-phases %standard-phases
2436 (add-after 'build 'generate-metadata
2437 (lambda _
2438 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2439 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2440 "--source" "src/main/java"
2441 "--output" "build/classes/META-INF/plexus/components.xml"
2442 "--classes" "build/classes"
2443 "--descriptors" "build/classes/META-INF")
2444 #t))
2445 (add-after 'generate-metadata 'rebuild
2446 (lambda _
2447 (invoke "ant" "jar")
2448 #t))
2449 (replace 'install
2450 (install-from-pom "maven-aether-provider/pom.xml")))))
2451 (propagated-inputs
2452 `(("maven-model" ,maven-3.0-model)
2453 ("maven-model-builder" ,maven-3.0-model-builder)
2454 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2455 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2456 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
2457 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2458 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
2459 ("java-plexus-utils" ,java-plexus-utils)
2460 ("maven-pom" ,maven-3.0-pom)))
2461 (native-inputs
2462 (list java-plexus-component-metadata))))
2463
2464 (define-public maven-3.0-core
2465 (package
2466 (inherit maven-core)
2467 (version (package-version maven-3.0-pom))
2468 (source (package-source maven-3.0-pom))
2469 (arguments
2470 `(#:jar-name "maven-core.jar"
2471 #:source-dir "src/main/java"
2472 #:tests? #f
2473 #:phases
2474 (modify-phases %standard-phases
2475 (add-before 'configure 'chdir
2476 (lambda _
2477 ;; Required for generating components.xml in maven-core
2478 (chdir "maven-core")
2479 #t))
2480 (add-before 'build 'generate-models
2481 (lambda* (#:key inputs #:allow-other-keys)
2482 (define (modello-single-mode file version mode)
2483 (invoke "java" "org.codehaus.modello.ModelloCli"
2484 file mode "src/main/java" version
2485 "false" "true" "UTF-8"))
2486 (let ((file "src/main/mdo/toolchains.mdo"))
2487 (modello-single-mode file "1.0.0" "java")
2488 (modello-single-mode file "1.0.0" "xpp3-reader")
2489 (modello-single-mode file "1.0.0" "xpp3-writer"))
2490 #t))
2491 (add-before 'build 'copy-resources
2492 (lambda _
2493 (mkdir-p "build/classes/")
2494 (copy-recursively "src/main/resources" "build/classes")
2495 #t))
2496 (add-after 'build 'generate-metadata
2497 (lambda _
2498 (define (components file)
2499 (let ((sxml (with-input-from-file file
2500 (lambda _ (xml->sxml (current-input-port)
2501 #:trim-whitespace? #t)))))
2502 ;; Select the list of <component>s inside the <component-set>
2503 ;; and <components>.
2504 ((@ (ice-9 match) match) sxml
2505 (('*TOP*
2506 ('*PI* foo ...)
2507 ('component-set
2508 ('components x ...))) x))))
2509 (use-modules (sxml simple))
2510 (delete-file "build/classes/META-INF/plexus/components.xml")
2511 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2512 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2513 "--source" "build/classes/META-INF/plexus"
2514 "--output" "build/classes/META-INF/plexus/components.t.xml"
2515 "--classes" "build/classes"
2516 "--descriptors" "build/classes")
2517 ;; Now we merge all other components from hand-written xml
2518 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
2519 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
2520 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
2521 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
2522 (lambda _
2523 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
2524 (sxml->xml
2525 `(component-set
2526 (components
2527 ,@(append generated-xml components-xml
2528 artifact-handlers-xml)))))))
2529 #t))
2530 (add-after 'generate-metadata 'rebuild
2531 (lambda _
2532 (invoke "ant" "jar")
2533 #t))
2534 (add-before 'install 'fix-pom
2535 (lambda _
2536 (substitute* "pom.xml"
2537 (("org.sonatype.sisu") "org.codehaus.plexus")
2538 (("sisu-inject-plexus") "plexus-container-default"))
2539 #t))
2540 (replace 'install
2541 (install-from-pom "pom.xml")))))
2542 (propagated-inputs
2543 (list maven-3.0-model
2544 maven-3.0-settings
2545 maven-3.0-settings-builder
2546 maven-3.0-repository-metadata
2547 maven-3.0-artifact
2548 maven-3.0-model-builder
2549 maven-3.0-aether-provider
2550 java-sonatype-aether-impl
2551 java-sonatype-aether-api
2552 java-sonatype-aether-util
2553 java-plexus-interpolation
2554 java-plexus-utils
2555 java-plexus-classworlds
2556 java-plexus-component-annotations
2557 java-plexus-container-default
2558 java-plexus-sec-dispatcher-1.4
2559 maven-3.0-pom))))
2560
2561 (define-public maven-3.0-compat
2562 (package
2563 (inherit maven-compat)
2564 (version (package-version maven-3.0-pom))
2565 (source (package-source maven-3.0-pom))
2566 (arguments
2567 `(#:tests? #f ;require an old version of java-easymock
2568 ,@(substitute-keyword-arguments (package-arguments maven-compat)
2569 ((#:phases phases)
2570 `(modify-phases ,phases
2571 (add-before 'install 'fix-pom
2572 (lambda _
2573 (substitute* "pom.xml"
2574 (("org.sonatype.sisu") "org.codehaus.plexus")
2575 (("sisu-inject-plexus") "plexus-container-default"))
2576 #t))
2577 (delete 'build-tests))))))
2578 (propagated-inputs
2579 (list maven-3.0-model
2580 maven-3.0-model-builder
2581 maven-3.0-settings
2582 maven-3.0-settings-builder
2583 maven-3.0-artifact
2584 maven-3.0-core
2585 maven-3.0-aether-provider
2586 maven-3.0-repository-metadata
2587 java-sonatype-aether-api
2588 java-sonatype-aether-util
2589 java-sonatype-aether-impl
2590 java-plexus-utils
2591 java-plexus-interpolation
2592 java-eclipse-sisu-plexus
2593 java-plexus-component-annotations
2594 java-plexus-container-default
2595 maven-wagon-provider-api
2596 maven-3.0-pom))))
2597
2598 (define-public maven-shared-utils-3.0
2599 (package
2600 (inherit maven-shared-utils)
2601 (version "3.0.0")
2602 (source (origin
2603 (method url-fetch)
2604 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2605 "maven-shared-utils-" version "-source-release.zip"))
2606 (sha256
2607 (base32
2608 "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
2609 (propagated-inputs
2610 (modify-inputs (package-propagated-inputs maven-shared-utils)
2611 (prepend maven-3.0-core maven-components-parent-pom-21)))))
2612
2613 (define-public maven-shared-utils-3.1
2614 (package
2615 (inherit maven-shared-utils)
2616 (version "3.1.0")
2617 (source (origin
2618 (method url-fetch)
2619 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2620 "maven-shared-utils-" version "-source-release.zip"))
2621 (sha256
2622 (base32
2623 "0vfaas4g09ch0agrd1dcxcmhdd3w971ssvfr9mx9gi2lp5nv8w66"))))))
2624
2625 (define-public maven-shared-io
2626 (package
2627 (name "maven-shared-io")
2628 (version "3.0.0")
2629 (source (origin
2630 (method url-fetch)
2631 (uri (string-append "mirror://apache/maven/shared/"
2632 "maven-shared-io-" version
2633 "-source-release.zip"))
2634 (sha256
2635 (base32
2636 "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
2637 (build-system ant-build-system)
2638 (arguments
2639 `(#:jar-name "maven-shared-io.jar"
2640 #:source-dir "src/main/java"
2641 #:test-dir "src/test"
2642 #:phases
2643 (modify-phases %standard-phases
2644 (add-before 'build 'copy-resources
2645 (lambda _
2646 (copy-recursively "src/main/resources" "build/classes/")
2647 (copy-recursively "src/test/resources" "build/test-classes/")
2648 #t))
2649 (replace 'install
2650 (install-from-pom "pom.xml")))))
2651 (propagated-inputs
2652 (list maven-3.0-artifact
2653 maven-3.0-compat
2654 maven-3.0-plugin-api
2655 maven-shared-utils
2656 maven-wagon-provider-api
2657 java-plexus-utils
2658 maven-components-parent-pom-22))
2659 (native-inputs
2660 (list unzip java-junit java-easymock))
2661 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2662 (synopsis "Tree-based API for resolution of Maven project dependencies")
2663 (description "This package provides a tree-based API for resolution of
2664 Maven project dependencies.")
2665 (license license:asl2.0)))
2666
2667 (define-public maven-file-management
2668 (package
2669 (name "maven-file-management")
2670 (version "3.0.0")
2671 (source (origin
2672 (method url-fetch)
2673 (uri (string-append "mirror://apache/maven/shared/"
2674 "file-management-" version
2675 "-source-release.zip"))
2676 (sha256
2677 (base32
2678 "0wisz6sm67axrwvx8a75mb9s03h7kzkzfw8j3aaa4sx4k9ph58da"))))
2679 (build-system ant-build-system)
2680 (arguments
2681 `(#:jar-name "maven-file-management.jar"
2682 #:source-dir "src/main/java"
2683 #:phases
2684 (modify-phases %standard-phases
2685 (add-before 'build 'copy-resources
2686 (lambda _
2687 (copy-recursively "src/main/resources" "build/classes/")
2688 #t))
2689 (add-before 'build 'generate-models
2690 (lambda* (#:key inputs #:allow-other-keys)
2691 (define (modello-single-mode file version mode)
2692 (invoke "java"
2693 "org.codehaus.modello.ModelloCli"
2694 file mode "src/main/java" version
2695 "false" "true"))
2696 (let ((file "src/main/mdo/fileset.mdo"))
2697 (modello-single-mode file "1.1.0" "java")
2698 (modello-single-mode file "1.1.0" "xpp3-reader")
2699 (modello-single-mode file "1.1.0" "xpp3-writer"))
2700 #t))
2701 (replace 'install
2702 (install-from-pom "pom.xml")))))
2703 (propagated-inputs
2704 (list maven-3.0-plugin-api maven-shared-io maven-shared-utils
2705 java-plexus-utils maven-components-parent-pom-22))
2706 (native-inputs
2707 `(("java-modello-core" ,java-modello-core)
2708 ;; modello plugins:
2709 ("java-modellop-plugins-java" ,java-modello-plugins-java)
2710 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
2711 ("unzip" ,unzip)))
2712 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2713 (synopsis "Tree-based API for resolution of Maven project dependencies")
2714 (description "This package provides a tree-based API for resolution of
2715 Maven project dependencies.")
2716 (license license:asl2.0)))
2717
2718 (define-public maven-archiver
2719 (package
2720 (name "maven-archiver")
2721 (version "3.5.0")
2722 (source (origin
2723 (method url-fetch)
2724 (uri (string-append "mirror://apache/maven/shared/"
2725 "maven-archiver-" version
2726 "-source-release.zip"))
2727 (sha256
2728 (base32
2729 "1204xkqj259brpk3yscprml0lbfbyn1vn5nrgqjk44z5vx127lbw"))))
2730 (build-system ant-build-system)
2731 (arguments
2732 `(#:jar-name "maven-archiver.jar"
2733 #:source-dir "src/main/java"
2734 #:phases
2735 (modify-phases %standard-phases
2736 (replace 'install
2737 (install-from-pom "pom.xml")))))
2738 (propagated-inputs
2739 `(("java-commons-io" ,java-commons-io)
2740 ("maven-artifact" ,maven-3.0-artifact)
2741 ("maven-core" ,maven-3.0-core)
2742 ("maven-model" ,maven-3.0-model)
2743 ("maven-shared-utils" ,maven-shared-utils)
2744 ("java-plexus-archiver" ,java-plexus-archiver)
2745 ("java-plexus-interpolation" ,java-plexus-interpolation)
2746 ("java-plexus-utils" ,java-plexus-utils)
2747 ("maen-parent-pom" ,maven-parent-pom-33)))
2748 (native-inputs
2749 (list java-junit java-assertj unzip))
2750 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2751 (synopsis "Tree-based API for resolution of Maven project dependencies")
2752 (description "This package provides a tree-based API for resolution of
2753 Maven project dependencies.")
2754 (license license:asl2.0)))
2755
2756 (define-public maven-dependency-tree
2757 (package
2758 (name "maven-dependency-tree")
2759 (version "3.1.0")
2760 (source (origin
2761 (method url-fetch)
2762 (uri (string-append "mirror://apache/maven/shared/"
2763 "maven-dependency-tree-" version
2764 "-source-release.zip"))
2765 (sha256
2766 (base32
2767 "1vhcd3lmbyy8q61c37sqgbllqj4ypkxm344l6pb05mkchlyk5dy5"))))
2768 (build-system ant-build-system)
2769 (arguments
2770 `(#:jar-name "maven-dependency-tree.jar"
2771 #:source-dir "src/main/java"
2772 #:tests? #f; no tests
2773 #:phases
2774 (modify-phases %standard-phases
2775 (replace 'install
2776 (install-from-pom "pom.xml")))))
2777 (propagated-inputs
2778 (list maven-3.0-core java-plexus-component-annotations
2779 maven-parent-pom-34))
2780 (inputs
2781 (list java-sonatype-aether-api-1.13 java-sonatype-aether-util-1.13
2782 java-eclipse-aether-api java-eclipse-aether-util))
2783 (native-inputs
2784 (list unzip java-junit))
2785 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2786 (synopsis "Tree-based API for resolution of Maven project dependencies")
2787 (description "This package provides a tree-based API for resolution of
2788 Maven project dependencies.")
2789 (license license:asl2.0)))
2790
2791 (define-public maven-common-artifact-filters
2792 (package
2793 (name "maven-common-artifact-filters")
2794 (version "3.2.0")
2795 (source (origin
2796 (method url-fetch)
2797 (uri (string-append "mirror://apache/maven/shared/"
2798 "maven-common-artifact-filters-" version
2799 "-source-release.zip"))
2800 (sha256
2801 (base32
2802 "1mr92s4zz6gf028wiskjg8rd1znxzdnmskg42ac55ifg9v1p1884"))))
2803 (build-system ant-build-system)
2804 (arguments
2805 `(#:jar-name "maven-common-artifact-filters.jar"
2806 #:source-dir "src/main/java"
2807 #:tests? #f; require maven-plugin-testing-harness, which requires maven 3.2.
2808 #:phases
2809 (modify-phases %standard-phases
2810 (add-before 'build 'fix-aether
2811 (lambda _
2812 (substitute* "pom.xml"
2813 (("eclipse.aether") "sonatype.aether"))
2814 (substitute* "src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java"
2815 (("eclipse") "sonatype"))))
2816 (replace 'install
2817 (install-from-pom "pom.xml")))))
2818 (propagated-inputs
2819 (list maven-3.0-artifact
2820 maven-3.0-model
2821 maven-3.0-core
2822 maven-3.0-plugin-api
2823 maven-shared-utils
2824 maven-parent-pom-33
2825 java-eclipse-sisu-plexus
2826 java-sonatype-aether-api
2827 java-sonatype-aether-util))
2828 (inputs
2829 (list maven-resolver-api maven-resolver-util))
2830 (native-inputs
2831 (list unzip))
2832 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2833 (synopsis "Tree-based API for resolution of Maven project dependencies")
2834 (description "This package provides a tree-based API for resolution of
2835 Maven project dependencies.")
2836 (license license:asl2.0)))
2837
2838 (define-public maven-common-artifact-filters-3.1.0
2839 (package
2840 (inherit maven-common-artifact-filters)
2841 (version "3.1.0")
2842 (source (origin
2843 (method url-fetch)
2844 (uri (string-append "mirror://apache/maven/shared/"
2845 "maven-common-artifact-filters-" version
2846 "-source-release.zip"))
2847 (sha256
2848 (base32
2849 "1cl1qk4r0gp62bjzfm7lml9raz1my2kd4yf0ci0lnfsn0h5qivnb"))))
2850 (arguments
2851 (substitute-keyword-arguments (package-arguments maven-common-artifact-filters)
2852 ((#:phases phases)
2853 `(modify-phases ,phases
2854 (delete 'fix-aether)
2855 (add-before 'build 'remove-sisu
2856 (lambda _
2857 (substitute* "pom.xml"
2858 (("sisu-inject-plexus") "maven-plugin-api")
2859 (("org.sonatype.sisu") "org.apache.maven"))))))))))
2860
2861 (define-public maven-enforcer-api
2862 (package
2863 (name "maven-enforcer-api")
2864 (version "3.0.0")
2865 (source (origin
2866 (method url-fetch)
2867 (uri (string-append "mirror://apache/maven/enforcer/"
2868 "enforcer-" version "-source-release.zip"))
2869 (sha256
2870 (base32
2871 "1479yp58jv788xc1jc2sbdxpajlbvwlk60639vd2h4s8r6x7naqh"))))
2872 (build-system ant-build-system)
2873 (arguments
2874 `(#:jar-name "maven-enforcer-api.jar"
2875 #:source-dir "enforcer-api/src/main/java"
2876 #:tests? #f; no tests
2877 #:phases
2878 (modify-phases %standard-phases
2879 (replace 'install
2880 (install-from-pom "enforcer-api/pom.xml")))))
2881 (propagated-inputs
2882 (list maven-plugin-api java-plexus-container-default java-jsr305
2883 maven-enforcer-parent-pom))
2884 (native-inputs
2885 (list unzip))
2886 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2887 (synopsis "Tree-based API for resolution of Maven project dependencies")
2888 (description "This package provides a tree-based API for resolution of
2889 Maven project dependencies.")
2890 (license license:asl2.0)))
2891
2892 (define maven-enforcer-parent-pom
2893 (package
2894 (inherit maven-enforcer-api)
2895 (name "maven-enforcer-parent-pom")
2896 (arguments
2897 `(#:tests? #f
2898 #:phases
2899 (modify-phases %standard-phases
2900 (delete 'configure)
2901 (delete 'build)
2902 (add-before 'install 'fix-pom-versions
2903 (lambda _
2904 (substitute* "pom.xml"
2905 (("<maven.version>.*</maven.version>")
2906 ,(string-append "<maven.version>" (package-version maven)
2907 "</maven.version>"))
2908 (("2.11.0") ,(package-version java-commons-io))
2909 (("3.12.0") ,(package-version java-commons-lang3))
2910 (("1.6.1") ,(package-version maven-resolver-util))
2911 (("1.15") ,(package-version java-commons-codec)))))
2912 (replace 'install
2913 (install-pom-file "pom.xml")))))
2914 (propagated-inputs
2915 `(("maven-parent-pom" ,maven-parent-pom-30)))))
2916
2917 (define-public maven-enforcer-rules
2918 (package
2919 (inherit maven-enforcer-api)
2920 (name "maven-enforcer-rules")
2921 (arguments
2922 `(#:tests? #f; requires maven-plugin-testing-harness
2923 #:jar-name "maven-enforcer-rules.jar"
2924 #:source-dir "enforcer-rules/src/main/java"
2925 #:test-dir "enforcer-rules/src/test"
2926 #:phases
2927 (modify-phases %standard-phases
2928 (replace 'install
2929 (install-from-pom "enforcer-rules/pom.xml")))))
2930 (propagated-inputs
2931 (list maven-artifact
2932 maven-plugin-api
2933 maven-core
2934 maven-common-artifact-filters
2935 java-commons-codec
2936 java-commons-lang3
2937 maven-enforcer-api
2938 maven-resolver-util
2939 java-bsh
2940 maven-dependency-tree
2941 maven-3.0-compat
2942 maven-enforcer-parent-pom))))
2943
2944 (define-public maven-enforcer-plugin
2945 (package
2946 (inherit maven-enforcer-api)
2947 (name "maven-enforcer-plugin")
2948 (arguments
2949 `(#:tests? #f
2950 #:jar-name "maven-enforcer-plugin.jar"
2951 #:source-dir "maven-enforcer-plugin/src/main/java"
2952 #:phases
2953 (modify-phases %standard-phases
2954 (add-before 'build 'generate-plugin.xml
2955 (generate-plugin.xml "maven-enforcer-plugin/pom.xml"
2956 "enforcer"
2957 "maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/"
2958 (list
2959 (list "DisplayInfoMojo.java")
2960 (list "EnforceMojo.java"))))
2961 (replace 'install
2962 (install-from-pom "maven-enforcer-plugin/pom.xml")))))
2963 (propagated-inputs
2964 (list maven-artifact
2965 maven-plugin-api
2966 maven-core
2967 java-plexus-utils
2968 maven-enforcer-api
2969 maven-enforcer-rules
2970 maven-plugin-annotations
2971 maven-enforcer-parent-pom))))
2972
2973 (define-public maven-artifact-transfer
2974 (package
2975 (name "maven-artifact-transfer")
2976 (version "0.13.1")
2977 (source (origin
2978 (method url-fetch)
2979 (uri (string-append "mirror://apache/maven/shared/"
2980 "maven-artifact-transfer-" version
2981 "-source-release.zip"))
2982 (sha256
2983 (base32
2984 "0xl7lkksljacrhmvwf924zb6h0h5zw9494jaz9cz4hll0lrhlpz6"))))
2985 (build-system ant-build-system)
2986 (arguments
2987 `(#:tests? #f; require mockito 2
2988 #:jar-name "maven-artifact-transfer.jar"
2989 #:source-dir "src/main/java"
2990 #:phases
2991 (modify-phases %standard-phases
2992 (add-after 'build 'generate-metadata
2993 (lambda _
2994 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2995 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2996 "--source" "src/main/java"
2997 "--output" "build/classes/META-INF/plexus/components.xml"
2998 "--classes" "build/classes"
2999 "--descriptors" "build/classes/META-INF")
3000 #t))
3001 (add-after 'generate-metadata 'rebuild
3002 (lambda _
3003 (invoke "ant" "jar")
3004 #t))
3005 (replace 'install
3006 (install-from-pom "pom.xml")))))
3007 (propagated-inputs
3008 (list java-commons-codec
3009 maven-3.0-artifact
3010 maven-3.0-core
3011 maven-common-artifact-filters-3.1.0
3012 java-plexus-component-annotations
3013 java-plexus-utils
3014 java-slf4j-api
3015 java-plexus-classworlds
3016 java-sonatype-aether-api
3017 java-eclipse-aether-api
3018 java-eclipse-aether-util
3019 java-eclipse-aether-impl))
3020 (native-inputs
3021 (list unzip java-plexus-component-metadata))
3022 (home-page "https://maven.apache.org/shared/maven-artifact-transfer")
3023 (synopsis "API to install, deploy and resolve artifacts in Maven")
3024 (description "This package contains an API to install, deploy and resolve
3025 artifacts in Maven 3.")
3026 (license license:asl2.0)))
3027
3028 (define-public maven-install-plugin
3029 (package
3030 (name "maven-install-plugin")
3031 (version "3.0.0-M1")
3032 (source (origin
3033 (method url-fetch)
3034 (uri (string-append "mirror://apache/maven/plugins/"
3035 "maven-install-plugin-" version
3036 "-source-release.zip"))
3037 (sha256
3038 (base32
3039 "1l9iydxririrair0i5sk2iypn9wspzbb666lc0ddg20yyr8w39dm"))))
3040 (build-system ant-build-system)
3041 (arguments
3042 `(#:tests? #f; require maven-plugin-testing-harness
3043 #:jar-name "maven-install-plugin.jar"
3044 #:source-dir "src/main/java"
3045 #:phases
3046 (modify-phases %standard-phases
3047 (add-before 'build 'fix-pom
3048 (lambda _
3049 (substitute* "pom.xml"
3050 (("maven-project") "maven-core")
3051 (("maven-artifact-manager") "maven-artifact")
3052 (("2.0.6") "3.0"))
3053 #t))
3054 (add-before 'build 'generate-plugin.xml
3055 (generate-plugin.xml "pom.xml"
3056 "install"
3057 "src/main/java/org/apache/maven/plugins/install"
3058 (list
3059 (list "AbstractInstallMojo.java" "InstallFileMojo.java")
3060 (list "AbstractInstallMojo.java" "InstallMojo.java"))))
3061 (replace 'install
3062 (install-from-pom "pom.xml")))))
3063 (propagated-inputs
3064 `(("maven-artifact" ,maven-artifact)
3065 ("maven-plugin-api" ,maven-plugin-api)
3066 ("maven-compat" ,maven-compat)
3067 ("maven-artifact-transfer" ,maven-artifact-transfer)
3068 ("maven-plugins-pom-23" ,maven-plugins-pom-23)
3069 ("java-plexus-digest" ,java-plexus-digest)))
3070 (inputs
3071 (list maven-plugin-annotations java-slf4j-api))
3072 (native-inputs
3073 (list unzip))
3074 (home-page "https://maven.apache.org/plugin/maven-install-plugin")
3075 (synopsis "Maven's install plugin")
3076 (description "The Install Plugin is used during the install phase to add
3077 artifact(s) to the local repository. The Install Plugin uses the information
3078 in the POM (groupId, artifactId, version) to determine the proper location for
3079 the artifact within the local repository.
3080
3081 The local repository is the local cache where all artifacts needed for the
3082 build are stored. By default, it is located within the user's home directory
3083 (@file{~/.m2/repository}) but the location can be configured in
3084 @file{~/.m2/settings.xml} using the @code{<localRepository>} element.")
3085 (license license:asl2.0)))
3086
3087 (define-public maven-filtering
3088 (package
3089 (name "maven-filtering")
3090 (version "3.1.1")
3091 (source (origin
3092 (method url-fetch)
3093 (uri (string-append "https://archive.apache.org/dist/maven/"
3094 "shared/maven-filtering-" version
3095 "-source-release.zip"))
3096 (sha256
3097 (base32
3098 "09wrdhchnszd2l6h4z30ra0bv1a19qyjgac9z8zf1pn0m4nw05yz"))))
3099 (build-system ant-build-system)
3100 (arguments
3101 `(#:jar-name "maven-filtering.jar"
3102 #:source-dir "src/main/java"
3103 #:test-dir "src/test"
3104 ;; this test comes from plexus-build-api, not this package
3105 #:test-exclude (list "**/IncrementalResourceFilteringTest.java"
3106 "**/Abstract*.java")
3107 #:phases
3108 (modify-phases %standard-phases
3109 (add-after 'build 'generate-metadata
3110 (lambda _
3111 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3112 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3113 "--source" "src/main/java"
3114 "--output" "build/classes/META-INF/plexus/components.xml"
3115 "--classes" "build/classes"
3116 "--descriptors" "build/classes/META-INF")
3117 #t))
3118 (add-after 'generate-metadata 'rebuild
3119 (lambda _
3120 (invoke "ant" "jar")
3121 #t))
3122 (add-before 'check 'decompress-tests
3123 (lambda* (#:key inputs #:allow-other-keys)
3124 (let* ((build-api-source (assoc-ref inputs "java-plexus-build-api-origin"))
3125 (classes (string-append build-api-source "/src/test/java")))
3126 (copy-recursively classes "src/test/"))
3127 #t))
3128 (add-before 'check 'fix-directory
3129 (lambda _
3130 (substitute* (find-files "src/test" ".*.java$")
3131 (("target/test-classes/") "build/test-classes/"))))
3132 (add-before 'check 'copy-test-resources
3133 (lambda _
3134 (copy-recursively "src/test/resources" "build/test-classes/")
3135 #t))
3136 (replace 'install
3137 (install-from-pom "pom.xml")))))
3138 (propagated-inputs
3139 (list maven-3.0-core
3140 maven-shared-utils
3141 java-plexus-utils-3.2.1
3142 java-plexus-interpolation
3143 java-plexus-build-api
3144 maven-parent-pom-30))
3145 (inputs
3146 (list java-jsr305))
3147 (native-inputs
3148 `(("unzip" ,unzip)
3149 ("java-assertj" ,java-assertj)
3150 ("java-junit" ,java-junit)
3151 ("java-mockito" ,java-mockito-1)
3152 ("java-objenesis" ,java-objenesis)
3153 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
3154 ("java-plexus-build-api-origin" ,(package-source java-plexus-build-api))))
3155 (home-page "https://maven.apache.org/shared/maven-filtering")
3156 (synopsis "Shared component for all plugins that needs to filter resources")
3157 (description "This component provides an API to filter resources in Maven
3158 projects.")
3159 (license license:asl2.0)))
3160
3161 (define-public maven-resources-plugin
3162 (package
3163 (name "maven-resources-plugin")
3164 (version "3.1.0")
3165 (source (origin
3166 (method git-fetch)
3167 (uri (git-reference
3168 (url "https://github.com/apache/maven-resources-plugin")
3169 (commit (string-append "maven-resources-plugin-" version))))
3170 (file-name (git-file-name name version))
3171 (sha256
3172 (base32
3173 "090k5j2y7ak54czfjjg3v7pdmdlgd96fbs91d1fd3vslm9zzndg8"))))
3174 (build-system ant-build-system)
3175 (arguments
3176 `(#:jar-name "maven-resources-plugin.jar"
3177 #:source-dir "src/main/java"
3178 #:test-dir "src/test"
3179 #:tests? #f; test depends on maven-plugin-test-harness
3180 #:phases
3181 (modify-phases %standard-phases
3182 (add-before 'build 'generate-plugin.xml
3183 (generate-plugin.xml "pom.xml" "resources"
3184 "src/main/java/org/apache/maven/plugins/resources"
3185 (list
3186 (list "ResourcesMojo.java" "CopyResourcesMojo.java")
3187 (list "ResourcesMojo.java")
3188 (list "ResourcesMojo.java" "TestResourcesMojo.java"))))
3189 (replace 'install
3190 (install-from-pom "pom.xml")))))
3191 (propagated-inputs
3192 (list maven-plugin-api
3193 maven-core
3194 java-plexus-utils
3195 maven-filtering
3196 java-plexus-interpolation
3197 maven-parent-pom-31))
3198 (inputs
3199 (list maven-plugin-annotations java-commons-io))
3200 (native-inputs
3201 (list java-plexus-component-metadata))
3202 (home-page "https://maven.apache.org/plugins/maven-resources-plugin")
3203 (synopsis "Maven plugin to collect and install resources")
3204 (description "The Resources Plugin handles the copying of project resources
3205 to the output directory. There are two different kinds of resources: main
3206 resources and test resources. The difference is that the main resources are
3207 the resources associated to the main source code while the test resources are
3208 associated to the test source code.
3209
3210 Thus, this allows the separation of resources for the main source code and its
3211 unit tests.")
3212 (license license:asl2.0)))
3213
3214 (define-public maven-shared-incremental
3215 (package
3216 (name "maven-shared-incremental")
3217 (version "1.1")
3218 (source (origin
3219 (method url-fetch)
3220 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
3221 "maven-shared-incremental-" version
3222 "-source-release.zip"))
3223 (sha256
3224 (base32
3225 "03n4nfswyg9ahkz2zx4skcr3ghs01zh95g9js51hc75mfqx9b976"))))
3226 (build-system ant-build-system)
3227 (arguments
3228 `(#:jar-name "shared-incremental.java"
3229 #:source-dir "src/main/java"
3230 #:test-dir "src/test"
3231 #:phases
3232 (modify-phases %standard-phases
3233 (add-before 'build 'change-parent
3234 (lambda _
3235 (substitute* "pom.xml"
3236 (("19") "30"))
3237 #t))
3238 (add-before 'build 'fix-pom
3239 (lambda _
3240 (substitute* "pom.xml"
3241 (("plexus-component-api") "plexus-component-annotations"))
3242 #t))
3243 (add-after 'build 'generate-metadata
3244 (lambda _
3245 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3246 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3247 "--source" "src/main/java"
3248 "--output" "build/classes/META-INF/plexus/components.xml"
3249 "--classes" "build/classes"
3250 "--descriptors" "build/classes/META-INF")
3251 #t))
3252 (replace 'install
3253 (install-from-pom "pom.xml")))))
3254 (propagated-inputs
3255 (list maven-plugin-api maven-core maven-shared-utils
3256 java-plexus-component-annotations maven-parent-pom-30))
3257 (native-inputs
3258 (list unzip java-plexus-component-metadata))
3259 (home-page "https://maven.apache.org/shared/maven-shared-incremental")
3260 (synopsis "Maven Incremental Build support utilities")
3261 (description "This package contains various utility classes and plexus
3262 components for supporting incremental build functionality in maven plugins.")
3263 (license license:asl2.0)))
3264
3265 (define-public maven-compiler-plugin
3266 (package
3267 (name "maven-compiler-plugin")
3268 (version "3.8.1")
3269 (source (origin
3270 (method git-fetch)
3271 (uri (git-reference
3272 (url "https://github.com/apache/maven-compiler-plugin")
3273 (commit (string-append "maven-compiler-plugin-" version))))
3274 (file-name (git-file-name name version))
3275 (sha256
3276 (base32
3277 "0jkbq02vykd09ws8k9bzqxv6fjrpmir8gcxydbmj05kkhl242bma"))))
3278 (build-system ant-build-system)
3279 (arguments
3280 `(#:jar-name "maven-compiler-plugin.jar"
3281 #:source-dir "src/main/java"
3282 #:test-dir "src/test"
3283 #:tests? #f; test depends on maven-plugin-test-harness
3284 #:phases
3285 (modify-phases %standard-phases
3286 (add-before 'build 'generate-plugin.xml
3287 (generate-plugin.xml "pom.xml"
3288 "compiler"
3289 "src/main/java/org/apache/maven/plugin/compiler"
3290 (list
3291 (list "AbstractCompilerMojo.java" "CompilerMojo.java")
3292 (list "AbstractCompilerMojo.java" "TestCompilerMojo.java"))))
3293 (add-after 'generate-plugin.xml 'fix-plugin.xml
3294 (lambda _
3295 (substitute* "build/classes/META-INF/maven/plugin.xml"
3296 ;; These are defined in AbstractCompilerMojo.java, but not
3297 ;; parsed correctly in the previous phase
3298 (("DEFAULT_TARGET") "1.6")
3299 (("DEFAULT_SOURCE") "1.6"))
3300 #t))
3301 (replace 'install
3302 (install-from-pom "pom.xml")))))
3303 (propagated-inputs
3304 (list maven-plugin-api
3305 maven-artifact
3306 maven-core
3307 maven-shared-utils
3308 maven-shared-incremental
3309 java-plexus-java
3310 java-plexus-compiler-api
3311 java-plexus-compiler-manager
3312 java-plexus-compiler-javac
3313 maven-parent-pom-33))
3314 (inputs
3315 (list maven-plugin-annotations java-commons-io))
3316 (home-page "https://maven.apache.org/plugins/maven-compiler-plugin")
3317 (synopsis "Compiler plugin for Maven")
3318 (description "The Compiler Plugin is used to compile the sources of your
3319 project. Since 3.0, the default compiler is @code{javax.tools.JavaCompiler}
3320 (if you are using java 1.6) and is used to compile Java sources. If you want
3321 to force the plugin using javac, you must configure the plugin option
3322 @code{forceJavacCompilerUse}.
3323
3324 Also note that at present the default source setting is 1.6 and the default
3325 target setting is 1.6, independently of the JDK you run Maven with. You are
3326 highly encouraged to change these defaults by setting source and target as
3327 described in Setting the -source and -target of the Java Compiler.
3328
3329 Other compilers than javac can be used and work has already started on
3330 AspectJ, .NET, and C#.")
3331 (license license:asl2.0)))
3332
3333 (define-public java-surefire-logger-api
3334 (package
3335 (name "java-surefire-logger-api")
3336 (version "3.0.0-M4")
3337 (source (origin
3338 (method url-fetch)
3339 (uri (string-append "mirror://apache/maven/surefire/"
3340 "surefire-" version "-source-release.zip"))
3341 (sha256
3342 (base32
3343 "1s6d4pzk3bjm9l38mj9sfgbgmk145rppdj1dmqwc4d5105mr9q9w"))))
3344 (build-system ant-build-system)
3345 (arguments
3346 `(#:jar-name "java-surefire-logger-api.jar"
3347 #:source-dir "surefire-logger-api/src/main/java"
3348 #:tests? #f; require mockito 2
3349 #:phases
3350 (modify-phases %standard-phases
3351 (replace 'install
3352 (install-from-pom "surefire-logger-api/pom.xml")))))
3353 (propagated-inputs
3354 (list java-surefire-parent-pom))
3355 (native-inputs
3356 (list unzip))
3357 (home-page "https://maven.apache.org/surefire/surefire-logger-api")
3358 (synopsis "Interfaces and Utilities related only to internal SureFire Logger API")
3359 (description "This package contains interfaces and utilities that are
3360 internal to the SureFire Logger API. It is designed to have no dependency.")
3361 (license license:asl2.0)))
3362
3363 (define-public java-surefire-parent-pom
3364 (package
3365 (inherit java-surefire-logger-api)
3366 (name "java-surefire-parent-pom")
3367 (arguments
3368 `(#:tests? #f
3369 #:phases
3370 (modify-phases %standard-phases
3371 (delete 'configure)
3372 (delete 'build)
3373 (add-before 'install 'fix-pom-dependency-versions
3374 (lambda _
3375 (substitute* "pom.xml"
3376 (("1.11") ,(package-version java-commons-compress))
3377 (("1.13") ,(package-version java-commons-codec)))
3378 (substitute* "pom.xml"
3379 (("commonsLang3Version>.*")
3380 (string-append
3381 "commonsLang3Version>"
3382 ,(package-version java-commons-lang3)
3383 "</commonsLang3Version>\n"))
3384 (("commonsCompress>.*")
3385 (string-append
3386 "commonsCompress>"
3387 ,(package-version java-commons-compress)
3388 "</commonsCompress>\n"))
3389 (("commonsIoVersion>.*")
3390 (string-append
3391 "commonsIoVersion>"
3392 ,(package-version java-commons-io)
3393 "</commonsIoVersion>\n"))
3394 (("0.11.0") ,(package-version maven-artifact-transfer))
3395 (("1.0.3") ,(package-version java-plexus-java)))
3396 #t))
3397 (add-after 'install 'install-providers
3398 (install-pom-file "surefire-providers/pom.xml"))
3399 (replace 'install
3400 (install-pom-file "pom.xml")))))
3401 (propagated-inputs
3402 (list maven-parent-pom-33))))
3403
3404 (define-public java-surefire-api
3405 (package
3406 (inherit java-surefire-logger-api)
3407 (name "java-surefire-api")
3408 (arguments
3409 `(#:tests? #f
3410 #:jar-name "java-surefire-api.jar"
3411 #:source-dir "surefire-api/src/main/java"
3412 #:phases
3413 (modify-phases %standard-phases
3414 (add-before 'build 'copy-resources
3415 (lambda _
3416 (mkdir-p "build/classes")
3417 (copy-recursively "surefire-api/src/main/resources" "build/classes")
3418 #t))
3419 (add-before 'build 'prepare-shade
3420 (lambda* (#:key inputs #:allow-other-keys)
3421 (mkdir-p "build/classes")
3422 (with-directory-excursion "build/classes"
3423 (for-each
3424 (lambda (input)
3425 (for-each
3426 (lambda (jar-file)
3427 (invoke "jar" "xf" jar-file)
3428 (delete-file-recursively "META-INF"))
3429 (find-files (assoc-ref inputs input) ".*.jar$")))
3430 '("maven-shared-utils" "java-commons-codec")))
3431 #t))
3432 (add-after 'build 'shade
3433 (lambda* (#:key inputs #:allow-other-keys)
3434 (let ((jarjar
3435 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3436 (injar "java-surefire-api.jar")
3437 (outjar "java-surefire-api-shaded.jar"))
3438 (with-directory-excursion "build/jar"
3439 (with-output-to-file "rules"
3440 (lambda _
3441 (format #t (string-append
3442 "rule "
3443 "org.apache.maven.shared.utils.** "
3444 "org.apache.maven.surefire.shade.api."
3445 "org.apache.maven.shared.utils.@1~%"))
3446 (format #t (string-append
3447 "rule "
3448 "org.apache.commons.codec.** "
3449 "org.apache.maven.surefire.shade.api."
3450 "org.apache.commons.codec.@1~%"))))
3451 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3452 (delete-file injar)
3453 (rename-file outjar injar)))
3454 #t))
3455 (replace 'install
3456 (install-from-pom "surefire-api/pom.xml")))))
3457 (propagated-inputs
3458 (list java-surefire-logger-api java-commons-codec
3459 java-surefire-parent-pom maven-shared-utils-3.1))
3460 (inputs
3461 (list java-jsr305))
3462 (native-inputs
3463 (list unzip java-jarjar))
3464 (synopsis "Maven SureFire API")
3465 (description "This package contains the API to use Maven SureFire.")))
3466
3467 (define-public java-surefire-booter
3468 (package
3469 (inherit java-surefire-logger-api)
3470 (name "java-surefire-booter")
3471 (arguments
3472 `(#:tests? #f; require mockito 2
3473 #:jar-name "java-surefire-booter.jar"
3474 #:source-dir "surefire-booter/src/main/java"
3475 #:phases
3476 (modify-phases %standard-phases
3477 (add-before 'build 'fix-/bin/sh
3478 (lambda _
3479 (substitute* "surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java"
3480 (("/bin/sh") (which "sh")))
3481 #t))
3482 (replace 'install
3483 (install-from-pom "surefire-booter/pom.xml")))))
3484 (propagated-inputs
3485 (list java-surefire-api java-commons-lang3 java-commons-io
3486 java-surefire-parent-pom))
3487 (inputs
3488 (list java-jsr305))
3489 (synopsis "API and Facilities used by forked tests running in JVM sub-process")
3490 (description "SureFire runs tests inside a forked JVM subprocess. This
3491 package contains an API and facilities used inside that forked JVM.")))
3492
3493 (define-public java-surefire-extensions-api
3494 (package
3495 (inherit java-surefire-logger-api)
3496 (name "java-surefire-extensions-api")
3497 (arguments
3498 `(#:tests? #f; requires mockito 2
3499 #:jar-name "java-surefire-extensions-api.jar"
3500 #:source-dir "surefire-extensions-api/src/main/java"
3501 #:phases
3502 (modify-phases %standard-phases
3503 (replace 'install
3504 (install-from-pom "surefire-extensions-api/pom.xml")))))
3505 (propagated-inputs
3506 (list java-surefire-api java-surefire-parent-pom))
3507 (inputs
3508 (list java-plexus-component-annotations))
3509 (synopsis "Extension API for Maven SureFire")
3510 (description "Surefire is a test framework project. This is the aggregator
3511 POM in Apache Maven Surefire project.")))
3512
3513 (define-public java-surefire-common-java5
3514 (package
3515 (inherit java-surefire-logger-api)
3516 (name "java-surefire-common-java5")
3517 (arguments
3518 `(#:jar-name "java-surefire-common-java5.jar"
3519 #:source-dir "surefire-providers/common-java5/src/main/java"
3520 #:test-dir "surefire-providers/common-java5/src/test"
3521 #:test-exclude (list
3522 ;; Abstract class
3523 "**/PojoStackTraceWriterTest.java"
3524 ;; Fails
3525 "**/SmartStackTraceParserTest.java")
3526 #:phases
3527 (modify-phases %standard-phases
3528 (add-before 'build 'prepare-shade
3529 (lambda* (#:key inputs #:allow-other-keys)
3530 (mkdir-p "build/classes")
3531 (with-directory-excursion "build/classes"
3532 (for-each
3533 (lambda (jar-file)
3534 (invoke "jar" "xf" jar-file)
3535 (delete-file-recursively "META-INF"))
3536 (find-files (assoc-ref inputs "maven-shared-utils") ".*.jar$")))
3537 #t))
3538 (add-after 'build 'shade
3539 (lambda* (#:key inputs #:allow-other-keys)
3540 (let ((jarjar
3541 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3542 (injar "java-surefire-common-java5.jar")
3543 (outjar "java-surefire-common-java5-shaded.jar"))
3544 (with-directory-excursion "build/jar"
3545 (with-output-to-file "rules"
3546 (lambda _
3547 (format #t (string-append
3548 "rule "
3549 "org.apache.maven.shared.utils.** "
3550 "org.apache.maven.surefire.shade.common."
3551 "org.apache.maven.shared.utils.@1~%"))))
3552 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3553 (delete-file injar)
3554 (rename-file outjar injar)))
3555 #t))
3556 (replace 'install
3557 (install-from-pom "surefire-providers/common-java5/pom.xml")))))
3558 (propagated-inputs
3559 (list maven-shared-utils-3.1 java-surefire-api
3560 java-surefire-parent-pom))
3561 (native-inputs
3562 (list unzip java-jarjar java-junit java-fest-assert))
3563 (synopsis "Common java5 facilities for Maven SureFire")
3564 (description "This package contains shared Java 5 code for all providers.")))
3565
3566 (define-public java-surefire-common-junit3
3567 (package
3568 (inherit java-surefire-logger-api)
3569 (name "java-surefire-common-junit3")
3570 (arguments
3571 `(#:jar-name "java-surefire-common-junit3.jar"
3572 #:source-dir "surefire-providers/common-junit3/src/main/java"
3573 #:test-dir "surefire-providers/common-junit3/src/test"
3574 #:phases
3575 (modify-phases %standard-phases
3576 (replace 'install
3577 (install-from-pom "surefire-providers/common-junit3/pom.xml")))))
3578 (propagated-inputs
3579 (list java-junit java-surefire-api java-surefire-parent-pom))
3580 (native-inputs
3581 (list unzip java-junit java-fest-assert))
3582 (synopsis "Shared JUnit3 provider code for Maven SureFire")
3583 (description "This package contains shared code for all JUnit providers.")))
3584
3585 (define-public java-surefire-common-junit4
3586 (package
3587 (inherit java-surefire-logger-api)
3588 (name "java-surefire-common-junit4")
3589 (arguments
3590 `(#:jar-name "java-surefire-common-junit4.jar"
3591 #:source-dir "surefire-providers/common-junit4/src/main/java"
3592 #:tests? #f; tests require junit 4.0
3593 #:phases
3594 (modify-phases %standard-phases
3595 (replace 'install
3596 (install-from-pom "surefire-providers/common-junit4/pom.xml")))))
3597 (propagated-inputs
3598 (list java-junit
3599 java-surefire-api
3600 java-surefire-common-java5
3601 java-surefire-common-junit3
3602 maven-shared-utils-3.1
3603 java-surefire-parent-pom))
3604 (synopsis "Shared JUnit4 provider code for Maven SureFire")
3605 (description "This package contains shared code for all JUnit providers,
3606 starting from JUnit 4.")))
3607
3608 (define-public java-surefire-junit4
3609 (package
3610 (inherit java-surefire-logger-api)
3611 (name "java-surefire-junit4")
3612 (arguments
3613 `(;#:tests? #f
3614 #:jar-name "java-surefire-junit4.jar"
3615 #:source-dir "surefire-providers/surefire-junit4/src/main/java"
3616 #:test-dir "surefire-providers/surefire-junit4/src/test"
3617 #:modules ((guix build ant-build-system)
3618 (guix build utils)
3619 (guix build java-utils)
3620 (sxml simple))
3621 #:phases
3622 (modify-phases %standard-phases
3623 (add-before 'install 'regenerate-own-pom
3624 ;; Surefire struggles resolving artifacts because of this pom
3625 ;; file, resulting in a NullPointerException when collecting
3626 ;; Artifacts (and a "Failure detected." message from
3627 ;; DefaultArtifactResolver). Replace the pom file with a much
3628 ;; simpler one. Everything is shaded anyway (as used to be the
3629 ;; case in 2.22), so there will not be missing dependencies.
3630 (generate-pom.xml
3631 "surefire-providers/surefire-junit4/pom.xml"
3632 "org.apache.maven.surefire" "surefire-junit4"
3633 ,(package-version java-surefire-common-java5)
3634 #:name "Surefire JUnit4"))
3635 (add-before 'build 'copy-resources
3636 (lambda _
3637 (mkdir-p "build/classes")
3638 (copy-recursively "surefire-providers/surefire-junit4/src/main/resources"
3639 "build/classes")
3640 #t))
3641 (add-before 'build 'prepare-shade
3642 (lambda* (#:key inputs #:allow-other-keys)
3643 (mkdir-p "build/classes")
3644 (with-directory-excursion "build/classes"
3645 (for-each
3646 (lambda (input)
3647 (for-each
3648 (lambda (jar-file)
3649 (invoke "jar" "xf" jar-file)
3650 (delete-file-recursively "META-INF"))
3651 (find-files (assoc-ref inputs input) ".*.jar$")))
3652 '("maven-shared-utils" "java-surefire-common-java5"
3653 "java-surefire-common-junit3" "java-surefire-common-junit4"
3654 "java-surefire-api")))
3655 #t))
3656 (add-after 'build 'shade
3657 (lambda* (#:key inputs #:allow-other-keys)
3658 (let ((jarjar
3659 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3660 (injar "java-surefire-junit4.jar")
3661 (outjar "java-surefire-junit4-shaded.jar"))
3662 (with-directory-excursion "build/jar"
3663 (with-output-to-file "rules"
3664 (lambda _
3665 (format #t (string-append
3666 "rule "
3667 "org.apache.maven.shared.utils.** "
3668 "org.apache.maven.surefire.shade."
3669 "org.apache.maven.shared.utils.@1~%"))))
3670 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3671 (delete-file injar)
3672 (rename-file outjar injar)))
3673 #t))
3674 (replace 'install
3675 (install-from-pom "surefire-providers/surefire-junit4/pom.xml")))))
3676 (propagated-inputs
3677 (list java-junit java-surefire-parent-pom))
3678 (inputs
3679 (list java-surefire-common-junit4 java-surefire-common-junit3
3680 java-surefire-common-java5 java-surefire-api))
3681 (native-inputs
3682 (list java-jarjar unzip java-junit java-hamcrest-all
3683 java-fest-assert))
3684 (synopsis "SureFire JUnit 4.0+ runner")
3685 (description "This package contains the runner for tests run on a forked
3686 JVM, using JUnit 4.0 or later.")))
3687
3688 (define-public maven-surefire-common
3689 (package
3690 (inherit java-surefire-logger-api)
3691 (name "maven-surefire-common")
3692 (arguments
3693 `(#:tests? #f; require mockito 2
3694 #:jar-name "maven-surefire-common.jar"
3695 #:source-dir "maven-surefire-common/src/main/java"
3696 #:phases
3697 (modify-phases %standard-phases
3698 (add-before 'build 'prepare-shade
3699 (lambda* (#:key inputs #:allow-other-keys)
3700 (mkdir-p "build/classes")
3701 (with-directory-excursion "build/classes"
3702 (for-each
3703 (lambda (input)
3704 (for-each
3705 (lambda (jar-file)
3706 (invoke "jar" "xf" jar-file)
3707 (delete-file-recursively "META-INF"))
3708 (find-files (assoc-ref inputs input) ".*.jar$")))
3709 '("maven-shared-utils" "java-commons-io" "java-commons-lang3"
3710 "java-commons-compress" "maven-common-artifact-filters")))
3711 #t))
3712 (add-after 'build 'shade
3713 (lambda* (#:key inputs #:allow-other-keys)
3714 (let ((jarjar
3715 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3716 (injar "maven-surefire-common.jar")
3717 (outjar "maven-surefire-common-shaded.jar"))
3718 (with-directory-excursion "build/jar"
3719 (with-output-to-file "rules"
3720 (lambda _
3721 (format #t (string-append
3722 "rule "
3723 "org.apache.maven.shared.utils.** "
3724 "org.apache.maven.surefire.shade.common."
3725 "org.apache.maven.shared.utils.@1~%"))
3726 (format #t (string-append
3727 "rule "
3728 "org.apache.commons.io.** "
3729 "org.apache.maven.surefire.shade.common."
3730 "org.apache.commons.io.@1~%"))
3731 (format #t (string-append
3732 "rule "
3733 "org.apache.commons.lang3.** "
3734 "org.apache.maven.surefire.shade.common."
3735 "org.apache.commons.lang3.@1~%"))
3736 (format #t (string-append
3737 "rule "
3738 "org.apache.commons.compress.** "
3739 "org.apache.maven.surefire.shade.common."
3740 "org.apache.commons.compress.@1~%"))))
3741 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3742 (delete-file injar)
3743 (rename-file outjar injar)))
3744 #t))
3745 (add-before 'install 'fix-pom
3746 (lambda _
3747 (substitute* "maven-surefire-common/pom.xml"
3748 (("maven-toolchain") "maven-core"))
3749 #t))
3750 (replace 'install
3751 (install-from-pom "maven-surefire-common/pom.xml")))))
3752 (propagated-inputs
3753 (list java-surefire-api
3754 java-surefire-extensions-api
3755 java-surefire-booter
3756 maven-core
3757 maven-plugin-annotations
3758 maven-common-artifact-filters
3759 maven-artifact-transfer
3760 java-plexus-java
3761 java-jansi
3762 java-commons-io
3763 java-commons-lang3
3764 java-commons-compress
3765 maven-shared-utils-3.1
3766 java-surefire-parent-pom))
3767 (inputs
3768 (list java-jsr305))
3769 (native-inputs
3770 (list unzip java-jarjar))
3771 (synopsis "API used in Surefire and Failsafe MOJO")
3772 (description "This package contains an API used in SureFire and Failsafe
3773 MOJO.")))
3774
3775 (define-public maven-surefire-plugin
3776 (package
3777 (inherit java-surefire-logger-api)
3778 (name "maven-surefire-plugin")
3779 (arguments
3780 `(#:jar-name "maven-surefire-plugin.jar"
3781 #:source-dir "maven-surefire-plugin/src/main/java"
3782 #:tests? #f; test depends on maven-plugin-test-harness
3783 #:phases
3784 (modify-phases %standard-phases
3785 (add-before 'build 'generate-plugin.xml
3786 (generate-plugin.xml "maven-surefire-plugin/pom.xml"
3787 "surefire"
3788 "."
3789 (list
3790 (list
3791 "maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java"
3792 "maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java"))))
3793 (replace 'install
3794 (install-from-pom "maven-surefire-plugin/pom.xml")))))
3795 (propagated-inputs
3796 (list maven-surefire-common maven-core))
3797 (native-inputs
3798 (list maven-plugin-annotations unzip))
3799 (synopsis "SureFire Maven plugin that runs tests")
3800 (description "The Surefire Plugin is used during the test phase of the
3801 build lifecycle to execute the unit tests of an application. It generates
3802 reports in two different file formats, plain text and xml.")))
3803
3804 (define-public maven-jar-plugin
3805 (package
3806 (name "maven-jar-plugin")
3807 (version "3.2.0")
3808 (source (origin
3809 (method git-fetch)
3810 (uri (git-reference
3811 (url "https://github.com/apache/maven-jar-plugin")
3812 (commit (string-append "maven-jar-plugin-" version))))
3813 (file-name (git-file-name name version))
3814 (sha256
3815 (base32
3816 "04y2rlmcabmc55ljqlkgbb5xx94a59cz1dvrnpfj1vzz024pqkyg"))))
3817 (build-system ant-build-system)
3818 (arguments
3819 `(#:jar-name "maven-jar-plugin.jar"
3820 #:source-dir "src/main/java"
3821 #:tests? #f; test depends on maven-plugin-test-harness
3822 #:phases
3823 (modify-phases %standard-phases
3824 (add-before 'build 'generate-plugin.xml
3825 (generate-plugin.xml "pom.xml"
3826 "jar"
3827 "src/main/java/org/apache/maven/plugins/jar"
3828 (list
3829 (list "AbstractJarMojo.java" "JarMojo.java")
3830 (list "AbstractJarMojo.java" "TestJarMojo.java"))))
3831 (replace 'install
3832 (install-from-pom "pom.xml")))))
3833 (propagated-inputs
3834 (list maven-archiver
3835 maven-3.0-artifact
3836 maven-3.0-core
3837 maven-3.0-plugin-api
3838 maven-file-management
3839 maven-shared-utils
3840 java-plexus-archiver
3841 java-plexus-utils))
3842 (inputs
3843 (list maven-plugin-annotations))
3844 (home-page "https://maven.apache.org/plugins/maven-jar-plugin")
3845 (synopsis "Jar builder plugin for Maven")
3846 (description "This plugin provides the capability to build jars. If you
3847 would like to sign jars please use the Maven Jarsigner Plugin instead.")
3848 (license license:asl2.0)))