gnu: maven: Use maven-slf4j-provider instead of slf4j-simple.
[jackhill/guix/guix.git] / gnu / packages / maven.scm
1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2018-2022 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-slf4j-provider" ,maven-slf4j-provider)
1092 ("maven-core" ,maven-core)
1093 ("maven-model" ,maven-model)
1094 ("java-commons-cli" ,java-commons-cli)
1095 ("java-qdox" ,java-qdox)
1096 ("java-jdom2" ,java-jdom2)
1097 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1098 ("java-javaee-servletapi" ,java-javaee-servletapi)
1099 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
1100 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
1101 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
1102 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
1103 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
1104 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
1105 ("java-hamcrest-core" ,java-hamcrest-core)
1106 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1107 ("java-commons-codec" ,java-commons-codec)
1108 ("java-commons-io" ,java-commons-io)
1109 ("java-jsoup" ,java-jsoup)
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-slf4j-provider
1776 (package
1777 (inherit maven-artifact)
1778 (name "maven-slf4j-provider")
1779 (arguments
1780 `(#:jar-name "maven-slf4j-provider.jar"
1781 #:source-dir "maven-slf4j-provider/src/main/java"
1782 #:tests? #f; no tests
1783 #:phases
1784 (modify-phases %standard-phases
1785 (add-after 'unpack 'unpack-slf4j
1786 (lambda* (#:key inputs #:allow-other-keys)
1787 (mkdir-p "generated-sources")
1788 (with-directory-excursion "generated-sources"
1789 (invoke "tar" "xf" (assoc-ref inputs "java-slf4j-simple-source"))
1790 (for-each delete-file (find-files "." "StaticLoggerBinder.java")))
1791 (for-each
1792 (lambda (simple)
1793 (for-each
1794 (lambda (java)
1795 (copy-file java
1796 (string-append
1797 "maven-slf4j-provider/src/main/java/org/slf4j/impl/"
1798 (basename java))))
1799 (find-files (string-append simple "/src/main/java/") "\\.java$")))
1800 (find-files "generated-sources" "slf4j-simple" #:directories? #t))))
1801 (replace 'install
1802 (install-from-pom "maven-slf4j-provider/pom.xml")))))
1803 (inputs
1804 `(("java-slf4j-api" ,java-slf4j-api)
1805 ("java-slf4j-simple-source" ,(package-source java-slf4j-simple))
1806 ("maven-shared-utils" ,maven-shared-utils)))
1807 (native-inputs (list unzip))))
1808
1809 (define-public maven-embedder
1810 (package
1811 (inherit maven-artifact)
1812 (name "maven-embedder")
1813 (arguments
1814 `(#:jar-name "maven-embedder.jar"
1815 #:source-dir "maven-embedder/src/main/java"
1816 #:test-dir "maven-embedder/src/test"
1817 #:test-exclude (list "**/MavenCliTest.java")
1818 #:jdk ,icedtea-8
1819 #:phases
1820 (modify-phases %standard-phases
1821 (add-before 'build 'generate-sisu-named
1822 (lambda _
1823 (mkdir-p "build/classes/META-INF/sisu")
1824 (chmod "sisu.sh" #o755)
1825 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1826 "build/classes/META-INF/sisu/javax.inject.Named")
1827 #t))
1828 (add-before 'build 'copy-resources
1829 (lambda _
1830 (mkdir-p "build/classes/")
1831 (copy-recursively "maven-embedder/src/main/resources" "build/classes")))
1832 (add-before 'build 'generate-models
1833 (lambda* (#:key inputs #:allow-other-keys)
1834 (define (modello-single-mode file version mode)
1835 (invoke "java" "org.codehaus.modello.ModelloCli"
1836 file mode "maven-embedder/src/main/java" version
1837 "false" "true"))
1838 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1839 (modello-single-mode file "1.0.0" "java")
1840 (modello-single-mode file "1.0.0" "xpp3-reader")
1841 (modello-single-mode file "1.0.0" "xpp3-writer"))
1842 #t))
1843 (add-before 'check 'fix-test-paths
1844 (lambda _
1845 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1846 (("target/test-classes") "build/test-classes"))
1847 #t))
1848 (add-before 'check 'fix-test-compilation
1849 (lambda _
1850 ;; Tests are in the java/ subdir. Other subdirectories contain
1851 ;; additional test plugins, with duplicate classes, so we can't
1852 ;; compile them. Also, they are meant to be built with maven, to
1853 ;; test its build process.
1854 (substitute* "build.xml"
1855 (("srcdir=\"maven-embedder/src/test\"")
1856 "srcdir=\"maven-embedder/src/test/java\""))
1857 #t))
1858 (add-before 'check 'disable-failing-test
1859 (lambda _
1860 (delete-file "maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java")))
1861 (add-before 'install 'fix-pom
1862 (lambda _
1863 (substitute* "maven-embedder/pom.xml"
1864 (("jsr250-api") "javax.annotation-api"))))
1865 (replace 'install
1866 (install-from-pom "maven-embedder/pom.xml")))))
1867 (propagated-inputs
1868 `(("maven-core" ,maven-core)
1869 ("maven-artifact" ,maven-artifact)
1870 ("maven-plugin-api" ,maven-plugin-api)
1871 ("maven-builder-support" ,maven-builder-support)
1872 ("maven-model" ,maven-model)
1873 ("maven-model-builder" ,maven-model-builder)
1874 ("maven-settings" ,maven-settings)
1875 ("maven-settings-builder" ,maven-settings-builder)
1876 ("maven-shared-utils" ,maven-shared-utils)
1877 ("maven-slf4j-provider" ,maven-slf4j-provider)
1878 ("java-plexus-classworlds" ,java-plexus-classworlds)
1879 ("java-plexus-util" ,java-plexus-utils)
1880 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1881 ("java-plexus-cipher" ,java-plexus-cipher)
1882 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1883 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1884 ("maven-resolevr-util" ,maven-resolver-util)
1885 ("maven-resolevr-api" ,maven-resolver-api)
1886 ("java-logback-core" ,java-logback-core)
1887 ("java-logback-classic" ,java-logback-classic)
1888 ("java-commons-cli" ,java-commons-cli)
1889 ("java-commons-io" ,java-commons-io)
1890 ("java-commons-lang3" ,java-commons-lang3)
1891 ("java-guava" ,java-guava)
1892 ("java-guice" ,java-guice)
1893 ("java-javax-inject" ,java-javax-inject)
1894 ("java-slf4j-api" ,java-slf4j-api)
1895 ("java-jsr250" ,java-jsr250)))
1896 (native-inputs
1897 `(("java-asm-8" ,java-asm-8)
1898 ("java-modello-core" ,java-modello-core)
1899 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1900 ("java-plexus-build-api" ,java-plexus-build-api)
1901 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1902 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1903 ("java-cglib" ,java-cglib)
1904 ("java-modello-plugins-java" ,java-modello-plugins-java)
1905 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1906 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1907 ;; tests
1908 ("java-junit" ,java-junit)
1909 ("java-objenesis" ,java-objenesis)
1910 ("java-mockito-1" ,java-mockito-1)
1911 ("java-hamcrest-core" ,java-hamcrest-core)))
1912 (description "Apache Maven is a software project management and comprehension
1913 tool. This package contains a Maven embeddable component, with CLI and
1914 logging support.")))
1915
1916 (define-public maven-compat
1917 (package
1918 (inherit maven-artifact)
1919 (name "maven-compat")
1920 (arguments
1921 `(#:jar-name "maven-compat.jar"
1922 #:source-dir "src/main/java"
1923 #:jdk ,icedtea-8
1924 #:test-dir "src/test"
1925 #:phases
1926 (modify-phases %standard-phases
1927 ;; Tests assume we're in this directory
1928 (add-before 'configure 'chdir
1929 (lambda _
1930 (chdir "maven-compat")
1931 #t))
1932 (add-before 'build 'recreate-removed-jar
1933 (lambda _
1934 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1935 (const #t))
1936 (with-directory-excursion "src/test/resources"
1937 (with-output-to-file "artifact-install/artifact-1.0.jar"
1938 (lambda _
1939 (format #t "dummy~%")))
1940 (for-each
1941 (lambda (file)
1942 (with-output-to-file file
1943 (lambda _
1944 (format #t "foo~%"))))
1945 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1946 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1947 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1948 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1949 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1950 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1951 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1952 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1953 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1954 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1955 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1956 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1957 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1958 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1959 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1960 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1961 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1962 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1963 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1964 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1965 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1966 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1967 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1968 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1969 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1970 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1971 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1972 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1973 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1974 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1975 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1976 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1977 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1978 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1979 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1980 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1981 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1982 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1983 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1984 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1985 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1986 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1987 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1988 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1989 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1990 (with-directory-excursion "local-repo/snapshot-test/jars"
1991 (for-each
1992 (lambda (file)
1993 (with-output-to-file file
1994 (lambda _
1995 ;; No end-of-line
1996 (format #t "local"))))
1997 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1998 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1999 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
2000 (for-each
2001 (lambda (letter)
2002 (with-directory-excursion
2003 (string-append "src/test/remote-repo/org/apache/maven/its/"
2004 letter "/0.1")
2005 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
2006 letter)))
2007 (mkdir-p dir)
2008 (copy-file (string-append letter "-0.1.pom")
2009 (string-append dir "/pom.xml"))
2010 (with-output-to-file (string-append dir "/pom.properties")
2011 (lambda _
2012 (format #t "version=0.1~%")
2013 (format #t "groupId=org.apache.maven.its")
2014 (format #t (string-append "artifactId=" letter))))
2015 (with-output-to-file "META-INF/MANIFEST.MF"
2016 (lambda _
2017 (format #t "Manifest-Version: 1.0~%"))))
2018 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
2019 (string-append letter "-0.1.jar") "META-INF")))
2020 '("a" "b"))
2021 #t))
2022 (add-before 'build 'generate-models
2023 (lambda* (#:key inputs #:allow-other-keys)
2024 (define (modello-single-mode file version mode)
2025 (invoke "java" "org.codehaus.modello.ModelloCli"
2026 file mode "src/main/java" version
2027 "false" "true"))
2028 (let ((file "src/main/mdo/profiles.mdo"))
2029 (modello-single-mode file "1.0.0" "java")
2030 (modello-single-mode file "1.0.0" "xpp3-reader")
2031 (modello-single-mode file "1.0.0" "xpp3-writer"))
2032 (let ((file "src/main/mdo/paramdoc.mdo"))
2033 (modello-single-mode file "1.0.0" "java")
2034 (modello-single-mode file "1.0.0" "xpp3-reader")
2035 (modello-single-mode file "1.0.0" "xpp3-writer"))
2036 #t))
2037 (add-before 'build 'copy-resources
2038 (lambda _
2039 (mkdir-p "build/classes/")
2040 (copy-recursively "src/main/resources" "build/classes")))
2041 (add-after 'build 'generate-metadata
2042 (lambda _
2043 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2044 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2045 "--source" "src/main/java"
2046 "--output" "build/classes/META-INF/plexus/components.xml"
2047 "--classes" "build/classes"
2048 "--descriptors" "build/classes/META-INF")
2049 #t))
2050 (add-before 'check 'build-tests
2051 (lambda _
2052 (invoke "ant" "compile-tests")
2053 #t))
2054 (add-after 'build-tests 'generate-test-metadata
2055 (lambda _
2056 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
2057 ":build/classes"
2058 ":build/test-classes")
2059 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2060 "--source" "src/test/java"
2061 "--output" "build/test-classes/META-INF/plexus/components.xml"
2062 "--classes" "build/test-classes"
2063 "--descriptors" "build/test-classes/META-INF")
2064 #t))
2065 (add-before 'check 'disable-failing-test
2066 (lambda _
2067 (delete-file "src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java")))
2068 (add-after 'generate-metadata 'rebuild
2069 (lambda _
2070 (invoke "ant" "jar")
2071 #t))
2072 (replace 'install
2073 (install-from-pom "pom.xml")))))
2074 (propagated-inputs
2075 (list maven-artifact
2076 maven-repository-metadata
2077 maven-builder-support
2078 maven-model
2079 maven-model-builder
2080 maven-settings
2081 maven-settings-builder
2082 maven-core
2083 maven-wagon-provider-api
2084 maven-wagon-file
2085 maven-resolver-api
2086 maven-resolver-util
2087 maven-resolver-spi
2088 java-plexus-interpolation))
2089 (native-inputs
2090 `(("java-modello-core" ,java-modello-core)
2091 ("java-plexus-utils" ,java-plexus-utils)
2092 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
2093 ("java-plexus-classworlds" ,java-plexus-classworlds)
2094 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
2095 ("java-plexus-build-api" ,java-plexus-build-api)
2096 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2097 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
2098 ("java-javax-inject" ,java-javax-inject)
2099 ("java-guice" ,java-guice)
2100 ("java-guava" ,java-guava)
2101 ("java-cglib" ,java-cglib)
2102 ("java-asm" ,java-asm)
2103 ("java-modello-plugins-java" ,java-modello-plugins-java)
2104 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
2105 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
2106 ;; metadata
2107 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
2108 ("java-commons-cli" ,java-commons-cli)
2109 ("java-plexus-cli" ,java-plexus-cli)
2110 ("java-jdom2" ,java-jdom2)
2111 ("maven-plugin-api" ,maven-plugin-api)
2112 ("java-qdox" ,java-qdox)
2113 ;; tests
2114 ("java-plexus-cipher" ,java-plexus-cipher)
2115 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2116 ("java-jsr250" ,java-jsr250)
2117 ("java-cdi-api" ,java-cdi-api)
2118 ("java-junit" ,java-junit)
2119 ("maven-resolver-impl" ,maven-resolver-impl)
2120 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
2121 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
2122 ("java-commons-lang3" ,java-commons-lang3)
2123 ("java-aop" ,java-aopalliance)
2124 ("maven-resolver-provider" ,maven-resolver-provider)
2125 ("maven-slf4j-provider" ,maven-slf4j-provider)
2126 ("java-slf4j-api" ,java-slf4j-api)
2127 ,@(package-inputs java-slf4j-api)))
2128 (description "Apache Maven is a software project management and comprehension
2129 tool. This package contains Maven2 classes maintained as compatibility
2130 layer for plugins that need to keep Maven2 compatibility.")))
2131
2132 (define-public maven
2133 (package
2134 (inherit maven-artifact)
2135 (name "maven")
2136 (arguments
2137 `(#:phases
2138 (modify-phases %standard-phases
2139 (replace 'build
2140 (lambda* (#:key inputs #:allow-other-keys)
2141 ;; Recreate the configuration for the loader
2142 (with-output-to-file "apache-maven/src/bin/m2.conf"
2143 (lambda _
2144 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
2145 (format #t "~%")
2146 (format #t "set maven.conf default ${maven.home}/conf~%")
2147 (format #t "~%")
2148 (format #t "[plexus.core]~%")
2149 (format #t "load ${maven.conf}/logging~%")
2150 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
2151 ;; Reference every jar so plexus-classworlds can find them.
2152 (for-each
2153 (lambda (dependency)
2154 (for-each
2155 (lambda (file)
2156 (format #t "load ~a~%" file))
2157 (find-files (assoc-ref inputs dependency) ".*.jar$")))
2158 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
2159 "maven-builder-support" "maven-model" "maven-model-builder"
2160 "maven-settings" "maven-settings-builder" "maven-plugin-api"
2161 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
2162 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
2163 "maven-resolver-connector-basic" "maven-resolver-provider"
2164 "maven-resolver-transport-wagon" "maven-slf4j-provider"
2165 "maven-wagon-provider-api"
2166 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
2167 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
2168 "maven-wagon-http-shared" "maven-wagon-tck-http"
2169 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
2170 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
2171 "java-javax-inject" "java-plexus-component-annotations"
2172 "java-plexus-utils" "java-plexus-interpolation"
2173 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
2174 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
2175 "java-commons-io" "java-commons-lang3" "java-slf4j-api"))))
2176 (substitute* "apache-maven/src/bin/mvn"
2177 (("cygwin=false;")
2178 (string-append
2179 "CLASSPATH="
2180 (car (find-files
2181 (assoc-ref inputs "java-plexus-classworlds")
2182 ".*.jar"))
2183 "\ncygwin=false;"))
2184 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
2185 #t))
2186 (delete 'check)
2187 (replace 'install
2188 (lambda* (#:key outputs #:allow-other-keys)
2189 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
2190 (conf (string-append (assoc-ref outputs "out") "/conf/")))
2191 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
2192 (for-each (lambda (file)
2193 (install-file (string-append "apache-maven/src/bin/" file)
2194 bin)
2195 (chmod (string-append bin file) #o755))
2196 '("mvn" "mvnDebug" "mvnyjp"))
2197 (install-file "apache-maven/src/bin/m2.conf" bin)
2198 (copy-recursively "apache-maven/src/conf" conf))
2199 #t)))))
2200 (inputs
2201 (list java-plexus-classworlds
2202 maven-artifact
2203 maven-embedder
2204 maven-core
2205 maven-compat
2206 maven-builder-support
2207 maven-model
2208 maven-model-builder
2209 maven-settings
2210 maven-settings-builder
2211 maven-plugin-api
2212 maven-repository-metadata
2213 maven-shared-utils
2214 maven-resolver-api
2215 maven-resolver-spi
2216 maven-resolver-util
2217 maven-resolver-impl
2218 maven-resolver-connector-basic
2219 maven-resolver-provider
2220 maven-resolver-transport-wagon
2221 maven-slf4j-provider
2222 maven-wagon-provider-api
2223 maven-wagon-file
2224 maven-wagon-http
2225 java-commons-logging-minimal
2226 java-httpcomponents-httpclient
2227 java-httpcomponents-httpcore
2228 maven-wagon-http-shared
2229 maven-wagon-tck-http
2230 java-eclipse-sisu-plexus
2231 java-guice
2232 java-aopalliance
2233 java-cglib
2234 java-asm-8
2235 java-eclipse-sisu-inject
2236 java-javax-inject
2237 java-plexus-component-annotations
2238 java-plexus-utils
2239 java-plexus-interpolation
2240 java-plexus-sec-dispatcher
2241 java-plexus-cipher
2242 java-guava
2243 java-jansi
2244 java-jsr250
2245 java-cdi-api
2246 java-commons-cli
2247 java-commons-io
2248 java-commons-lang3
2249 java-slf4j-api))
2250 (propagated-inputs
2251 (list coreutils which))
2252 (description "Apache Maven is a software project management and comprehension
2253 tool. Based on the concept of a project object model: builds, dependency
2254 management, documentation creation, site publication, and distribution
2255 publication are all controlled from the @file{pom.xml} declarative file. Maven
2256 can be extended by plugins to utilise a number of other development tools for
2257 reporting or the build process.")))
2258
2259 ;; Many plugins require maven 3.0 as a dependency.
2260 (define maven-3.0-pom
2261 (package
2262 (inherit maven-pom)
2263 (version "3.0")
2264 (source (origin
2265 (method git-fetch)
2266 (uri (git-reference
2267 (url "https://github.com/apache/maven")
2268 (commit (string-append "maven-" version))))
2269 (file-name (git-file-name "maven" version))
2270 (sha256
2271 (base32
2272 "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
2273 (modules '((guix build utils)))
2274 (snippet
2275 '(begin
2276 (for-each delete-file (find-files "." "\\.jar$"))
2277 (for-each (lambda (file) (chmod file #o644))
2278 (find-files "." "."))
2279 #t))
2280 (patches
2281 (search-patches "maven-generate-component-xml.patch"
2282 "maven-generate-javax-inject-named.patch"))))
2283 (propagated-inputs
2284 `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
2285
2286 (define-public maven-3.0-artifact
2287 (package
2288 (inherit maven-artifact)
2289 (version (package-version maven-3.0-pom))
2290 (source (package-source maven-3.0-pom))
2291 (propagated-inputs
2292 (map
2293 (lambda (input)
2294 (if (equal? (car input) "maven-pom")
2295 `("maven-pom" ,maven-3.0-pom)
2296 input))
2297 (package-propagated-inputs maven-artifact)))))
2298
2299 (define-public maven-3.0-model
2300 (package
2301 (inherit maven-model)
2302 (version (package-version maven-3.0-pom))
2303 (source (package-source maven-3.0-pom))
2304 (propagated-inputs
2305 (map
2306 (lambda (input)
2307 (if (equal? (car input) "maven-pom")
2308 `("maven-pom" ,maven-3.0-pom)
2309 input))
2310 (package-propagated-inputs maven-artifact)))
2311 (arguments
2312 `(#:jar-name "maven-model.jar"
2313 #:source-dir "maven-model/src/main/java"
2314 #:test-dir "maven-model/src/test"
2315 #:modules
2316 ((guix build ant-build-system)
2317 (guix build java-utils)
2318 (guix build syscalls)
2319 (guix build utils))
2320 #:phases
2321 (modify-phases %standard-phases
2322 (add-after 'configure 'use-newer-model
2323 (lambda* (#:key inputs #:allow-other-keys)
2324 ;; The model has almost not changed, but the newer version is
2325 ;; needed to prevent an error in the newer modello we have
2326 (let ((source (assoc-ref inputs "maven-source"))
2327 (dir (mkdtemp! "maven-source-XXXXXXXX")))
2328 (with-directory-excursion dir
2329 (invoke "tar" "xf" source)
2330 (copy-file (car (find-files "." "maven.mdo"))
2331 "../maven-model/src/main/mdo/maven.mdo")))
2332 #t))
2333 (add-before 'build 'generate-models
2334 (lambda* (#:key inputs #:allow-other-keys)
2335 (define (modello-single-mode file version mode)
2336 (invoke "java" "org.codehaus.modello.ModelloCli"
2337 file mode "maven-model/src/main/java" version
2338 "false" "true" "UTF-8"))
2339 (let ((file "maven-model/src/main/mdo/maven.mdo"))
2340 (modello-single-mode file "4.0.0" "java")
2341 (modello-single-mode file "4.0.0" "xpp3-reader")
2342 (modello-single-mode file "4.0.0" "xpp3-writer")
2343 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
2344 #t))
2345 (replace 'install
2346 (install-from-pom "maven-model/pom.xml")))))
2347 (inputs
2348 `(("maven-source" ,(package-source maven-pom))
2349 ,@(package-inputs maven-model)))))
2350
2351 (define-public maven-3.0-settings
2352 (package
2353 (inherit maven-settings)
2354 (version (package-version maven-3.0-pom))
2355 (source (package-source maven-3.0-pom))
2356 (propagated-inputs
2357 (map
2358 (lambda (input)
2359 (if (equal? (car input) "maven-pom")
2360 `("maven-pom" ,maven-3.0-pom)
2361 input))
2362 (package-propagated-inputs maven-settings)))))
2363
2364 (define-public maven-3.0-settings-builder
2365 (package
2366 (inherit maven-settings-builder)
2367 (version (package-version maven-3.0-pom))
2368 (source (package-source maven-3.0-pom))
2369 (arguments
2370 (substitute-keyword-arguments (package-arguments maven-settings-builder)
2371 ((#:phases phases)
2372 `(modify-phases ,phases
2373 (add-before 'build 'generate-components.xml
2374 (lambda _
2375 (mkdir-p "build/classes/META-INF/plexus")
2376 (chmod "components.sh" #o755)
2377 (invoke "./components.sh" "maven-settings-builder/src/main/java"
2378 "build/classes/META-INF/plexus/components.xml")))))))
2379 (propagated-inputs
2380 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2381 ,@(filter
2382 (lambda (a) a)
2383 (map
2384 (lambda (input)
2385 (match (car input)
2386 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2387 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
2388 ("maven-builder-support" #f)
2389 ("java-plexus-sec-dispatcher"
2390 `("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher-1.4))
2391 (_ input)))
2392 (package-propagated-inputs maven-settings-builder)))))))
2393
2394 (define-public maven-3.0-model-builder
2395 (package
2396 (inherit maven-model-builder)
2397 (version (package-version maven-3.0-pom))
2398 (source (package-source maven-3.0-pom))
2399 (arguments
2400 (substitute-keyword-arguments (package-arguments maven-model-builder)
2401 ((#:phases phases)
2402 `(modify-phases ,phases
2403 (add-before 'build 'generate-components.xml
2404 (lambda _
2405 (mkdir-p "build/classes/META-INF/plexus")
2406 (chmod "components.sh" #o755)
2407 (invoke "./components.sh" "maven-model-builder/src/main/java"
2408 "build/classes/META-INF/plexus/components.xml")))
2409 (add-before 'check 'remove-failing-test
2410 (lambda _
2411 (delete-file "maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
2412 (propagated-inputs
2413 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2414 ,@(filter
2415 (lambda (a) a)
2416 (map
2417 (lambda (input)
2418 (match (car input)
2419 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2420 ("maven-model" `("maven-model" ,maven-3.0-model))
2421 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2422 ("maven-builder-support" #f)
2423 (_ input)))
2424 (package-propagated-inputs maven-model-builder)))))))
2425
2426 (define-public maven-3.0-plugin-api
2427 (package
2428 (inherit maven-plugin-api)
2429 (version (package-version maven-3.0-pom))
2430 (source (package-source maven-3.0-pom))
2431 (arguments
2432 (substitute-keyword-arguments (package-arguments maven-plugin-api)
2433 ((#:phases phases)
2434 `(modify-phases ,phases
2435 (add-before 'install 'fix-pom
2436 (lambda _
2437 (substitute* "maven-plugin-api/pom.xml"
2438 (("org.sonatype.sisu") "org.codehaus.plexus")
2439 (("sisu-inject-plexus") "plexus-container-default"))
2440 #t))))))
2441 (propagated-inputs
2442 (map
2443 (lambda (input)
2444 (match (car input)
2445 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2446 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2447 ("maven-model" `("maven-model" ,maven-3.0-model))
2448 (_ input)))
2449 (package-propagated-inputs maven-model-builder)))
2450 (native-inputs
2451 (modify-inputs (package-native-inputs maven-plugin-api)
2452 (prepend java-plexus-container-default)))))
2453
2454 (define-public maven-3.0-repository-metadata
2455 (package
2456 (inherit maven-repository-metadata)
2457 (version (package-version maven-3.0-pom))
2458 (source (package-source maven-3.0-pom))
2459 (propagated-inputs
2460 (map
2461 (lambda (input)
2462 (if (equal? (car input) "maven-pom")
2463 `("maven-pom" ,maven-3.0-pom)
2464 input))
2465 (package-propagated-inputs maven-repository-metadata)))))
2466
2467 (define-public maven-3.0-aether-provider
2468 (package
2469 (inherit maven-3.0-pom)
2470 (name "maven-aether-provider")
2471 (arguments
2472 `(#:jar-name "maven-aether-provider.jar"
2473 #:source-dir "maven-aether-provider/src/main/java"
2474 #:tests? #f; no tests in 3.0
2475 #:phases
2476 (modify-phases %standard-phases
2477 (add-after 'build 'generate-metadata
2478 (lambda _
2479 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2480 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2481 "--source" "src/main/java"
2482 "--output" "build/classes/META-INF/plexus/components.xml"
2483 "--classes" "build/classes"
2484 "--descriptors" "build/classes/META-INF")
2485 #t))
2486 (add-after 'generate-metadata 'rebuild
2487 (lambda _
2488 (invoke "ant" "jar")
2489 #t))
2490 (replace 'install
2491 (install-from-pom "maven-aether-provider/pom.xml")))))
2492 (propagated-inputs
2493 `(("maven-model" ,maven-3.0-model)
2494 ("maven-model-builder" ,maven-3.0-model-builder)
2495 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2496 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2497 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
2498 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2499 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
2500 ("java-plexus-utils" ,java-plexus-utils)
2501 ("maven-pom" ,maven-3.0-pom)))
2502 (native-inputs
2503 (list java-plexus-component-metadata))))
2504
2505 (define-public maven-3.0-core
2506 (package
2507 (inherit maven-core)
2508 (version (package-version maven-3.0-pom))
2509 (source (package-source maven-3.0-pom))
2510 (arguments
2511 `(#:jar-name "maven-core.jar"
2512 #:source-dir "src/main/java"
2513 #:tests? #f
2514 #:phases
2515 (modify-phases %standard-phases
2516 (add-before 'configure 'chdir
2517 (lambda _
2518 ;; Required for generating components.xml in maven-core
2519 (chdir "maven-core")
2520 #t))
2521 (add-before 'build 'generate-models
2522 (lambda* (#:key inputs #:allow-other-keys)
2523 (define (modello-single-mode file version mode)
2524 (invoke "java" "org.codehaus.modello.ModelloCli"
2525 file mode "src/main/java" version
2526 "false" "true" "UTF-8"))
2527 (let ((file "src/main/mdo/toolchains.mdo"))
2528 (modello-single-mode file "1.0.0" "java")
2529 (modello-single-mode file "1.0.0" "xpp3-reader")
2530 (modello-single-mode file "1.0.0" "xpp3-writer"))
2531 #t))
2532 (add-before 'build 'copy-resources
2533 (lambda _
2534 (mkdir-p "build/classes/")
2535 (copy-recursively "src/main/resources" "build/classes")
2536 #t))
2537 (add-after 'build 'generate-metadata
2538 (lambda _
2539 (define (components file)
2540 (let ((sxml (with-input-from-file file
2541 (lambda _ (xml->sxml (current-input-port)
2542 #:trim-whitespace? #t)))))
2543 ;; Select the list of <component>s inside the <component-set>
2544 ;; and <components>.
2545 ((@ (ice-9 match) match) sxml
2546 (('*TOP*
2547 ('*PI* foo ...)
2548 ('component-set
2549 ('components x ...))) x))))
2550 (use-modules (sxml simple))
2551 (delete-file "build/classes/META-INF/plexus/components.xml")
2552 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2553 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2554 "--source" "build/classes/META-INF/plexus"
2555 "--output" "build/classes/META-INF/plexus/components.t.xml"
2556 "--classes" "build/classes"
2557 "--descriptors" "build/classes")
2558 ;; Now we merge all other components from hand-written xml
2559 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
2560 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
2561 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
2562 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
2563 (lambda _
2564 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
2565 (sxml->xml
2566 `(component-set
2567 (components
2568 ,@(append generated-xml components-xml
2569 artifact-handlers-xml)))))))
2570 #t))
2571 (add-after 'generate-metadata 'rebuild
2572 (lambda _
2573 (invoke "ant" "jar")
2574 #t))
2575 (add-before 'install 'fix-pom
2576 (lambda _
2577 (substitute* "pom.xml"
2578 (("org.sonatype.sisu") "org.codehaus.plexus")
2579 (("sisu-inject-plexus") "plexus-container-default"))
2580 #t))
2581 (replace 'install
2582 (install-from-pom "pom.xml")))))
2583 (propagated-inputs
2584 (list maven-3.0-model
2585 maven-3.0-settings
2586 maven-3.0-settings-builder
2587 maven-3.0-repository-metadata
2588 maven-3.0-artifact
2589 maven-3.0-model-builder
2590 maven-3.0-aether-provider
2591 java-sonatype-aether-impl
2592 java-sonatype-aether-api
2593 java-sonatype-aether-util
2594 java-plexus-interpolation
2595 java-plexus-utils
2596 java-plexus-classworlds
2597 java-plexus-component-annotations
2598 java-plexus-container-default
2599 java-plexus-sec-dispatcher-1.4
2600 maven-3.0-pom))))
2601
2602 (define-public maven-3.0-compat
2603 (package
2604 (inherit maven-compat)
2605 (version (package-version maven-3.0-pom))
2606 (source (package-source maven-3.0-pom))
2607 (arguments
2608 `(#:tests? #f ;require an old version of java-easymock
2609 ,@(substitute-keyword-arguments (package-arguments maven-compat)
2610 ((#:phases phases)
2611 `(modify-phases ,phases
2612 (add-before 'install 'fix-pom
2613 (lambda _
2614 (substitute* "pom.xml"
2615 (("org.sonatype.sisu") "org.codehaus.plexus")
2616 (("sisu-inject-plexus") "plexus-container-default"))
2617 #t))
2618 (delete 'build-tests))))))
2619 (propagated-inputs
2620 (list maven-3.0-model
2621 maven-3.0-model-builder
2622 maven-3.0-settings
2623 maven-3.0-settings-builder
2624 maven-3.0-artifact
2625 maven-3.0-core
2626 maven-3.0-aether-provider
2627 maven-3.0-repository-metadata
2628 java-sonatype-aether-api
2629 java-sonatype-aether-util
2630 java-sonatype-aether-impl
2631 java-plexus-utils
2632 java-plexus-interpolation
2633 java-eclipse-sisu-plexus
2634 java-plexus-component-annotations
2635 java-plexus-container-default
2636 maven-wagon-provider-api
2637 maven-3.0-pom))))
2638
2639 (define-public maven-shared-utils-3.0
2640 (package
2641 (inherit maven-shared-utils)
2642 (version "3.0.0")
2643 (source (origin
2644 (method url-fetch)
2645 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2646 "maven-shared-utils-" version "-source-release.zip"))
2647 (sha256
2648 (base32
2649 "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
2650 (propagated-inputs
2651 (modify-inputs (package-propagated-inputs maven-shared-utils)
2652 (prepend maven-3.0-core maven-components-parent-pom-21)))))
2653
2654 (define-public maven-shared-utils-3.1
2655 (package
2656 (inherit maven-shared-utils)
2657 (version "3.1.0")
2658 (source (origin
2659 (method url-fetch)
2660 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2661 "maven-shared-utils-" version "-source-release.zip"))
2662 (sha256
2663 (base32
2664 "0vfaas4g09ch0agrd1dcxcmhdd3w971ssvfr9mx9gi2lp5nv8w66"))))))
2665
2666 (define-public maven-shared-io
2667 (package
2668 (name "maven-shared-io")
2669 (version "3.0.0")
2670 (source (origin
2671 (method url-fetch)
2672 (uri (string-append "mirror://apache/maven/shared/"
2673 "maven-shared-io-" version
2674 "-source-release.zip"))
2675 (sha256
2676 (base32
2677 "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
2678 (build-system ant-build-system)
2679 (arguments
2680 `(#:jar-name "maven-shared-io.jar"
2681 #:source-dir "src/main/java"
2682 #:test-dir "src/test"
2683 #:phases
2684 (modify-phases %standard-phases
2685 (add-before 'build 'copy-resources
2686 (lambda _
2687 (copy-recursively "src/main/resources" "build/classes/")
2688 (copy-recursively "src/test/resources" "build/test-classes/")
2689 #t))
2690 (replace 'install
2691 (install-from-pom "pom.xml")))))
2692 (propagated-inputs
2693 (list maven-3.0-artifact
2694 maven-3.0-compat
2695 maven-3.0-plugin-api
2696 maven-shared-utils
2697 maven-wagon-provider-api
2698 java-plexus-utils
2699 maven-components-parent-pom-22))
2700 (native-inputs
2701 (list unzip java-junit java-easymock))
2702 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2703 (synopsis "Tree-based API for resolution of Maven project dependencies")
2704 (description "This package provides a tree-based API for resolution of
2705 Maven project dependencies.")
2706 (license license:asl2.0)))
2707
2708 (define-public maven-file-management
2709 (package
2710 (name "maven-file-management")
2711 (version "3.0.0")
2712 (source (origin
2713 (method url-fetch)
2714 (uri (string-append "mirror://apache/maven/shared/"
2715 "file-management-" version
2716 "-source-release.zip"))
2717 (sha256
2718 (base32
2719 "0wisz6sm67axrwvx8a75mb9s03h7kzkzfw8j3aaa4sx4k9ph58da"))))
2720 (build-system ant-build-system)
2721 (arguments
2722 `(#:jar-name "maven-file-management.jar"
2723 #:source-dir "src/main/java"
2724 #:phases
2725 (modify-phases %standard-phases
2726 (add-before 'build 'copy-resources
2727 (lambda _
2728 (copy-recursively "src/main/resources" "build/classes/")
2729 #t))
2730 (add-before 'build 'generate-models
2731 (lambda* (#:key inputs #:allow-other-keys)
2732 (define (modello-single-mode file version mode)
2733 (invoke "java"
2734 "org.codehaus.modello.ModelloCli"
2735 file mode "src/main/java" version
2736 "false" "true"))
2737 (let ((file "src/main/mdo/fileset.mdo"))
2738 (modello-single-mode file "1.1.0" "java")
2739 (modello-single-mode file "1.1.0" "xpp3-reader")
2740 (modello-single-mode file "1.1.0" "xpp3-writer"))
2741 #t))
2742 (replace 'install
2743 (install-from-pom "pom.xml")))))
2744 (propagated-inputs
2745 (list maven-3.0-plugin-api maven-shared-io maven-shared-utils
2746 java-plexus-utils maven-components-parent-pom-22))
2747 (native-inputs
2748 `(("java-modello-core" ,java-modello-core)
2749 ;; modello plugins:
2750 ("java-modellop-plugins-java" ,java-modello-plugins-java)
2751 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
2752 ("unzip" ,unzip)))
2753 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2754 (synopsis "Tree-based API for resolution of Maven project dependencies")
2755 (description "This package provides a tree-based API for resolution of
2756 Maven project dependencies.")
2757 (license license:asl2.0)))
2758
2759 (define-public maven-archiver
2760 (package
2761 (name "maven-archiver")
2762 (version "3.5.0")
2763 (source (origin
2764 (method url-fetch)
2765 (uri (string-append "mirror://apache/maven/shared/"
2766 "maven-archiver-" version
2767 "-source-release.zip"))
2768 (sha256
2769 (base32
2770 "1204xkqj259brpk3yscprml0lbfbyn1vn5nrgqjk44z5vx127lbw"))))
2771 (build-system ant-build-system)
2772 (arguments
2773 `(#:jar-name "maven-archiver.jar"
2774 #:source-dir "src/main/java"
2775 #:phases
2776 (modify-phases %standard-phases
2777 (replace 'install
2778 (install-from-pom "pom.xml")))))
2779 (propagated-inputs
2780 `(("java-commons-io" ,java-commons-io)
2781 ("maven-artifact" ,maven-3.0-artifact)
2782 ("maven-core" ,maven-3.0-core)
2783 ("maven-model" ,maven-3.0-model)
2784 ("maven-shared-utils" ,maven-shared-utils)
2785 ("java-plexus-archiver" ,java-plexus-archiver)
2786 ("java-plexus-interpolation" ,java-plexus-interpolation)
2787 ("java-plexus-utils" ,java-plexus-utils)
2788 ("maen-parent-pom" ,maven-parent-pom-33)))
2789 (native-inputs
2790 (list java-junit java-assertj unzip))
2791 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2792 (synopsis "Tree-based API for resolution of Maven project dependencies")
2793 (description "This package provides a tree-based API for resolution of
2794 Maven project dependencies.")
2795 (license license:asl2.0)))
2796
2797 (define-public maven-dependency-tree
2798 (package
2799 (name "maven-dependency-tree")
2800 (version "3.1.0")
2801 (source (origin
2802 (method url-fetch)
2803 (uri (string-append "mirror://apache/maven/shared/"
2804 "maven-dependency-tree-" version
2805 "-source-release.zip"))
2806 (sha256
2807 (base32
2808 "1vhcd3lmbyy8q61c37sqgbllqj4ypkxm344l6pb05mkchlyk5dy5"))))
2809 (build-system ant-build-system)
2810 (arguments
2811 `(#:jar-name "maven-dependency-tree.jar"
2812 #:source-dir "src/main/java"
2813 #:tests? #f; no tests
2814 #:phases
2815 (modify-phases %standard-phases
2816 (replace 'install
2817 (install-from-pom "pom.xml")))))
2818 (propagated-inputs
2819 (list maven-3.0-core java-plexus-component-annotations
2820 maven-parent-pom-34))
2821 (inputs
2822 (list java-sonatype-aether-api-1.13 java-sonatype-aether-util-1.13
2823 java-eclipse-aether-api java-eclipse-aether-util))
2824 (native-inputs
2825 (list unzip java-junit))
2826 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2827 (synopsis "Tree-based API for resolution of Maven project dependencies")
2828 (description "This package provides a tree-based API for resolution of
2829 Maven project dependencies.")
2830 (license license:asl2.0)))
2831
2832 (define-public maven-common-artifact-filters
2833 (package
2834 (name "maven-common-artifact-filters")
2835 (version "3.2.0")
2836 (source (origin
2837 (method url-fetch)
2838 (uri (string-append "mirror://apache/maven/shared/"
2839 "maven-common-artifact-filters-" version
2840 "-source-release.zip"))
2841 (sha256
2842 (base32
2843 "1mr92s4zz6gf028wiskjg8rd1znxzdnmskg42ac55ifg9v1p1884"))))
2844 (build-system ant-build-system)
2845 (arguments
2846 `(#:jar-name "maven-common-artifact-filters.jar"
2847 #:source-dir "src/main/java"
2848 #:tests? #f; require maven-plugin-testing-harness, which requires maven 3.2.
2849 #:phases
2850 (modify-phases %standard-phases
2851 (add-before 'build 'fix-aether
2852 (lambda _
2853 (substitute* "pom.xml"
2854 (("eclipse.aether") "sonatype.aether"))
2855 (substitute* "src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java"
2856 (("eclipse") "sonatype"))))
2857 (replace 'install
2858 (install-from-pom "pom.xml")))))
2859 (propagated-inputs
2860 (list maven-3.0-artifact
2861 maven-3.0-model
2862 maven-3.0-core
2863 maven-3.0-plugin-api
2864 maven-shared-utils
2865 maven-parent-pom-33
2866 java-eclipse-sisu-plexus
2867 java-sonatype-aether-api
2868 java-sonatype-aether-util))
2869 (inputs
2870 (list maven-resolver-api maven-resolver-util))
2871 (native-inputs
2872 (list unzip))
2873 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2874 (synopsis "Tree-based API for resolution of Maven project dependencies")
2875 (description "This package provides a tree-based API for resolution of
2876 Maven project dependencies.")
2877 (license license:asl2.0)))
2878
2879 (define-public maven-common-artifact-filters-3.1.0
2880 (package
2881 (inherit maven-common-artifact-filters)
2882 (version "3.1.0")
2883 (source (origin
2884 (method url-fetch)
2885 (uri (string-append "mirror://apache/maven/shared/"
2886 "maven-common-artifact-filters-" version
2887 "-source-release.zip"))
2888 (sha256
2889 (base32
2890 "1cl1qk4r0gp62bjzfm7lml9raz1my2kd4yf0ci0lnfsn0h5qivnb"))))
2891 (arguments
2892 (substitute-keyword-arguments (package-arguments maven-common-artifact-filters)
2893 ((#:phases phases)
2894 `(modify-phases ,phases
2895 (delete 'fix-aether)
2896 (add-before 'build 'remove-sisu
2897 (lambda _
2898 (substitute* "pom.xml"
2899 (("sisu-inject-plexus") "maven-plugin-api")
2900 (("org.sonatype.sisu") "org.apache.maven"))))))))))
2901
2902 (define-public maven-enforcer-api
2903 (package
2904 (name "maven-enforcer-api")
2905 (version "3.0.0")
2906 (source (origin
2907 (method url-fetch)
2908 (uri (string-append "mirror://apache/maven/enforcer/"
2909 "enforcer-" version "-source-release.zip"))
2910 (sha256
2911 (base32
2912 "1479yp58jv788xc1jc2sbdxpajlbvwlk60639vd2h4s8r6x7naqh"))))
2913 (build-system ant-build-system)
2914 (arguments
2915 `(#:jar-name "maven-enforcer-api.jar"
2916 #:source-dir "enforcer-api/src/main/java"
2917 #:tests? #f; no tests
2918 #:phases
2919 (modify-phases %standard-phases
2920 (replace 'install
2921 (install-from-pom "enforcer-api/pom.xml")))))
2922 (propagated-inputs
2923 (list maven-plugin-api java-plexus-container-default java-jsr305
2924 maven-enforcer-parent-pom))
2925 (native-inputs
2926 (list unzip))
2927 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2928 (synopsis "Tree-based API for resolution of Maven project dependencies")
2929 (description "This package provides a tree-based API for resolution of
2930 Maven project dependencies.")
2931 (license license:asl2.0)))
2932
2933 (define maven-enforcer-parent-pom
2934 (package
2935 (inherit maven-enforcer-api)
2936 (name "maven-enforcer-parent-pom")
2937 (arguments
2938 `(#:tests? #f
2939 #:phases
2940 (modify-phases %standard-phases
2941 (delete 'configure)
2942 (delete 'build)
2943 (add-before 'install 'fix-pom-versions
2944 (lambda _
2945 (substitute* "pom.xml"
2946 (("<maven.version>.*</maven.version>")
2947 ,(string-append "<maven.version>" (package-version maven)
2948 "</maven.version>"))
2949 (("2.11.0") ,(package-version java-commons-io))
2950 (("3.12.0") ,(package-version java-commons-lang3))
2951 (("1.6.1") ,(package-version maven-resolver-util))
2952 (("1.15") ,(package-version java-commons-codec)))))
2953 (replace 'install
2954 (install-pom-file "pom.xml")))))
2955 (propagated-inputs
2956 `(("maven-parent-pom" ,maven-parent-pom-30)))))
2957
2958 (define-public maven-enforcer-rules
2959 (package
2960 (inherit maven-enforcer-api)
2961 (name "maven-enforcer-rules")
2962 (arguments
2963 `(#:tests? #f; requires maven-plugin-testing-harness
2964 #:jar-name "maven-enforcer-rules.jar"
2965 #:source-dir "enforcer-rules/src/main/java"
2966 #:test-dir "enforcer-rules/src/test"
2967 #:phases
2968 (modify-phases %standard-phases
2969 (replace 'install
2970 (install-from-pom "enforcer-rules/pom.xml")))))
2971 (propagated-inputs
2972 (list maven-artifact
2973 maven-plugin-api
2974 maven-core
2975 maven-common-artifact-filters
2976 java-commons-codec
2977 java-commons-lang3
2978 maven-enforcer-api
2979 maven-resolver-util
2980 java-bsh
2981 maven-dependency-tree
2982 maven-3.0-compat
2983 maven-enforcer-parent-pom))))
2984
2985 (define-public maven-enforcer-plugin
2986 (package
2987 (inherit maven-enforcer-api)
2988 (name "maven-enforcer-plugin")
2989 (arguments
2990 `(#:tests? #f
2991 #:jar-name "maven-enforcer-plugin.jar"
2992 #:source-dir "maven-enforcer-plugin/src/main/java"
2993 #:phases
2994 (modify-phases %standard-phases
2995 (add-before 'build 'generate-plugin.xml
2996 (generate-plugin.xml "maven-enforcer-plugin/pom.xml"
2997 "enforcer"
2998 "maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/"
2999 (list
3000 (list "DisplayInfoMojo.java")
3001 (list "EnforceMojo.java"))))
3002 (replace 'install
3003 (install-from-pom "maven-enforcer-plugin/pom.xml")))))
3004 (propagated-inputs
3005 (list maven-artifact
3006 maven-plugin-api
3007 maven-core
3008 java-plexus-utils
3009 maven-enforcer-api
3010 maven-enforcer-rules
3011 maven-plugin-annotations
3012 maven-enforcer-parent-pom))))
3013
3014 (define-public maven-artifact-transfer
3015 (package
3016 (name "maven-artifact-transfer")
3017 (version "0.13.1")
3018 (source (origin
3019 (method url-fetch)
3020 (uri (string-append "mirror://apache/maven/shared/"
3021 "maven-artifact-transfer-" version
3022 "-source-release.zip"))
3023 (sha256
3024 (base32
3025 "0xl7lkksljacrhmvwf924zb6h0h5zw9494jaz9cz4hll0lrhlpz6"))))
3026 (build-system ant-build-system)
3027 (arguments
3028 `(#:tests? #f; require mockito 2
3029 #:jar-name "maven-artifact-transfer.jar"
3030 #:source-dir "src/main/java"
3031 #:phases
3032 (modify-phases %standard-phases
3033 (add-after 'build 'generate-metadata
3034 (lambda _
3035 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3036 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3037 "--source" "src/main/java"
3038 "--output" "build/classes/META-INF/plexus/components.xml"
3039 "--classes" "build/classes"
3040 "--descriptors" "build/classes/META-INF")
3041 #t))
3042 (add-after 'generate-metadata 'rebuild
3043 (lambda _
3044 (invoke "ant" "jar")
3045 #t))
3046 (replace 'install
3047 (install-from-pom "pom.xml")))))
3048 (propagated-inputs
3049 (list java-commons-codec
3050 maven-3.0-artifact
3051 maven-3.0-core
3052 maven-common-artifact-filters-3.1.0
3053 java-plexus-component-annotations
3054 java-plexus-utils
3055 java-slf4j-api
3056 java-plexus-classworlds
3057 java-sonatype-aether-api
3058 java-eclipse-aether-api
3059 java-eclipse-aether-util
3060 java-eclipse-aether-impl))
3061 (native-inputs
3062 (list unzip java-plexus-component-metadata))
3063 (home-page "https://maven.apache.org/shared/maven-artifact-transfer")
3064 (synopsis "API to install, deploy and resolve artifacts in Maven")
3065 (description "This package contains an API to install, deploy and resolve
3066 artifacts in Maven 3.")
3067 (license license:asl2.0)))
3068
3069 (define-public maven-install-plugin
3070 (package
3071 (name "maven-install-plugin")
3072 (version "3.0.0-M1")
3073 (source (origin
3074 (method url-fetch)
3075 (uri (string-append "mirror://apache/maven/plugins/"
3076 "maven-install-plugin-" version
3077 "-source-release.zip"))
3078 (sha256
3079 (base32
3080 "1l9iydxririrair0i5sk2iypn9wspzbb666lc0ddg20yyr8w39dm"))))
3081 (build-system ant-build-system)
3082 (arguments
3083 `(#:tests? #f; require maven-plugin-testing-harness
3084 #:jar-name "maven-install-plugin.jar"
3085 #:source-dir "src/main/java"
3086 #:phases
3087 (modify-phases %standard-phases
3088 (add-before 'build 'fix-pom
3089 (lambda _
3090 (substitute* "pom.xml"
3091 (("maven-project") "maven-core")
3092 (("maven-artifact-manager") "maven-artifact")
3093 (("2.0.6") "3.0"))
3094 #t))
3095 (add-before 'build 'generate-plugin.xml
3096 (generate-plugin.xml "pom.xml"
3097 "install"
3098 "src/main/java/org/apache/maven/plugins/install"
3099 (list
3100 (list "AbstractInstallMojo.java" "InstallFileMojo.java")
3101 (list "AbstractInstallMojo.java" "InstallMojo.java"))))
3102 (replace 'install
3103 (install-from-pom "pom.xml")))))
3104 (propagated-inputs
3105 `(("maven-artifact" ,maven-artifact)
3106 ("maven-plugin-api" ,maven-plugin-api)
3107 ("maven-compat" ,maven-compat)
3108 ("maven-artifact-transfer" ,maven-artifact-transfer)
3109 ("maven-plugins-pom-23" ,maven-plugins-pom-23)
3110 ("java-plexus-digest" ,java-plexus-digest)))
3111 (inputs
3112 (list maven-plugin-annotations java-slf4j-api))
3113 (native-inputs
3114 (list unzip))
3115 (home-page "https://maven.apache.org/plugin/maven-install-plugin")
3116 (synopsis "Maven's install plugin")
3117 (description "The Install Plugin is used during the install phase to add
3118 artifact(s) to the local repository. The Install Plugin uses the information
3119 in the POM (groupId, artifactId, version) to determine the proper location for
3120 the artifact within the local repository.
3121
3122 The local repository is the local cache where all artifacts needed for the
3123 build are stored. By default, it is located within the user's home directory
3124 (@file{~/.m2/repository}) but the location can be configured in
3125 @file{~/.m2/settings.xml} using the @code{<localRepository>} element.")
3126 (license license:asl2.0)))
3127
3128 (define-public maven-filtering
3129 (package
3130 (name "maven-filtering")
3131 (version "3.1.1")
3132 (source (origin
3133 (method url-fetch)
3134 (uri (string-append "https://archive.apache.org/dist/maven/"
3135 "shared/maven-filtering-" version
3136 "-source-release.zip"))
3137 (sha256
3138 (base32
3139 "09wrdhchnszd2l6h4z30ra0bv1a19qyjgac9z8zf1pn0m4nw05yz"))))
3140 (build-system ant-build-system)
3141 (arguments
3142 `(#:jar-name "maven-filtering.jar"
3143 #:source-dir "src/main/java"
3144 #:test-dir "src/test"
3145 ;; this test comes from plexus-build-api, not this package
3146 #:test-exclude (list "**/IncrementalResourceFilteringTest.java"
3147 "**/Abstract*.java")
3148 #:phases
3149 (modify-phases %standard-phases
3150 (add-after 'build 'generate-metadata
3151 (lambda _
3152 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3153 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3154 "--source" "src/main/java"
3155 "--output" "build/classes/META-INF/plexus/components.xml"
3156 "--classes" "build/classes"
3157 "--descriptors" "build/classes/META-INF")
3158 #t))
3159 (add-after 'generate-metadata 'rebuild
3160 (lambda _
3161 (invoke "ant" "jar")
3162 #t))
3163 (add-before 'check 'decompress-tests
3164 (lambda* (#:key inputs #:allow-other-keys)
3165 (let* ((build-api-source (assoc-ref inputs "java-plexus-build-api-origin"))
3166 (classes (string-append build-api-source "/src/test/java")))
3167 (copy-recursively classes "src/test/"))
3168 #t))
3169 (add-before 'check 'fix-directory
3170 (lambda _
3171 (substitute* (find-files "src/test" ".*.java$")
3172 (("target/test-classes/") "build/test-classes/"))))
3173 (add-before 'check 'copy-test-resources
3174 (lambda _
3175 (copy-recursively "src/test/resources" "build/test-classes/")
3176 #t))
3177 (replace 'install
3178 (install-from-pom "pom.xml")))))
3179 (propagated-inputs
3180 (list maven-3.0-core
3181 maven-shared-utils
3182 java-plexus-utils-3.2.1
3183 java-plexus-interpolation
3184 java-plexus-build-api
3185 maven-parent-pom-30))
3186 (inputs
3187 (list java-jsr305))
3188 (native-inputs
3189 `(("unzip" ,unzip)
3190 ("java-assertj" ,java-assertj)
3191 ("java-junit" ,java-junit)
3192 ("java-mockito" ,java-mockito-1)
3193 ("java-objenesis" ,java-objenesis)
3194 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
3195 ("java-plexus-build-api-origin" ,(package-source java-plexus-build-api))))
3196 (home-page "https://maven.apache.org/shared/maven-filtering")
3197 (synopsis "Shared component for all plugins that needs to filter resources")
3198 (description "This component provides an API to filter resources in Maven
3199 projects.")
3200 (license license:asl2.0)))
3201
3202 (define-public maven-resources-plugin
3203 (package
3204 (name "maven-resources-plugin")
3205 (version "3.1.0")
3206 (source (origin
3207 (method git-fetch)
3208 (uri (git-reference
3209 (url "https://github.com/apache/maven-resources-plugin")
3210 (commit (string-append "maven-resources-plugin-" version))))
3211 (file-name (git-file-name name version))
3212 (sha256
3213 (base32
3214 "090k5j2y7ak54czfjjg3v7pdmdlgd96fbs91d1fd3vslm9zzndg8"))))
3215 (build-system ant-build-system)
3216 (arguments
3217 `(#:jar-name "maven-resources-plugin.jar"
3218 #:source-dir "src/main/java"
3219 #:test-dir "src/test"
3220 #:tests? #f; test depends on maven-plugin-test-harness
3221 #:phases
3222 (modify-phases %standard-phases
3223 (add-before 'build 'generate-plugin.xml
3224 (generate-plugin.xml "pom.xml" "resources"
3225 "src/main/java/org/apache/maven/plugins/resources"
3226 (list
3227 (list "ResourcesMojo.java" "CopyResourcesMojo.java")
3228 (list "ResourcesMojo.java")
3229 (list "ResourcesMojo.java" "TestResourcesMojo.java"))))
3230 (replace 'install
3231 (install-from-pom "pom.xml")))))
3232 (propagated-inputs
3233 (list maven-plugin-api
3234 maven-core
3235 java-plexus-utils
3236 maven-filtering
3237 java-plexus-interpolation
3238 maven-parent-pom-31))
3239 (inputs
3240 (list maven-plugin-annotations java-commons-io))
3241 (native-inputs
3242 (list java-plexus-component-metadata))
3243 (home-page "https://maven.apache.org/plugins/maven-resources-plugin")
3244 (synopsis "Maven plugin to collect and install resources")
3245 (description "The Resources Plugin handles the copying of project resources
3246 to the output directory. There are two different kinds of resources: main
3247 resources and test resources. The difference is that the main resources are
3248 the resources associated to the main source code while the test resources are
3249 associated to the test source code.
3250
3251 Thus, this allows the separation of resources for the main source code and its
3252 unit tests.")
3253 (license license:asl2.0)))
3254
3255 (define-public maven-shared-incremental
3256 (package
3257 (name "maven-shared-incremental")
3258 (version "1.1")
3259 (source (origin
3260 (method url-fetch)
3261 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
3262 "maven-shared-incremental-" version
3263 "-source-release.zip"))
3264 (sha256
3265 (base32
3266 "03n4nfswyg9ahkz2zx4skcr3ghs01zh95g9js51hc75mfqx9b976"))))
3267 (build-system ant-build-system)
3268 (arguments
3269 `(#:jar-name "shared-incremental.java"
3270 #:source-dir "src/main/java"
3271 #:test-dir "src/test"
3272 #:phases
3273 (modify-phases %standard-phases
3274 (add-before 'build 'change-parent
3275 (lambda _
3276 (substitute* "pom.xml"
3277 (("19") "30"))
3278 #t))
3279 (add-before 'build 'fix-pom
3280 (lambda _
3281 (substitute* "pom.xml"
3282 (("plexus-component-api") "plexus-component-annotations"))
3283 #t))
3284 (add-after 'build 'generate-metadata
3285 (lambda _
3286 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3287 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3288 "--source" "src/main/java"
3289 "--output" "build/classes/META-INF/plexus/components.xml"
3290 "--classes" "build/classes"
3291 "--descriptors" "build/classes/META-INF")
3292 #t))
3293 (replace 'install
3294 (install-from-pom "pom.xml")))))
3295 (propagated-inputs
3296 (list maven-plugin-api maven-core maven-shared-utils
3297 java-plexus-component-annotations maven-parent-pom-30))
3298 (native-inputs
3299 (list unzip java-plexus-component-metadata))
3300 (home-page "https://maven.apache.org/shared/maven-shared-incremental")
3301 (synopsis "Maven Incremental Build support utilities")
3302 (description "This package contains various utility classes and plexus
3303 components for supporting incremental build functionality in maven plugins.")
3304 (license license:asl2.0)))
3305
3306 (define-public maven-compiler-plugin
3307 (package
3308 (name "maven-compiler-plugin")
3309 (version "3.8.1")
3310 (source (origin
3311 (method git-fetch)
3312 (uri (git-reference
3313 (url "https://github.com/apache/maven-compiler-plugin")
3314 (commit (string-append "maven-compiler-plugin-" version))))
3315 (file-name (git-file-name name version))
3316 (sha256
3317 (base32
3318 "0jkbq02vykd09ws8k9bzqxv6fjrpmir8gcxydbmj05kkhl242bma"))))
3319 (build-system ant-build-system)
3320 (arguments
3321 `(#:jar-name "maven-compiler-plugin.jar"
3322 #:source-dir "src/main/java"
3323 #:test-dir "src/test"
3324 #:tests? #f; test depends on maven-plugin-test-harness
3325 #:phases
3326 (modify-phases %standard-phases
3327 (add-before 'build 'generate-plugin.xml
3328 (generate-plugin.xml "pom.xml"
3329 "compiler"
3330 "src/main/java/org/apache/maven/plugin/compiler"
3331 (list
3332 (list "AbstractCompilerMojo.java" "CompilerMojo.java")
3333 (list "AbstractCompilerMojo.java" "TestCompilerMojo.java"))))
3334 (add-after 'generate-plugin.xml 'fix-plugin.xml
3335 (lambda _
3336 (substitute* "build/classes/META-INF/maven/plugin.xml"
3337 ;; These are defined in AbstractCompilerMojo.java, but not
3338 ;; parsed correctly in the previous phase
3339 (("DEFAULT_TARGET") "1.6")
3340 (("DEFAULT_SOURCE") "1.6"))
3341 #t))
3342 (replace 'install
3343 (install-from-pom "pom.xml")))))
3344 (propagated-inputs
3345 (list maven-plugin-api
3346 maven-artifact
3347 maven-core
3348 maven-shared-utils
3349 maven-shared-incremental
3350 java-plexus-java
3351 java-plexus-compiler-api
3352 java-plexus-compiler-manager
3353 java-plexus-compiler-javac
3354 maven-parent-pom-33))
3355 (inputs
3356 (list maven-plugin-annotations java-commons-io))
3357 (home-page "https://maven.apache.org/plugins/maven-compiler-plugin")
3358 (synopsis "Compiler plugin for Maven")
3359 (description "The Compiler Plugin is used to compile the sources of your
3360 project. Since 3.0, the default compiler is @code{javax.tools.JavaCompiler}
3361 (if you are using java 1.6) and is used to compile Java sources. If you want
3362 to force the plugin using javac, you must configure the plugin option
3363 @code{forceJavacCompilerUse}.
3364
3365 Also note that at present the default source setting is 1.6 and the default
3366 target setting is 1.6, independently of the JDK you run Maven with. You are
3367 highly encouraged to change these defaults by setting source and target as
3368 described in Setting the -source and -target of the Java Compiler.
3369
3370 Other compilers than javac can be used and work has already started on
3371 AspectJ, .NET, and C#.")
3372 (license license:asl2.0)))
3373
3374 (define-public java-surefire-logger-api
3375 (package
3376 (name "java-surefire-logger-api")
3377 (version "3.0.0-M4")
3378 (source (origin
3379 (method url-fetch)
3380 (uri (string-append "mirror://apache/maven/surefire/"
3381 "surefire-" version "-source-release.zip"))
3382 (sha256
3383 (base32
3384 "1s6d4pzk3bjm9l38mj9sfgbgmk145rppdj1dmqwc4d5105mr9q9w"))))
3385 (build-system ant-build-system)
3386 (arguments
3387 `(#:jar-name "java-surefire-logger-api.jar"
3388 #:source-dir "surefire-logger-api/src/main/java"
3389 #:tests? #f; require mockito 2
3390 #:phases
3391 (modify-phases %standard-phases
3392 (replace 'install
3393 (install-from-pom "surefire-logger-api/pom.xml")))))
3394 (propagated-inputs
3395 (list java-surefire-parent-pom))
3396 (native-inputs
3397 (list unzip))
3398 (home-page "https://maven.apache.org/surefire/surefire-logger-api")
3399 (synopsis "Interfaces and Utilities related only to internal SureFire Logger API")
3400 (description "This package contains interfaces and utilities that are
3401 internal to the SureFire Logger API. It is designed to have no dependency.")
3402 (license license:asl2.0)))
3403
3404 (define-public java-surefire-parent-pom
3405 (package
3406 (inherit java-surefire-logger-api)
3407 (name "java-surefire-parent-pom")
3408 (arguments
3409 `(#:tests? #f
3410 #:phases
3411 (modify-phases %standard-phases
3412 (delete 'configure)
3413 (delete 'build)
3414 (add-before 'install 'fix-pom-dependency-versions
3415 (lambda _
3416 (substitute* "pom.xml"
3417 (("1.11") ,(package-version java-commons-compress))
3418 (("1.13") ,(package-version java-commons-codec)))
3419 (substitute* "pom.xml"
3420 (("commonsLang3Version>.*")
3421 (string-append
3422 "commonsLang3Version>"
3423 ,(package-version java-commons-lang3)
3424 "</commonsLang3Version>\n"))
3425 (("commonsCompress>.*")
3426 (string-append
3427 "commonsCompress>"
3428 ,(package-version java-commons-compress)
3429 "</commonsCompress>\n"))
3430 (("commonsIoVersion>.*")
3431 (string-append
3432 "commonsIoVersion>"
3433 ,(package-version java-commons-io)
3434 "</commonsIoVersion>\n"))
3435 (("0.11.0") ,(package-version maven-artifact-transfer))
3436 (("1.0.3") ,(package-version java-plexus-java)))
3437 #t))
3438 (add-after 'install 'install-providers
3439 (install-pom-file "surefire-providers/pom.xml"))
3440 (replace 'install
3441 (install-pom-file "pom.xml")))))
3442 (propagated-inputs
3443 (list maven-parent-pom-33))))
3444
3445 (define-public java-surefire-api
3446 (package
3447 (inherit java-surefire-logger-api)
3448 (name "java-surefire-api")
3449 (arguments
3450 `(#:tests? #f
3451 #:jar-name "java-surefire-api.jar"
3452 #:source-dir "surefire-api/src/main/java"
3453 #:phases
3454 (modify-phases %standard-phases
3455 (add-before 'build 'copy-resources
3456 (lambda _
3457 (mkdir-p "build/classes")
3458 (copy-recursively "surefire-api/src/main/resources" "build/classes")
3459 #t))
3460 (add-before 'build 'prepare-shade
3461 (lambda* (#:key inputs #:allow-other-keys)
3462 (mkdir-p "build/classes")
3463 (with-directory-excursion "build/classes"
3464 (for-each
3465 (lambda (input)
3466 (for-each
3467 (lambda (jar-file)
3468 (invoke "jar" "xf" jar-file)
3469 (delete-file-recursively "META-INF"))
3470 (find-files (assoc-ref inputs input) ".*.jar$")))
3471 '("maven-shared-utils" "java-commons-codec")))
3472 #t))
3473 (add-after 'build 'shade
3474 (lambda* (#:key inputs #:allow-other-keys)
3475 (let ((jarjar
3476 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3477 (injar "java-surefire-api.jar")
3478 (outjar "java-surefire-api-shaded.jar"))
3479 (with-directory-excursion "build/jar"
3480 (with-output-to-file "rules"
3481 (lambda _
3482 (format #t (string-append
3483 "rule "
3484 "org.apache.maven.shared.utils.** "
3485 "org.apache.maven.surefire.shade.api."
3486 "org.apache.maven.shared.utils.@1~%"))
3487 (format #t (string-append
3488 "rule "
3489 "org.apache.commons.codec.** "
3490 "org.apache.maven.surefire.shade.api."
3491 "org.apache.commons.codec.@1~%"))))
3492 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3493 (delete-file injar)
3494 (rename-file outjar injar)))
3495 #t))
3496 (replace 'install
3497 (install-from-pom "surefire-api/pom.xml")))))
3498 (propagated-inputs
3499 (list java-surefire-logger-api java-commons-codec
3500 java-surefire-parent-pom maven-shared-utils-3.1))
3501 (inputs
3502 (list java-jsr305))
3503 (native-inputs
3504 (list unzip java-jarjar))
3505 (synopsis "Maven SureFire API")
3506 (description "This package contains the API to use Maven SureFire.")))
3507
3508 (define-public java-surefire-booter
3509 (package
3510 (inherit java-surefire-logger-api)
3511 (name "java-surefire-booter")
3512 (arguments
3513 `(#:tests? #f; require mockito 2
3514 #:jar-name "java-surefire-booter.jar"
3515 #:source-dir "surefire-booter/src/main/java"
3516 #:phases
3517 (modify-phases %standard-phases
3518 (add-before 'build 'fix-/bin/sh
3519 (lambda _
3520 (substitute* "surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java"
3521 (("/bin/sh") (which "sh")))
3522 #t))
3523 (replace 'install
3524 (install-from-pom "surefire-booter/pom.xml")))))
3525 (propagated-inputs
3526 (list java-surefire-api java-commons-lang3 java-commons-io
3527 java-surefire-parent-pom))
3528 (inputs
3529 (list java-jsr305))
3530 (synopsis "API and Facilities used by forked tests running in JVM sub-process")
3531 (description "SureFire runs tests inside a forked JVM subprocess. This
3532 package contains an API and facilities used inside that forked JVM.")))
3533
3534 (define-public java-surefire-extensions-api
3535 (package
3536 (inherit java-surefire-logger-api)
3537 (name "java-surefire-extensions-api")
3538 (arguments
3539 `(#:tests? #f; requires mockito 2
3540 #:jar-name "java-surefire-extensions-api.jar"
3541 #:source-dir "surefire-extensions-api/src/main/java"
3542 #:phases
3543 (modify-phases %standard-phases
3544 (replace 'install
3545 (install-from-pom "surefire-extensions-api/pom.xml")))))
3546 (propagated-inputs
3547 (list java-surefire-api java-surefire-parent-pom))
3548 (inputs
3549 (list java-plexus-component-annotations))
3550 (synopsis "Extension API for Maven SureFire")
3551 (description "Surefire is a test framework project. This is the aggregator
3552 POM in Apache Maven Surefire project.")))
3553
3554 (define-public java-surefire-common-java5
3555 (package
3556 (inherit java-surefire-logger-api)
3557 (name "java-surefire-common-java5")
3558 (arguments
3559 `(#:jar-name "java-surefire-common-java5.jar"
3560 #:source-dir "surefire-providers/common-java5/src/main/java"
3561 #:test-dir "surefire-providers/common-java5/src/test"
3562 #:test-exclude (list
3563 ;; Abstract class
3564 "**/PojoStackTraceWriterTest.java"
3565 ;; Fails
3566 "**/SmartStackTraceParserTest.java")
3567 #:phases
3568 (modify-phases %standard-phases
3569 (add-before 'build 'prepare-shade
3570 (lambda* (#:key inputs #:allow-other-keys)
3571 (mkdir-p "build/classes")
3572 (with-directory-excursion "build/classes"
3573 (for-each
3574 (lambda (jar-file)
3575 (invoke "jar" "xf" jar-file)
3576 (delete-file-recursively "META-INF"))
3577 (find-files (assoc-ref inputs "maven-shared-utils") ".*.jar$")))
3578 #t))
3579 (add-after 'build 'shade
3580 (lambda* (#:key inputs #:allow-other-keys)
3581 (let ((jarjar
3582 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3583 (injar "java-surefire-common-java5.jar")
3584 (outjar "java-surefire-common-java5-shaded.jar"))
3585 (with-directory-excursion "build/jar"
3586 (with-output-to-file "rules"
3587 (lambda _
3588 (format #t (string-append
3589 "rule "
3590 "org.apache.maven.shared.utils.** "
3591 "org.apache.maven.surefire.shade.common."
3592 "org.apache.maven.shared.utils.@1~%"))))
3593 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3594 (delete-file injar)
3595 (rename-file outjar injar)))
3596 #t))
3597 (replace 'install
3598 (install-from-pom "surefire-providers/common-java5/pom.xml")))))
3599 (propagated-inputs
3600 (list maven-shared-utils-3.1 java-surefire-api
3601 java-surefire-parent-pom))
3602 (native-inputs
3603 (list unzip java-jarjar java-junit java-fest-assert))
3604 (synopsis "Common java5 facilities for Maven SureFire")
3605 (description "This package contains shared Java 5 code for all providers.")))
3606
3607 (define-public java-surefire-common-junit3
3608 (package
3609 (inherit java-surefire-logger-api)
3610 (name "java-surefire-common-junit3")
3611 (arguments
3612 `(#:jar-name "java-surefire-common-junit3.jar"
3613 #:source-dir "surefire-providers/common-junit3/src/main/java"
3614 #:test-dir "surefire-providers/common-junit3/src/test"
3615 #:phases
3616 (modify-phases %standard-phases
3617 (replace 'install
3618 (install-from-pom "surefire-providers/common-junit3/pom.xml")))))
3619 (propagated-inputs
3620 (list java-junit java-surefire-api java-surefire-parent-pom))
3621 (native-inputs
3622 (list unzip java-junit java-fest-assert))
3623 (synopsis "Shared JUnit3 provider code for Maven SureFire")
3624 (description "This package contains shared code for all JUnit providers.")))
3625
3626 (define-public java-surefire-common-junit4
3627 (package
3628 (inherit java-surefire-logger-api)
3629 (name "java-surefire-common-junit4")
3630 (arguments
3631 `(#:jar-name "java-surefire-common-junit4.jar"
3632 #:source-dir "surefire-providers/common-junit4/src/main/java"
3633 #:tests? #f; tests require junit 4.0
3634 #:phases
3635 (modify-phases %standard-phases
3636 (replace 'install
3637 (install-from-pom "surefire-providers/common-junit4/pom.xml")))))
3638 (propagated-inputs
3639 (list java-junit
3640 java-surefire-api
3641 java-surefire-common-java5
3642 java-surefire-common-junit3
3643 maven-shared-utils-3.1
3644 java-surefire-parent-pom))
3645 (synopsis "Shared JUnit4 provider code for Maven SureFire")
3646 (description "This package contains shared code for all JUnit providers,
3647 starting from JUnit 4.")))
3648
3649 (define-public java-surefire-junit4
3650 (package
3651 (inherit java-surefire-logger-api)
3652 (name "java-surefire-junit4")
3653 (arguments
3654 `(;#:tests? #f
3655 #:jar-name "java-surefire-junit4.jar"
3656 #:source-dir "surefire-providers/surefire-junit4/src/main/java"
3657 #:test-dir "surefire-providers/surefire-junit4/src/test"
3658 #:modules ((guix build ant-build-system)
3659 (guix build utils)
3660 (guix build java-utils)
3661 (sxml simple))
3662 #:phases
3663 (modify-phases %standard-phases
3664 (add-before 'install 'regenerate-own-pom
3665 ;; Surefire struggles resolving artifacts because of this pom
3666 ;; file, resulting in a NullPointerException when collecting
3667 ;; Artifacts (and a "Failure detected." message from
3668 ;; DefaultArtifactResolver). Replace the pom file with a much
3669 ;; simpler one. Everything is shaded anyway (as used to be the
3670 ;; case in 2.22), so there will not be missing dependencies.
3671 (generate-pom.xml
3672 "surefire-providers/surefire-junit4/pom.xml"
3673 "org.apache.maven.surefire" "surefire-junit4"
3674 ,(package-version java-surefire-common-java5)
3675 #:name "Surefire JUnit4"))
3676 (add-before 'build 'copy-resources
3677 (lambda _
3678 (mkdir-p "build/classes")
3679 (copy-recursively "surefire-providers/surefire-junit4/src/main/resources"
3680 "build/classes")
3681 #t))
3682 (add-before 'build 'prepare-shade
3683 (lambda* (#:key inputs #:allow-other-keys)
3684 (mkdir-p "build/classes")
3685 (with-directory-excursion "build/classes"
3686 (for-each
3687 (lambda (input)
3688 (for-each
3689 (lambda (jar-file)
3690 (invoke "jar" "xf" jar-file)
3691 (delete-file-recursively "META-INF"))
3692 (find-files (assoc-ref inputs input) ".*.jar$")))
3693 '("maven-shared-utils" "java-surefire-common-java5"
3694 "java-surefire-common-junit3" "java-surefire-common-junit4"
3695 "java-surefire-api")))
3696 #t))
3697 (add-after 'build 'shade
3698 (lambda* (#:key inputs #:allow-other-keys)
3699 (let ((jarjar
3700 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3701 (injar "java-surefire-junit4.jar")
3702 (outjar "java-surefire-junit4-shaded.jar"))
3703 (with-directory-excursion "build/jar"
3704 (with-output-to-file "rules"
3705 (lambda _
3706 (format #t (string-append
3707 "rule "
3708 "org.apache.maven.shared.utils.** "
3709 "org.apache.maven.surefire.shade."
3710 "org.apache.maven.shared.utils.@1~%"))))
3711 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3712 (delete-file injar)
3713 (rename-file outjar injar)))
3714 #t))
3715 (replace 'install
3716 (install-from-pom "surefire-providers/surefire-junit4/pom.xml")))))
3717 (propagated-inputs
3718 (list java-junit java-surefire-parent-pom))
3719 (inputs
3720 (list java-surefire-common-junit4 java-surefire-common-junit3
3721 java-surefire-common-java5 java-surefire-api))
3722 (native-inputs
3723 (list java-jarjar unzip java-junit java-hamcrest-all
3724 java-fest-assert))
3725 (synopsis "SureFire JUnit 4.0+ runner")
3726 (description "This package contains the runner for tests run on a forked
3727 JVM, using JUnit 4.0 or later.")))
3728
3729 (define-public maven-surefire-common
3730 (package
3731 (inherit java-surefire-logger-api)
3732 (name "maven-surefire-common")
3733 (arguments
3734 `(#:tests? #f; require mockito 2
3735 #:jar-name "maven-surefire-common.jar"
3736 #:source-dir "maven-surefire-common/src/main/java"
3737 #:phases
3738 (modify-phases %standard-phases
3739 (add-before 'build 'prepare-shade
3740 (lambda* (#:key inputs #:allow-other-keys)
3741 (mkdir-p "build/classes")
3742 (with-directory-excursion "build/classes"
3743 (for-each
3744 (lambda (input)
3745 (for-each
3746 (lambda (jar-file)
3747 (invoke "jar" "xf" jar-file)
3748 (delete-file-recursively "META-INF"))
3749 (find-files (assoc-ref inputs input) ".*.jar$")))
3750 '("maven-shared-utils" "java-commons-io" "java-commons-lang3"
3751 "java-commons-compress" "maven-common-artifact-filters")))
3752 #t))
3753 (add-after 'build 'shade
3754 (lambda* (#:key inputs #:allow-other-keys)
3755 (let ((jarjar
3756 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3757 (injar "maven-surefire-common.jar")
3758 (outjar "maven-surefire-common-shaded.jar"))
3759 (with-directory-excursion "build/jar"
3760 (with-output-to-file "rules"
3761 (lambda _
3762 (format #t (string-append
3763 "rule "
3764 "org.apache.maven.shared.utils.** "
3765 "org.apache.maven.surefire.shade.common."
3766 "org.apache.maven.shared.utils.@1~%"))
3767 (format #t (string-append
3768 "rule "
3769 "org.apache.commons.io.** "
3770 "org.apache.maven.surefire.shade.common."
3771 "org.apache.commons.io.@1~%"))
3772 (format #t (string-append
3773 "rule "
3774 "org.apache.commons.lang3.** "
3775 "org.apache.maven.surefire.shade.common."
3776 "org.apache.commons.lang3.@1~%"))
3777 (format #t (string-append
3778 "rule "
3779 "org.apache.commons.compress.** "
3780 "org.apache.maven.surefire.shade.common."
3781 "org.apache.commons.compress.@1~%"))))
3782 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3783 (delete-file injar)
3784 (rename-file outjar injar)))
3785 #t))
3786 (add-before 'install 'fix-pom
3787 (lambda _
3788 (substitute* "maven-surefire-common/pom.xml"
3789 (("maven-toolchain") "maven-core"))
3790 #t))
3791 (replace 'install
3792 (install-from-pom "maven-surefire-common/pom.xml")))))
3793 (propagated-inputs
3794 (list java-surefire-api
3795 java-surefire-extensions-api
3796 java-surefire-booter
3797 maven-core
3798 maven-plugin-annotations
3799 maven-common-artifact-filters
3800 maven-artifact-transfer
3801 java-plexus-java
3802 java-jansi
3803 java-commons-io
3804 java-commons-lang3
3805 java-commons-compress
3806 maven-shared-utils-3.1
3807 java-surefire-parent-pom))
3808 (inputs
3809 (list java-jsr305))
3810 (native-inputs
3811 (list unzip java-jarjar))
3812 (synopsis "API used in Surefire and Failsafe MOJO")
3813 (description "This package contains an API used in SureFire and Failsafe
3814 MOJO.")))
3815
3816 (define-public maven-surefire-plugin
3817 (package
3818 (inherit java-surefire-logger-api)
3819 (name "maven-surefire-plugin")
3820 (arguments
3821 `(#:jar-name "maven-surefire-plugin.jar"
3822 #:source-dir "maven-surefire-plugin/src/main/java"
3823 #:tests? #f; test depends on maven-plugin-test-harness
3824 #:phases
3825 (modify-phases %standard-phases
3826 (add-before 'build 'generate-plugin.xml
3827 (generate-plugin.xml "maven-surefire-plugin/pom.xml"
3828 "surefire"
3829 "."
3830 (list
3831 (list
3832 "maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java"
3833 "maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java"))))
3834 (replace 'install
3835 (install-from-pom "maven-surefire-plugin/pom.xml")))))
3836 (propagated-inputs
3837 (list maven-surefire-common maven-core))
3838 (native-inputs
3839 (list maven-plugin-annotations unzip))
3840 (synopsis "SureFire Maven plugin that runs tests")
3841 (description "The Surefire Plugin is used during the test phase of the
3842 build lifecycle to execute the unit tests of an application. It generates
3843 reports in two different file formats, plain text and xml.")))
3844
3845 (define-public maven-jar-plugin
3846 (package
3847 (name "maven-jar-plugin")
3848 (version "3.2.0")
3849 (source (origin
3850 (method git-fetch)
3851 (uri (git-reference
3852 (url "https://github.com/apache/maven-jar-plugin")
3853 (commit (string-append "maven-jar-plugin-" version))))
3854 (file-name (git-file-name name version))
3855 (sha256
3856 (base32
3857 "04y2rlmcabmc55ljqlkgbb5xx94a59cz1dvrnpfj1vzz024pqkyg"))))
3858 (build-system ant-build-system)
3859 (arguments
3860 `(#:jar-name "maven-jar-plugin.jar"
3861 #:source-dir "src/main/java"
3862 #:tests? #f; test depends on maven-plugin-test-harness
3863 #:phases
3864 (modify-phases %standard-phases
3865 (add-before 'build 'generate-plugin.xml
3866 (generate-plugin.xml "pom.xml"
3867 "jar"
3868 "src/main/java/org/apache/maven/plugins/jar"
3869 (list
3870 (list "AbstractJarMojo.java" "JarMojo.java")
3871 (list "AbstractJarMojo.java" "TestJarMojo.java"))))
3872 (replace 'install
3873 (install-from-pom "pom.xml")))))
3874 (propagated-inputs
3875 (list maven-archiver
3876 maven-3.0-artifact
3877 maven-3.0-core
3878 maven-3.0-plugin-api
3879 maven-file-management
3880 maven-shared-utils
3881 java-plexus-archiver
3882 java-plexus-utils))
3883 (inputs
3884 (list maven-plugin-annotations))
3885 (home-page "https://maven.apache.org/plugins/maven-jar-plugin")
3886 (synopsis "Jar builder plugin for Maven")
3887 (description "This plugin provides the capability to build jars. If you
3888 would like to sign jars please use the Maven Jarsigner Plugin instead.")
3889 (license license:asl2.0)))