gnu: maven-compat: Install resources.
[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-core" ,maven-core)
1092 ("maven-model" ,maven-model)
1093 ("java-commons-cli" ,java-commons-cli)
1094 ("java-qdox" ,java-qdox)
1095 ("java-jdom2" ,java-jdom2)
1096 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1097 ("java-javaee-servletapi" ,java-javaee-servletapi)
1098 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
1099 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
1100 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
1101 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
1102 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
1103 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
1104 ("java-hamcrest-core" ,java-hamcrest-core)
1105 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1106 ("java-commons-codec" ,java-commons-codec)
1107 ("java-commons-io" ,java-commons-io)
1108 ("java-jsoup" ,java-jsoup)
1109 ("java-slf4j-simple" ,java-slf4j-simple)
1110 ,@(package-native-inputs maven-wagon-provider-api)))
1111 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
1112 (description "Maven Wagon is a transport abstraction that is used in Maven's
1113 artifact and repository handling code. It uses providers, that are tools to
1114 manage artifacts and deployment. This package contains a Wagon provider that
1115 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
1116
1117 (define maven-pom
1118 (package
1119 (name "maven-pom")
1120 (version "3.8.4")
1121 (source (origin
1122 (method url-fetch)
1123 (uri (string-append "mirror://apache/maven/"
1124 "maven-3/" version "/source/"
1125 "apache-maven-" version "-src.tar.gz"))
1126 (sha256 (base32 "16xbhkhhp05gskgbhrf1ia8riivvkhpk822n9xgnad61f9hzp2r9"))
1127 (modules '((guix build utils)))
1128 (snippet
1129 '(begin
1130 (for-each delete-file (find-files "." "\\.jar$"))
1131 #t))
1132 (patches
1133 (search-patches "maven-generate-component-xml.patch"
1134 "maven-generate-javax-inject-named.patch"))))
1135 (build-system ant-build-system)
1136 (arguments
1137 `(#:tests? #f
1138 #:phases
1139 (modify-phases %standard-phases
1140 (delete 'configure)
1141 (delete 'build)
1142 (add-before 'install 'fix-dependencies
1143 (lambda _
1144 (substitute* "pom.xml"
1145 (("classWorldsVersion>.*")
1146 (string-append
1147 "classWorldsVersion>"
1148 ,(package-version java-plexus-classworlds)
1149 "</classWorldsVersion>\n"))
1150 (("commonsCliVersion>.*")
1151 (string-append
1152 "commonsCliVersion>"
1153 ,(package-version java-commons-cli)
1154 "</commonsCliVersion>\n"))
1155 (("commonsLangVersion>.*")
1156 (string-append
1157 "commonsLangVersion>"
1158 ,(package-version java-commons-lang3)
1159 "</commonsLangVersion>\n"))
1160 (("plexusUtilsVersion>.*")
1161 (string-append
1162 "plexusUtilsVersion>"
1163 ,(package-version java-plexus-utils)
1164 "</plexusUtilsVersion>\n"))
1165 (("plexusInterpolationVersion>.*")
1166 (string-append
1167 "plexusInterpolationVersion>"
1168 ,(package-version java-plexus-interpolation)
1169 "</plexusInterpolationVersion>\n"))
1170 (("guiceVersion>.*")
1171 (string-append
1172 "guiceVersion>"
1173 ,(package-version java-guice)
1174 "</guiceVersion>\n"))
1175 (("sisuInjectVersion>.*")
1176 (string-append
1177 "sisuInjectVersion>"
1178 ,(package-version java-eclipse-sisu-inject)
1179 "</sisuInjectVersion>\n"))
1180 (("securityDispatcherVersion>.*")
1181 (string-append
1182 "securityDispatcherVersion>"
1183 ,(package-version java-plexus-sec-dispatcher)
1184 "</securityDispatcherVersion>\n"))
1185 (("cipherVersion>.*")
1186 (string-append
1187 "cipherVersion>"
1188 ,(package-version java-plexus-cipher)
1189 "</cipherVersion>\n"))
1190 (("slf4jVersion>.*")
1191 (string-append
1192 "slf4jVersion>"
1193 ,(package-version java-slf4j-api)
1194 "</slf4jVersion>\n"))
1195 (("<classifier>no_aop</classifier>") ""))
1196 #t))
1197 (replace 'install
1198 (install-pom-file "pom.xml")))))
1199 (propagated-inputs
1200 `(("maven-parent-pom-34" ,maven-parent-pom-34)))
1201 (home-page "https://maven.apache.org/")
1202 (synopsis "Build system")
1203 (description "Apache Maven is a software project management and comprehension
1204 tool. This package contains the Maven pom file, used by all maven components.")
1205 (license license:asl2.0)))
1206
1207 (define-public maven-artifact
1208 (package
1209 (inherit maven-pom)
1210 (name "maven-artifact")
1211 (arguments
1212 `(#:jar-name "maven-artifact.jar"
1213 #:source-dir "maven-artifact/src/main/java"
1214 #:test-dir "maven-artifact/src/test"
1215 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1216 #:phases
1217 (modify-phases %standard-phases
1218 (replace 'install
1219 (install-from-pom "maven-artifact/pom.xml")))))
1220 (propagated-inputs
1221 (list java-plexus-utils java-commons-lang3 maven-pom))
1222 (native-inputs
1223 (list java-junit))
1224 (description "Apache Maven is a software project management and comprehension
1225 tool. This package contains the Maven Artifact classes, providing the
1226 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1227 jar file is executable and provides a little tool to display how Maven parses
1228 and compares versions:")))
1229
1230 (define-public maven-model
1231 (package
1232 (inherit maven-artifact)
1233 (name "maven-model")
1234 (arguments
1235 `(#:jar-name "maven-model.jar"
1236 #:source-dir "maven-model/src/main/java"
1237 #:test-dir "maven-model/src/test"
1238 #:phases
1239 (modify-phases %standard-phases
1240 (add-before 'build 'generate-models
1241 (lambda* (#:key inputs #:allow-other-keys)
1242 (define (modello-single-mode file version mode)
1243 (invoke "java" "org.codehaus.modello.ModelloCli"
1244 file mode "maven-model/src/main/java" version
1245 "false" "true"))
1246 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1247 (modello-single-mode file "4.0.0" "java")
1248 (modello-single-mode file "4.0.0" "xpp3-reader")
1249 (modello-single-mode file "4.0.0" "xpp3-extended-reader")
1250 (modello-single-mode file "4.0.0" "xpp3-writer")
1251 (modello-single-mode file "4.0.0" "xpp3-extended-writer"))
1252 #t))
1253 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1254 (propagated-inputs
1255 (list java-commons-lang3 java-plexus-utils maven-pom))
1256 (native-inputs
1257 (list java-modello-core
1258 ;; for modello:
1259 java-eclipse-sisu-plexus
1260 java-plexus-component-annotations
1261 java-guice
1262 java-cglib
1263 java-asm
1264 java-eclipse-sisu-inject
1265 java-javax-inject
1266 java-plexus-classworlds
1267 java-guava
1268 java-geronimo-xbean-reflect
1269 java-plexus-build-api
1270 ;; modello plugins:
1271 java-modello-plugins-java
1272 java-modello-plugins-xml
1273 java-modello-plugins-xpp3
1274 ;; for tests
1275 java-junit))
1276 (description "Apache Maven is a software project management and comprehension
1277 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1278 so really just plain Java objects.")))
1279
1280 (define-public maven-builder-support
1281 (package
1282 (inherit maven-artifact)
1283 (name "maven-builder-support")
1284 (arguments
1285 `(#:jar-name "maven-builder-support.jar"
1286 #:source-dir "maven-builder-support/src/main/java"
1287 #:jdk ,icedtea-8
1288 #:test-dir "maven-builder-support/src/test"
1289 #:phases
1290 (modify-phases %standard-phases
1291 (add-before 'check 'fix-paths
1292 (lambda _
1293 (with-directory-excursion "maven-builder-support/src/test/java"
1294 (substitute*
1295 '("org/apache/maven/building/FileSourceTest.java"
1296 "org/apache/maven/building/UrlSourceTest.java")
1297 (("target/test-classes") "maven-builder-support/src/test/resources")))
1298 #t))
1299 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1300 (propagated-inputs
1301 (list maven-pom))
1302 (native-inputs
1303 (list java-junit))
1304 (description "Apache Maven is a software project management and comprehension
1305 tool. This package contains a support library for descriptor builders (model,
1306 setting, toolchains)")))
1307
1308 (define-public maven-settings
1309 (package
1310 (inherit maven-artifact)
1311 (name "maven-settings")
1312 (arguments
1313 `(#:jar-name "maven-settings.jar"
1314 #:source-dir "maven-settings/src/main/java"
1315 #:tests? #f; no tests
1316 #:phases
1317 (modify-phases %standard-phases
1318 (add-before 'build 'generate-models
1319 (lambda* (#:key inputs #:allow-other-keys)
1320 (define (modello-single-mode file version mode)
1321 (invoke "java" "org.codehaus.modello.ModelloCli"
1322 file mode "maven-settings/src/main/java" version
1323 "false" "true"))
1324 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1325 (modello-single-mode file "1.2.0" "java")
1326 (modello-single-mode file "1.2.0" "xpp3-reader")
1327 (modello-single-mode file "1.2.0" "xpp3-writer"))
1328 #t))
1329 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1330 (propagated-inputs
1331 (list java-plexus-utils maven-pom))
1332 (native-inputs
1333 (list java-modello-core
1334 ;; for modello:
1335 ;("container" ,java-plexus-container-default)
1336 java-eclipse-sisu-plexus
1337 java-plexus-component-annotations
1338 java-guice
1339 java-cglib
1340 java-eclipse-sisu-inject
1341 java-javax-inject
1342 java-plexus-classworlds
1343 java-plexus-utils
1344 java-guava
1345 java-geronimo-xbean-reflect
1346 java-plexus-build-api
1347 ;; modello plugins:
1348 java-modello-plugins-java
1349 java-modello-plugins-xml
1350 java-modello-plugins-xpp3))
1351 (description "Apache Maven is a software project management and comprehension
1352 tool. This package contains strictly the model for Maven settings, that is
1353 simply plain java objects.")))
1354
1355 (define-public maven-settings-builder
1356 (package
1357 (inherit maven-artifact)
1358 (name "maven-settings-builder")
1359 (arguments
1360 `(#:jar-name "maven-settings-builder.jar"
1361 #:source-dir "maven-settings-builder/src/main/java"
1362 #:jdk ,icedtea-8
1363 #:test-dir "maven-settings-builder/src/test"
1364 #:phases
1365 (modify-phases %standard-phases
1366 (add-before 'build 'generate-sisu-named
1367 (lambda _
1368 (mkdir-p "build/classes/META-INF/sisu")
1369 (chmod "sisu.sh" #o755)
1370 (invoke "./sisu.sh" "maven-settings-builder/src/main/java"
1371 "build/classes/META-INF/sisu/javax.inject.Named")))
1372 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1373 (propagated-inputs
1374 (list java-plexus-utils
1375 java-plexus-interpolation
1376 java-plexus-sec-dispatcher
1377 maven-builder-support
1378 maven-settings
1379 maven-pom))
1380 (native-inputs
1381 (list java-junit java-javax-inject java-plexus-component-annotations))
1382 (description "Apache Maven is a software project management and comprehension
1383 tool. This package contains the effective model builder, with profile activation,
1384 inheritance, interpolation, @dots{}")))
1385
1386 (define-public maven-model-builder
1387 (package
1388 (inherit maven-artifact)
1389 (name "maven-model-builder")
1390 (arguments
1391 `(#:jar-name "maven-model-builder.jar"
1392 #:source-dir "maven-model-builder/src/main/java"
1393 #:jdk ,icedtea-8
1394 #:test-dir "maven-model-builder/src/test"
1395 #:phases
1396 (modify-phases %standard-phases
1397 (add-before 'build 'copy-resources
1398 (lambda _
1399 (copy-recursively "maven-model-builder/src/main/resources"
1400 "build/classes")
1401 #t))
1402 (add-before 'build 'generate-sisu-named
1403 (lambda _
1404 (mkdir-p "build/classes/META-INF/sisu")
1405 (chmod "sisu.sh" #o755)
1406 (invoke "./sisu.sh" "maven-model-builder/src/main/java"
1407 "build/classes/META-INF/sisu/javax.inject.Named")))
1408 (add-before 'check 'fix-paths
1409 (lambda _
1410 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1411 (("src/test") "maven-model-builder/src/test"))
1412 #t))
1413 (replace 'install
1414 (install-from-pom "maven-model-builder/pom.xml")))))
1415 (propagated-inputs
1416 (list java-plexus-interpolation
1417 java-plexus-utils
1418 maven-artifact
1419 maven-builder-support
1420 maven-model
1421 maven-pom))
1422 (native-inputs
1423 `(("java-junit" ,java-junit)
1424 ("java-guava" ,java-guava)
1425 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1426 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1427 ("java-powermock-reflect" ,java-powermock-reflect)
1428 ("java-objenesis" ,java-objenesis)
1429 ("guice" ,java-guice)
1430 ("java-cglib" ,java-cglib)
1431 ("sisu-inject" ,java-eclipse-sisu-inject)
1432 ("javax-inject" ,java-javax-inject)
1433 ("java-xmlunit" ,java-xmlunit)
1434 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1435 ("xbean" ,java-geronimo-xbean-reflect)
1436 ("classworlds" ,java-plexus-classworlds)))
1437 (description "Apache Maven is a software project management and comprehension
1438 tool. This package contains the effective model builder, with profile activation,
1439 inheritance, interpolation, @dots{}")))
1440
1441 (define-public maven-repository-metadata
1442 (package
1443 (inherit maven-artifact)
1444 (name "maven-repository-metadata")
1445 (arguments
1446 `(#:jar-name "maven-repository-metadata.jar"
1447 #:source-dir "maven-repository-metadata/src/main/java"
1448 #:jdk ,icedtea-8
1449 #:tests? #f; no tests
1450 #:phases
1451 (modify-phases %standard-phases
1452 (add-before 'build 'generate-models
1453 (lambda* (#:key inputs #:allow-other-keys)
1454 (define (modello-single-mode file version mode)
1455 (invoke "java" "org.codehaus.modello.ModelloCli"
1456 file mode "maven-repository-metadata/src/main/java" version
1457 "false" "true"))
1458 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1459 (modello-single-mode file "1.1.0" "java")
1460 (modello-single-mode file "1.1.0" "xpp3-reader")
1461 (modello-single-mode file "1.1.0" "xpp3-writer"))
1462 #t))
1463 (replace 'install
1464 (install-from-pom "maven-repository-metadata/pom.xml")))))
1465 (propagated-inputs
1466 (list java-plexus-utils maven-pom))
1467 (native-inputs
1468 `(("modello" ,java-modello-core)
1469 ;; for modello:
1470 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1471 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1472 ("java-guice" ,java-guice)
1473 ("java-cglib" ,java-cglib)
1474 ("java-asm" ,java-asm)
1475 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1476 ("java-javax-inject" ,java-javax-inject)
1477 ("java-plexus-utils" ,java-plexus-utils)
1478 ("java-plexus-classworlds" ,java-plexus-classworlds)
1479 ("java-guava" ,java-guava)
1480 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1481 ("java-plexus-build-api" ,java-plexus-build-api)
1482 ;; modello plugins:
1483 ("java-modello-plugins-java" ,java-modello-plugins-java)
1484 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1485 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1486 (description "Apache Maven is a software project management and comprehension
1487 tool. This package contains strictly the model for Maven Repository Metadata,
1488 so really just plain objects.")))
1489
1490 (define-public maven-resolver-provider
1491 (package
1492 (inherit maven-artifact)
1493 (name "maven-resolver-provider")
1494 (arguments
1495 `(#:jar-name "maven-resolver-provider.jar"
1496 #:source-dir "maven-resolver-provider/src/main/java"
1497 #:test-dir "maven-resolver-provider/src/test"
1498 #:jdk ,icedtea-8
1499 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1500 #:phases
1501 (modify-phases %standard-phases
1502 (add-before 'build 'generate-sisu-named
1503 (lambda _
1504 (mkdir-p "build/classes/META-INF/sisu")
1505 (chmod "./sisu.sh" #o755)
1506 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1507 "build/classes/META-INF/sisu/javax.inject.Named")
1508 #t))
1509 (replace 'install
1510 (install-from-pom "maven-resolver-provider/pom.xml")))))
1511 (propagated-inputs
1512 (list maven-model
1513 maven-model-builder
1514 maven-resolver-spi
1515 maven-resolver-api
1516 maven-resolver-impl
1517 maven-resolver-util
1518 maven-builder-support
1519 maven-repository-metadata
1520 java-plexus-utils
1521 java-plexus-component-annotations
1522 java-guice
1523 java-javax-inject))))
1524
1525 (define-public maven-plugin-api
1526 (package
1527 (inherit maven-artifact)
1528 (name "maven-plugin-api")
1529 (arguments
1530 `(#:jar-name "maven-plugin-api.jar"
1531 #:source-dir "maven-plugin-api/src/main/java"
1532 #:jdk ,icedtea-8
1533 #:test-dir "maven-plugin-api/src/test"
1534 #:phases
1535 (modify-phases %standard-phases
1536 (add-before 'build 'generate-models
1537 (lambda* (#:key inputs #:allow-other-keys)
1538 (define (modello-single-mode file version mode)
1539 (invoke "java" "org.codehaus.modello.ModelloCli"
1540 file mode "maven-plugin-api/src/main/java" version
1541 "false" "true"))
1542 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1543 (modello-single-mode file "1.0.0" "java")
1544 (modello-single-mode file "1.0.0" "xpp3-reader")
1545 (modello-single-mode file "1.0.0" "xpp3-writer"))
1546 #t))
1547 (replace 'install
1548 (install-from-pom "maven-plugin-api/pom.xml")))))
1549 (propagated-inputs
1550 `(("maven-artifact" ,maven-artifact)
1551 ("maven-model" ,maven-model)
1552 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1553 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1554 ("guice" ,java-guice)
1555 ("java-cglib" ,java-cglib)
1556 ("sisu-inject" ,java-eclipse-sisu-inject)
1557 ("javax-inject" ,java-javax-inject)
1558 ("utils" ,java-plexus-utils)))
1559 (native-inputs
1560 `(("modello" ,java-modello-core)
1561 ;; for modello:
1562 ("classworlds" ,java-plexus-classworlds)
1563 ("guava" ,java-guava)
1564 ("xbean" ,java-geronimo-xbean-reflect)
1565 ("build-api" ,java-plexus-build-api)
1566 ;; modello plugins:
1567 ("java" ,java-modello-plugins-java)
1568 ("xml" ,java-modello-plugins-xml)
1569 ("xpp3" ,java-modello-plugins-xpp3)
1570 ;; for tests
1571 ("java-junit" ,java-junit)))
1572 (description "Apache Maven is a software project management and comprehension
1573 tool. This package contains strictly the API for plugins -- composed of goals
1574 implemented by Mojos -- development.
1575
1576 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1577 generally generated from plugin sources using maven-plugin-plugin.")))
1578
1579 (define-public maven-core-bootstrap
1580 (hidden-package
1581 (package
1582 (inherit maven-artifact)
1583 (name "maven-core")
1584 (arguments
1585 `(#:jar-name "maven-core.jar"
1586 #:source-dir "src/main/java"
1587 #:jdk ,icedtea-8
1588 ;; Tests need maven-compat, which requires maven-core
1589 #:tests? #f
1590 #:phases
1591 (modify-phases %standard-phases
1592 (add-before 'configure 'chdir
1593 (lambda _
1594 ;; Required for generating components.xml in maven-core
1595 (chdir "maven-core")
1596 #t))
1597 (add-before 'build 'copy-resources
1598 (lambda _
1599 (mkdir-p "build/classes/")
1600 (copy-recursively "src/main/resources" "build/classes")
1601 #t))
1602 (add-after 'copy-resources 'fill-properties
1603 (lambda _
1604 ;; This file controls the output of some mvn subcommands, such as
1605 ;; mvn -version.
1606 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1607 (("\\$\\{buildNumber\\}") "guix_build")
1608 (("\\$\\{timestamp\\}") "0")
1609 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1610 (("\\$\\{distributionId\\}") "apache-maven")
1611 (("\\$\\{distributionShortName\\}") "Maven")
1612 (("\\$\\{distributionName\\}") "Apache Maven"))
1613 #t))
1614 (add-before 'build 'generate-sisu-named
1615 (lambda _
1616 (mkdir-p "build/classes/META-INF/sisu")
1617 (chmod "../sisu.sh" #o755)
1618 (invoke "../sisu.sh" "src/main/java"
1619 "build/classes/META-INF/sisu/javax.inject.Named")
1620 #t))
1621 (add-before 'build 'generate-models
1622 (lambda* (#:key inputs #:allow-other-keys)
1623 (define (modello-single-mode file version mode)
1624 (invoke "java" "org.codehaus.modello.ModelloCli"
1625 file mode "src/main/java" version
1626 "false" "true"))
1627 (let ((file "src/main/mdo/toolchains.mdo"))
1628 (modello-single-mode file "1.1.0" "java")
1629 (modello-single-mode file "1.1.0" "xpp3-reader")
1630 (modello-single-mode file "1.1.0" "xpp3-writer"))
1631 #t))
1632 (add-before 'install 'fix-pom
1633 (lambda _
1634 (substitute* "pom.xml"
1635 (("<classifier>no_aop</classifier>") ""))
1636 #t))
1637 (replace 'install
1638 (install-from-pom "pom.xml")))))
1639 (propagated-inputs
1640 `(("maven-artifact" ,maven-artifact)
1641 ("maven-resolver-provider" ,maven-resolver-provider)
1642 ("maven-builder-support" ,maven-builder-support)
1643 ("maven-model" ,maven-model)
1644 ("maven-model-builder" ,maven-model-builder)
1645 ("maven-settings" ,maven-settings)
1646 ("maven-settings-builder" ,maven-settings-builder)
1647 ("maven-plugin-api" ,maven-plugin-api)
1648 ("maven-repository-metadata" ,maven-repository-metadata)
1649 ("maven-shared-utils" ,maven-shared-utils)
1650 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
1651 ("java-plexus-utils" ,java-plexus-utils)
1652 ("java-commons-lang3" ,java-commons-lang3)
1653 ("java-guava" ,java-guava)
1654 ("java-guice" ,java-guice)
1655 ("maven-resolver-api" ,maven-resolver-api)
1656 ("maven-resolver-spi" ,maven-resolver-spi)
1657 ("maven-resolver-util" ,maven-resolver-util)
1658 ("maven-resolver-impl" ,maven-resolver-impl)
1659 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1660 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1661 ("java-javax-inject" ,java-javax-inject)
1662 ("java-plexus-classworld" ,java-plexus-classworlds)))
1663 (native-inputs
1664 `(("java-modello-core" ,java-modello-core)
1665 ("java-cglib" ,java-cglib)
1666 ("java-plexus-classworlds" ,java-plexus-classworlds)
1667 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1668 ("java-plexus-build-api" ,java-plexus-build-api)
1669 ("java-modello-plugins-java" ,java-modello-plugins-java)
1670 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1671 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1672 ;; tests
1673 ("java-junit" ,java-junit)
1674 ("java-mockito-1" ,java-mockito-1)
1675 ("java-commons-jxpath" ,java-commons-jxpath)))
1676 (description "Apache Maven is a software project management and comprehension
1677 tool. This package contains the maven core classes managing the whole build
1678 process."))))
1679
1680 (define-public maven-core
1681 (package
1682 (inherit maven-core-bootstrap)
1683 (arguments
1684 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1685 ((#:phases phases)
1686 `(modify-phases ,phases
1687 (add-before 'build 'modify-metainf
1688 (lambda _
1689 (substitute* "build.xml"
1690 (("message=\"\"")
1691 (string-append "message=\"Implementation-Version: "
1692 (package-version maven) "\n\"")))
1693 #t))
1694 (add-before 'build 'add-maven-files
1695 (lambda _
1696 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1697 (copy-file "pom.xml"
1698 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1699 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1700 (lambda _
1701 (format #t "version=~a~%
1702 groupId=org.apache.maven~%
1703 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1704 #t))
1705 (add-after 'build 'generate-metadata
1706 (lambda _
1707 (define (components file)
1708 (let ((sxml (with-input-from-file file
1709 (lambda _ (xml->sxml (current-input-port)
1710 #:trim-whitespace? #t)))))
1711 ;; Select the list of <component>s inside the <component-set>
1712 ;; and <components>.
1713 ((@ (ice-9 match) match) sxml
1714 (('*TOP*
1715 ('*PI* foo ...)
1716 ('component-set
1717 ('components x ...))) x))))
1718 (use-modules (sxml simple))
1719 (delete-file "build/classes/META-INF/plexus/components.xml")
1720 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1721 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1722 "--source" "build/classes/META-INF/plexus"
1723 "--output" "build/classes/META-INF/plexus/components.t.xml"
1724 "--classes" "build/classes"
1725 "--descriptors" "build/classes")
1726 ;; Now we merge all other components from hand-written xml
1727 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1728 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1729 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1730 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1731 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1732 (lambda _
1733 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1734 (sxml->xml
1735 `(component-set
1736 (components
1737 ,@(append generated-xml components-xml
1738 default-bindings-xml
1739 artifact-handlers-xml)))))))
1740 #t))
1741 (add-after 'generate-metadata 'fix-plugin-versions
1742 (lambda _
1743 ;; This file controls the default plugins used by Maven. Ensure
1744 ;; we use the versions we have packaged by default
1745 (substitute* '("build/classes/META-INF/plexus/default-bindings.xml"
1746 "build/classes/META-INF/plexus/components.xml")
1747 (("maven-install-plugin:[0-9.]+")
1748 (string-append "maven-install-plugin:"
1749 ,(package-version maven-install-plugin)))
1750 (("maven-resources-plugin:[0-9.]+")
1751 (string-append "maven-resources-plugin:"
1752 ,(package-version maven-resources-plugin)))
1753 (("maven-compiler-plugin:[0-9.]+")
1754 (string-append "maven-compiler-plugin:"
1755 ,(package-version maven-compiler-plugin)))
1756 (("maven-surefire-plugin:[0-9.]+")
1757 (string-append "maven-surefire-plugin:"
1758 ,(package-version maven-surefire-plugin)))
1759 (("maven-jar-plugin:[0-9.]+")
1760 (string-append "maven-jar-plugin:"
1761 ,(package-version maven-jar-plugin))))))
1762 (add-after 'fix-plugin-versions 'rebuild
1763 (lambda _
1764 (invoke "ant" "jar")
1765 #t))))))
1766 (native-inputs
1767 `(("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
1768 ("java-commons-cli" ,java-commons-cli)
1769 ("java-plexus-cli" ,java-plexus-cli)
1770 ("java-jdom2" ,java-jdom2)
1771 ("java-qdox" ,java-qdox)
1772 ("maven-core-boot" ,maven-core-bootstrap)
1773 ,@(package-native-inputs maven-core-bootstrap)))))
1774
1775 (define-public maven-embedder
1776 (package
1777 (inherit maven-artifact)
1778 (name "maven-embedder")
1779 (arguments
1780 `(#:jar-name "maven-embedder.jar"
1781 #:source-dir "maven-embedder/src/main/java"
1782 #:test-dir "maven-embedder/src/test"
1783 #:test-exclude (list "**/MavenCliTest.java")
1784 #:jdk ,icedtea-8
1785 #:phases
1786 (modify-phases %standard-phases
1787 (add-before 'build 'generate-sisu-named
1788 (lambda _
1789 (mkdir-p "build/classes/META-INF/sisu")
1790 (chmod "sisu.sh" #o755)
1791 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1792 "build/classes/META-INF/sisu/javax.inject.Named")
1793 #t))
1794 (add-before 'build 'copy-resources
1795 (lambda _
1796 (mkdir-p "build/classes/")
1797 (copy-recursively "maven-embedder/src/main/resources" "build/classes")))
1798 (add-before 'build 'generate-models
1799 (lambda* (#:key inputs #:allow-other-keys)
1800 (define (modello-single-mode file version mode)
1801 (invoke "java" "org.codehaus.modello.ModelloCli"
1802 file mode "maven-embedder/src/main/java" version
1803 "false" "true"))
1804 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1805 (modello-single-mode file "1.0.0" "java")
1806 (modello-single-mode file "1.0.0" "xpp3-reader")
1807 (modello-single-mode file "1.0.0" "xpp3-writer"))
1808 #t))
1809 (add-before 'check 'fix-test-paths
1810 (lambda _
1811 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1812 (("target/test-classes") "build/test-classes"))
1813 #t))
1814 (add-before 'check 'fix-test-compilation
1815 (lambda _
1816 ;; Tests are in the java/ subdir. Other subdirectories contain
1817 ;; additional test plugins, with duplicate classes, so we can't
1818 ;; compile them. Also, they are meant to be built with maven, to
1819 ;; test its build process.
1820 (substitute* "build.xml"
1821 (("srcdir=\"maven-embedder/src/test\"")
1822 "srcdir=\"maven-embedder/src/test/java\""))
1823 #t))
1824 (add-before 'check 'disable-failing-test
1825 (lambda _
1826 (delete-file "maven-embedder/src/test/java/org/apache/maven/cli/event/ExecutionEventLoggerTest.java")))
1827 (add-before 'install 'fix-pom
1828 (lambda _
1829 (substitute* "maven-embedder/pom.xml"
1830 (("jsr250-api") "javax.annotation-api"))))
1831 (replace 'install
1832 (install-from-pom "maven-embedder/pom.xml")))))
1833 (propagated-inputs
1834 `(("maven-core" ,maven-core)
1835 ("maven-artifact" ,maven-artifact)
1836 ("maven-plugin-api" ,maven-plugin-api)
1837 ("maven-builder-support" ,maven-builder-support)
1838 ("maven-model" ,maven-model)
1839 ("maven-model-builder" ,maven-model-builder)
1840 ("maven-settings" ,maven-settings)
1841 ("maven-settings-builder" ,maven-settings-builder)
1842 ("maven-shared-utils" ,maven-shared-utils)
1843 ("java-plexus-classworlds" ,java-plexus-classworlds)
1844 ("java-plexus-util" ,java-plexus-utils)
1845 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1846 ("java-plexus-cipher" ,java-plexus-cipher)
1847 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1848 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1849 ("maven-resolevr-util" ,maven-resolver-util)
1850 ("maven-resolevr-api" ,maven-resolver-api)
1851 ("java-logback-core" ,java-logback-core)
1852 ("java-logback-classic" ,java-logback-classic)
1853 ("java-commons-cli" ,java-commons-cli)
1854 ("java-commons-io" ,java-commons-io)
1855 ("java-commons-lang3" ,java-commons-lang3)
1856 ("java-guava" ,java-guava)
1857 ("java-guice" ,java-guice)
1858 ("java-javax-inject" ,java-javax-inject)
1859 ("java-slf4j-api" ,java-slf4j-api)
1860 ("java-slf4j-simple" ,java-slf4j-simple)
1861 ("java-jsr250" ,java-jsr250)))
1862 (native-inputs
1863 `(("java-asm-8" ,java-asm-8)
1864 ("java-modello-core" ,java-modello-core)
1865 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1866 ("java-plexus-build-api" ,java-plexus-build-api)
1867 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1868 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1869 ("java-cglib" ,java-cglib)
1870 ("java-modello-plugins-java" ,java-modello-plugins-java)
1871 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1872 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1873 ;; tests
1874 ("java-junit" ,java-junit)
1875 ("java-objenesis" ,java-objenesis)
1876 ("java-mockito-1" ,java-mockito-1)
1877 ("java-hamcrest-core" ,java-hamcrest-core)))
1878 (description "Apache Maven is a software project management and comprehension
1879 tool. This package contains a Maven embeddable component, with CLI and
1880 logging support.")))
1881
1882 (define-public maven-compat
1883 (package
1884 (inherit maven-artifact)
1885 (name "maven-compat")
1886 (arguments
1887 `(#:jar-name "maven-compat.jar"
1888 #:source-dir "src/main/java"
1889 #:jdk ,icedtea-8
1890 #:test-dir "src/test"
1891 #:phases
1892 (modify-phases %standard-phases
1893 ;; Tests assume we're in this directory
1894 (add-before 'configure 'chdir
1895 (lambda _
1896 (chdir "maven-compat")
1897 #t))
1898 (add-before 'build 'recreate-removed-jar
1899 (lambda _
1900 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1901 (const #t))
1902 (with-directory-excursion "src/test/resources"
1903 (with-output-to-file "artifact-install/artifact-1.0.jar"
1904 (lambda _
1905 (format #t "dummy~%")))
1906 (for-each
1907 (lambda (file)
1908 (with-output-to-file file
1909 (lambda _
1910 (format #t "foo~%"))))
1911 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1912 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1913 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1914 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1915 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1916 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1917 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1918 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1919 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1920 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1921 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1922 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1923 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1924 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1925 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1926 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1927 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1928 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1929 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1930 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1931 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1932 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1933 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1934 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1935 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1936 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1937 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1938 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1939 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1940 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1941 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1942 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1943 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1944 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1945 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1946 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1947 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1948 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1949 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1950 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1951 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1952 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1953 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1954 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1955 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1956 (with-directory-excursion "local-repo/snapshot-test/jars"
1957 (for-each
1958 (lambda (file)
1959 (with-output-to-file file
1960 (lambda _
1961 ;; No end-of-line
1962 (format #t "local"))))
1963 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1964 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1965 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1966 (for-each
1967 (lambda (letter)
1968 (with-directory-excursion
1969 (string-append "src/test/remote-repo/org/apache/maven/its/"
1970 letter "/0.1")
1971 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1972 letter)))
1973 (mkdir-p dir)
1974 (copy-file (string-append letter "-0.1.pom")
1975 (string-append dir "/pom.xml"))
1976 (with-output-to-file (string-append dir "/pom.properties")
1977 (lambda _
1978 (format #t "version=0.1~%")
1979 (format #t "groupId=org.apache.maven.its")
1980 (format #t (string-append "artifactId=" letter))))
1981 (with-output-to-file "META-INF/MANIFEST.MF"
1982 (lambda _
1983 (format #t "Manifest-Version: 1.0~%"))))
1984 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1985 (string-append letter "-0.1.jar") "META-INF")))
1986 '("a" "b"))
1987 #t))
1988 (add-before 'build 'generate-models
1989 (lambda* (#:key inputs #:allow-other-keys)
1990 (define (modello-single-mode file version mode)
1991 (invoke "java" "org.codehaus.modello.ModelloCli"
1992 file mode "src/main/java" version
1993 "false" "true"))
1994 (let ((file "src/main/mdo/profiles.mdo"))
1995 (modello-single-mode file "1.0.0" "java")
1996 (modello-single-mode file "1.0.0" "xpp3-reader")
1997 (modello-single-mode file "1.0.0" "xpp3-writer"))
1998 (let ((file "src/main/mdo/paramdoc.mdo"))
1999 (modello-single-mode file "1.0.0" "java")
2000 (modello-single-mode file "1.0.0" "xpp3-reader")
2001 (modello-single-mode file "1.0.0" "xpp3-writer"))
2002 #t))
2003 (add-before 'build 'copy-resources
2004 (lambda _
2005 (mkdir-p "build/classes/")
2006 (copy-recursively "src/main/resources" "build/classes")))
2007 (add-after 'build 'generate-metadata
2008 (lambda _
2009 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2010 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2011 "--source" "src/main/java"
2012 "--output" "build/classes/META-INF/plexus/components.xml"
2013 "--classes" "build/classes"
2014 "--descriptors" "build/classes/META-INF")
2015 #t))
2016 (add-before 'check 'build-tests
2017 (lambda _
2018 (invoke "ant" "compile-tests")
2019 #t))
2020 (add-after 'build-tests 'generate-test-metadata
2021 (lambda _
2022 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
2023 ":build/classes"
2024 ":build/test-classes")
2025 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2026 "--source" "src/test/java"
2027 "--output" "build/test-classes/META-INF/plexus/components.xml"
2028 "--classes" "build/test-classes"
2029 "--descriptors" "build/test-classes/META-INF")
2030 #t))
2031 (add-before 'check 'disable-failing-test
2032 (lambda _
2033 (delete-file "src/test/java/org/apache/maven/profiles/manager/DefaultProfileManagerTest.java")))
2034 (add-after 'generate-metadata 'rebuild
2035 (lambda _
2036 (invoke "ant" "jar")
2037 #t))
2038 (replace 'install
2039 (install-from-pom "pom.xml")))))
2040 (propagated-inputs
2041 (list maven-artifact
2042 maven-repository-metadata
2043 maven-builder-support
2044 maven-model
2045 maven-model-builder
2046 maven-settings
2047 maven-settings-builder
2048 maven-core
2049 maven-wagon-provider-api
2050 maven-wagon-file
2051 maven-resolver-api
2052 maven-resolver-util
2053 maven-resolver-spi
2054 java-plexus-interpolation))
2055 (native-inputs
2056 `(("java-modello-core" ,java-modello-core)
2057 ("java-plexus-utils" ,java-plexus-utils)
2058 ("java-plexus-component-annotations" ,java-plexus-component-annotations-1.7)
2059 ("java-plexus-classworlds" ,java-plexus-classworlds)
2060 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
2061 ("java-plexus-build-api" ,java-plexus-build-api)
2062 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
2063 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
2064 ("java-javax-inject" ,java-javax-inject)
2065 ("java-guice" ,java-guice)
2066 ("java-guava" ,java-guava)
2067 ("java-cglib" ,java-cglib)
2068 ("java-asm" ,java-asm)
2069 ("java-modello-plugins-java" ,java-modello-plugins-java)
2070 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
2071 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
2072 ;; metadata
2073 ("java-plexus-component-metadata" ,java-plexus-component-metadata-1.7)
2074 ("java-commons-cli" ,java-commons-cli)
2075 ("java-plexus-cli" ,java-plexus-cli)
2076 ("java-jdom2" ,java-jdom2)
2077 ("maven-plugin-api" ,maven-plugin-api)
2078 ("java-qdox" ,java-qdox)
2079 ;; tests
2080 ("java-plexus-cipher" ,java-plexus-cipher)
2081 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
2082 ("java-jsr250" ,java-jsr250)
2083 ("java-cdi-api" ,java-cdi-api)
2084 ("java-junit" ,java-junit)
2085 ("maven-resolver-impl" ,maven-resolver-impl)
2086 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
2087 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
2088 ("java-commons-lang3" ,java-commons-lang3)
2089 ("java-aop" ,java-aopalliance)
2090 ("maven-resolver-provider" ,maven-resolver-provider)
2091 ("java-slf4j-api" ,java-slf4j-api)
2092 ("java-slf4j-simple" ,java-slf4j-simple)
2093 ,@(package-inputs java-slf4j-api)))
2094 (description "Apache Maven is a software project management and comprehension
2095 tool. This package contains Maven2 classes maintained as compatibility
2096 layer for plugins that need to keep Maven2 compatibility.")))
2097
2098 (define-public maven
2099 (package
2100 (inherit maven-artifact)
2101 (name "maven")
2102 (arguments
2103 `(#:phases
2104 (modify-phases %standard-phases
2105 (replace 'build
2106 (lambda* (#:key inputs #:allow-other-keys)
2107 ;; Recreate the configuration for the loader
2108 (with-output-to-file "apache-maven/src/bin/m2.conf"
2109 (lambda _
2110 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
2111 (format #t "~%")
2112 (format #t "set maven.conf default ${maven.home}/conf~%")
2113 (format #t "~%")
2114 (format #t "[plexus.core]~%")
2115 (format #t "load ${maven.conf}/logging~%")
2116 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
2117 ;; Reference every jar so plexus-classworlds can find them.
2118 (for-each
2119 (lambda (dependency)
2120 (for-each
2121 (lambda (file)
2122 (format #t "load ~a~%" file))
2123 (find-files (assoc-ref inputs dependency) ".*.jar$")))
2124 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
2125 "maven-builder-support" "maven-model" "maven-model-builder"
2126 "maven-settings" "maven-settings-builder" "maven-plugin-api"
2127 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
2128 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
2129 "maven-resolver-connector-basic" "maven-resolver-provider"
2130 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
2131 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
2132 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
2133 "maven-wagon-http-shared" "maven-wagon-tck-http"
2134 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
2135 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
2136 "java-javax-inject" "java-plexus-component-annotations"
2137 "java-plexus-utils" "java-plexus-interpolation"
2138 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
2139 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
2140 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
2141 "java-slf4j-simple"))))
2142 (substitute* "apache-maven/src/bin/mvn"
2143 (("cygwin=false;")
2144 (string-append
2145 "CLASSPATH="
2146 (car (find-files
2147 (assoc-ref inputs "java-plexus-classworlds")
2148 ".*.jar"))
2149 "\ncygwin=false;"))
2150 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
2151 #t))
2152 (delete 'check)
2153 (replace 'install
2154 (lambda* (#:key outputs #:allow-other-keys)
2155 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
2156 (conf (string-append (assoc-ref outputs "out") "/conf/")))
2157 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
2158 (for-each (lambda (file)
2159 (install-file (string-append "apache-maven/src/bin/" file)
2160 bin)
2161 (chmod (string-append bin file) #o755))
2162 '("mvn" "mvnDebug" "mvnyjp"))
2163 (install-file "apache-maven/src/bin/m2.conf" bin)
2164 (copy-recursively "apache-maven/src/conf" conf))
2165 #t)))))
2166 (inputs
2167 (list java-plexus-classworlds
2168 maven-artifact
2169 maven-embedder
2170 maven-core
2171 maven-compat
2172 maven-builder-support
2173 maven-model
2174 maven-model-builder
2175 maven-settings
2176 maven-settings-builder
2177 maven-plugin-api
2178 maven-repository-metadata
2179 maven-shared-utils
2180 maven-resolver-api
2181 maven-resolver-spi
2182 maven-resolver-util
2183 maven-resolver-impl
2184 maven-resolver-connector-basic
2185 maven-resolver-provider
2186 maven-resolver-transport-wagon
2187 maven-wagon-provider-api
2188 maven-wagon-file
2189 maven-wagon-http
2190 java-commons-logging-minimal
2191 java-httpcomponents-httpclient
2192 java-httpcomponents-httpcore
2193 maven-wagon-http-shared
2194 maven-wagon-tck-http
2195 java-eclipse-sisu-plexus
2196 java-guice
2197 java-aopalliance
2198 java-cglib
2199 java-asm-8
2200 java-eclipse-sisu-inject
2201 java-javax-inject
2202 java-plexus-component-annotations
2203 java-plexus-utils
2204 java-plexus-interpolation
2205 java-plexus-sec-dispatcher
2206 java-plexus-cipher
2207 java-guava
2208 java-jansi
2209 java-jsr250
2210 java-cdi-api
2211 java-commons-cli
2212 java-commons-io
2213 java-commons-lang3
2214 java-slf4j-api
2215 ;; TODO: replace with maven-slf4j-provider
2216 java-slf4j-simple))
2217 (propagated-inputs
2218 (list coreutils which))
2219 (description "Apache Maven is a software project management and comprehension
2220 tool. Based on the concept of a project object model: builds, dependency
2221 management, documentation creation, site publication, and distribution
2222 publication are all controlled from the @file{pom.xml} declarative file. Maven
2223 can be extended by plugins to utilise a number of other development tools for
2224 reporting or the build process.")))
2225
2226 ;; Many plugins require maven 3.0 as a dependency.
2227 (define maven-3.0-pom
2228 (package
2229 (inherit maven-pom)
2230 (version "3.0")
2231 (source (origin
2232 (method git-fetch)
2233 (uri (git-reference
2234 (url "https://github.com/apache/maven")
2235 (commit (string-append "maven-" version))))
2236 (file-name (git-file-name "maven" version))
2237 (sha256
2238 (base32
2239 "06jdwxx9w24shhv3kca80rlrikynn7kdqcrwg59lv2b7adpllwnh"))
2240 (modules '((guix build utils)))
2241 (snippet
2242 '(begin
2243 (for-each delete-file (find-files "." "\\.jar$"))
2244 (for-each (lambda (file) (chmod file #o644))
2245 (find-files "." "."))
2246 #t))
2247 (patches
2248 (search-patches "maven-generate-component-xml.patch"
2249 "maven-generate-javax-inject-named.patch"))))
2250 (propagated-inputs
2251 `(("maven-parent-pom-15" ,maven-parent-pom-15)))))
2252
2253 (define-public maven-3.0-artifact
2254 (package
2255 (inherit maven-artifact)
2256 (version (package-version maven-3.0-pom))
2257 (source (package-source maven-3.0-pom))
2258 (propagated-inputs
2259 (map
2260 (lambda (input)
2261 (if (equal? (car input) "maven-pom")
2262 `("maven-pom" ,maven-3.0-pom)
2263 input))
2264 (package-propagated-inputs maven-artifact)))))
2265
2266 (define-public maven-3.0-model
2267 (package
2268 (inherit maven-model)
2269 (version (package-version maven-3.0-pom))
2270 (source (package-source maven-3.0-pom))
2271 (propagated-inputs
2272 (map
2273 (lambda (input)
2274 (if (equal? (car input) "maven-pom")
2275 `("maven-pom" ,maven-3.0-pom)
2276 input))
2277 (package-propagated-inputs maven-artifact)))
2278 (arguments
2279 `(#:jar-name "maven-model.jar"
2280 #:source-dir "maven-model/src/main/java"
2281 #:test-dir "maven-model/src/test"
2282 #:modules
2283 ((guix build ant-build-system)
2284 (guix build java-utils)
2285 (guix build syscalls)
2286 (guix build utils))
2287 #:phases
2288 (modify-phases %standard-phases
2289 (add-after 'configure 'use-newer-model
2290 (lambda* (#:key inputs #:allow-other-keys)
2291 ;; The model has almost not changed, but the newer version is
2292 ;; needed to prevent an error in the newer modello we have
2293 (let ((source (assoc-ref inputs "maven-source"))
2294 (dir (mkdtemp! "maven-source-XXXXXXXX")))
2295 (with-directory-excursion dir
2296 (invoke "tar" "xf" source)
2297 (copy-file (car (find-files "." "maven.mdo"))
2298 "../maven-model/src/main/mdo/maven.mdo")))
2299 #t))
2300 (add-before 'build 'generate-models
2301 (lambda* (#:key inputs #:allow-other-keys)
2302 (define (modello-single-mode file version mode)
2303 (invoke "java" "org.codehaus.modello.ModelloCli"
2304 file mode "maven-model/src/main/java" version
2305 "false" "true" "UTF-8"))
2306 (let ((file "maven-model/src/main/mdo/maven.mdo"))
2307 (modello-single-mode file "4.0.0" "java")
2308 (modello-single-mode file "4.0.0" "xpp3-reader")
2309 (modello-single-mode file "4.0.0" "xpp3-writer")
2310 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
2311 #t))
2312 (replace 'install
2313 (install-from-pom "maven-model/pom.xml")))))
2314 (inputs
2315 `(("maven-source" ,(package-source maven-pom))
2316 ,@(package-inputs maven-model)))))
2317
2318 (define-public maven-3.0-settings
2319 (package
2320 (inherit maven-settings)
2321 (version (package-version maven-3.0-pom))
2322 (source (package-source maven-3.0-pom))
2323 (propagated-inputs
2324 (map
2325 (lambda (input)
2326 (if (equal? (car input) "maven-pom")
2327 `("maven-pom" ,maven-3.0-pom)
2328 input))
2329 (package-propagated-inputs maven-settings)))))
2330
2331 (define-public maven-3.0-settings-builder
2332 (package
2333 (inherit maven-settings-builder)
2334 (version (package-version maven-3.0-pom))
2335 (source (package-source maven-3.0-pom))
2336 (arguments
2337 (substitute-keyword-arguments (package-arguments maven-settings-builder)
2338 ((#:phases phases)
2339 `(modify-phases ,phases
2340 (add-before 'build 'generate-components.xml
2341 (lambda _
2342 (mkdir-p "build/classes/META-INF/plexus")
2343 (chmod "components.sh" #o755)
2344 (invoke "./components.sh" "maven-settings-builder/src/main/java"
2345 "build/classes/META-INF/plexus/components.xml")))))))
2346 (propagated-inputs
2347 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
2348 ,@(filter
2349 (lambda (a) a)
2350 (map
2351 (lambda (input)
2352 (match (car input)
2353 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2354 ("maven-settings" `("maven-settings" ,maven-3.0-settings))
2355 ("maven-builder-support" #f)
2356 ("java-plexus-sec-dispatcher"
2357 `("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher-1.4))
2358 (_ input)))
2359 (package-propagated-inputs maven-settings-builder)))))))
2360
2361 (define-public maven-3.0-model-builder
2362 (package
2363 (inherit maven-model-builder)
2364 (version (package-version maven-3.0-pom))
2365 (source (package-source maven-3.0-pom))
2366 (arguments
2367 (substitute-keyword-arguments (package-arguments maven-model-builder)
2368 ((#:phases phases)
2369 `(modify-phases ,phases
2370 (add-before 'build 'generate-components.xml
2371 (lambda _
2372 (mkdir-p "build/classes/META-INF/plexus")
2373 (chmod "components.sh" #o755)
2374 (invoke "./components.sh" "maven-model-builder/src/main/java"
2375 "build/classes/META-INF/plexus/components.xml")))
2376 (add-before 'check 'remove-failing-test
2377 (lambda _
2378 (delete-file "maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
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-model" `("maven-model" ,maven-3.0-model))
2388 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2389 ("maven-builder-support" #f)
2390 (_ input)))
2391 (package-propagated-inputs maven-model-builder)))))))
2392
2393 (define-public maven-3.0-plugin-api
2394 (package
2395 (inherit maven-plugin-api)
2396 (version (package-version maven-3.0-pom))
2397 (source (package-source maven-3.0-pom))
2398 (arguments
2399 (substitute-keyword-arguments (package-arguments maven-plugin-api)
2400 ((#:phases phases)
2401 `(modify-phases ,phases
2402 (add-before 'install 'fix-pom
2403 (lambda _
2404 (substitute* "maven-plugin-api/pom.xml"
2405 (("org.sonatype.sisu") "org.codehaus.plexus")
2406 (("sisu-inject-plexus") "plexus-container-default"))
2407 #t))))))
2408 (propagated-inputs
2409 (map
2410 (lambda (input)
2411 (match (car input)
2412 ("maven-pom" `("maven-pom" ,maven-3.0-pom))
2413 ("maven-artifact" `("maven-artifact" ,maven-3.0-artifact))
2414 ("maven-model" `("maven-model" ,maven-3.0-model))
2415 (_ input)))
2416 (package-propagated-inputs maven-model-builder)))
2417 (native-inputs
2418 (modify-inputs (package-native-inputs maven-plugin-api)
2419 (prepend java-plexus-container-default)))))
2420
2421 (define-public maven-3.0-repository-metadata
2422 (package
2423 (inherit maven-repository-metadata)
2424 (version (package-version maven-3.0-pom))
2425 (source (package-source maven-3.0-pom))
2426 (propagated-inputs
2427 (map
2428 (lambda (input)
2429 (if (equal? (car input) "maven-pom")
2430 `("maven-pom" ,maven-3.0-pom)
2431 input))
2432 (package-propagated-inputs maven-repository-metadata)))))
2433
2434 (define-public maven-3.0-aether-provider
2435 (package
2436 (inherit maven-3.0-pom)
2437 (name "maven-aether-provider")
2438 (arguments
2439 `(#:jar-name "maven-aether-provider.jar"
2440 #:source-dir "maven-aether-provider/src/main/java"
2441 #:tests? #f; no tests in 3.0
2442 #:phases
2443 (modify-phases %standard-phases
2444 (add-after 'build 'generate-metadata
2445 (lambda _
2446 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2447 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2448 "--source" "src/main/java"
2449 "--output" "build/classes/META-INF/plexus/components.xml"
2450 "--classes" "build/classes"
2451 "--descriptors" "build/classes/META-INF")
2452 #t))
2453 (add-after 'generate-metadata 'rebuild
2454 (lambda _
2455 (invoke "ant" "jar")
2456 #t))
2457 (replace 'install
2458 (install-from-pom "maven-aether-provider/pom.xml")))))
2459 (propagated-inputs
2460 `(("maven-model" ,maven-3.0-model)
2461 ("maven-model-builder" ,maven-3.0-model-builder)
2462 ("maven-repository-metadata" ,maven-3.0-repository-metadata)
2463 ("java-sonatype-aether-api" ,java-sonatype-aether-api)
2464 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
2465 ("java-sonatype-aether-impl" ,java-sonatype-aether-impl)
2466 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
2467 ("java-plexus-utils" ,java-plexus-utils)
2468 ("maven-pom" ,maven-3.0-pom)))
2469 (native-inputs
2470 (list java-plexus-component-metadata))))
2471
2472 (define-public maven-3.0-core
2473 (package
2474 (inherit maven-core)
2475 (version (package-version maven-3.0-pom))
2476 (source (package-source maven-3.0-pom))
2477 (arguments
2478 `(#:jar-name "maven-core.jar"
2479 #:source-dir "src/main/java"
2480 #:tests? #f
2481 #:phases
2482 (modify-phases %standard-phases
2483 (add-before 'configure 'chdir
2484 (lambda _
2485 ;; Required for generating components.xml in maven-core
2486 (chdir "maven-core")
2487 #t))
2488 (add-before 'build 'generate-models
2489 (lambda* (#:key inputs #:allow-other-keys)
2490 (define (modello-single-mode file version mode)
2491 (invoke "java" "org.codehaus.modello.ModelloCli"
2492 file mode "src/main/java" version
2493 "false" "true" "UTF-8"))
2494 (let ((file "src/main/mdo/toolchains.mdo"))
2495 (modello-single-mode file "1.0.0" "java")
2496 (modello-single-mode file "1.0.0" "xpp3-reader")
2497 (modello-single-mode file "1.0.0" "xpp3-writer"))
2498 #t))
2499 (add-before 'build 'copy-resources
2500 (lambda _
2501 (mkdir-p "build/classes/")
2502 (copy-recursively "src/main/resources" "build/classes")
2503 #t))
2504 (add-after 'build 'generate-metadata
2505 (lambda _
2506 (define (components file)
2507 (let ((sxml (with-input-from-file file
2508 (lambda _ (xml->sxml (current-input-port)
2509 #:trim-whitespace? #t)))))
2510 ;; Select the list of <component>s inside the <component-set>
2511 ;; and <components>.
2512 ((@ (ice-9 match) match) sxml
2513 (('*TOP*
2514 ('*PI* foo ...)
2515 ('component-set
2516 ('components x ...))) x))))
2517 (use-modules (sxml simple))
2518 (delete-file "build/classes/META-INF/plexus/components.xml")
2519 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
2520 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
2521 "--source" "build/classes/META-INF/plexus"
2522 "--output" "build/classes/META-INF/plexus/components.t.xml"
2523 "--classes" "build/classes"
2524 "--descriptors" "build/classes")
2525 ;; Now we merge all other components from hand-written xml
2526 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
2527 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
2528 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
2529 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
2530 (lambda _
2531 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
2532 (sxml->xml
2533 `(component-set
2534 (components
2535 ,@(append generated-xml components-xml
2536 artifact-handlers-xml)))))))
2537 #t))
2538 (add-after 'generate-metadata 'rebuild
2539 (lambda _
2540 (invoke "ant" "jar")
2541 #t))
2542 (add-before 'install 'fix-pom
2543 (lambda _
2544 (substitute* "pom.xml"
2545 (("org.sonatype.sisu") "org.codehaus.plexus")
2546 (("sisu-inject-plexus") "plexus-container-default"))
2547 #t))
2548 (replace 'install
2549 (install-from-pom "pom.xml")))))
2550 (propagated-inputs
2551 (list maven-3.0-model
2552 maven-3.0-settings
2553 maven-3.0-settings-builder
2554 maven-3.0-repository-metadata
2555 maven-3.0-artifact
2556 maven-3.0-model-builder
2557 maven-3.0-aether-provider
2558 java-sonatype-aether-impl
2559 java-sonatype-aether-api
2560 java-sonatype-aether-util
2561 java-plexus-interpolation
2562 java-plexus-utils
2563 java-plexus-classworlds
2564 java-plexus-component-annotations
2565 java-plexus-container-default
2566 java-plexus-sec-dispatcher-1.4
2567 maven-3.0-pom))))
2568
2569 (define-public maven-3.0-compat
2570 (package
2571 (inherit maven-compat)
2572 (version (package-version maven-3.0-pom))
2573 (source (package-source maven-3.0-pom))
2574 (arguments
2575 `(#:tests? #f ;require an old version of java-easymock
2576 ,@(substitute-keyword-arguments (package-arguments maven-compat)
2577 ((#:phases phases)
2578 `(modify-phases ,phases
2579 (add-before 'install 'fix-pom
2580 (lambda _
2581 (substitute* "pom.xml"
2582 (("org.sonatype.sisu") "org.codehaus.plexus")
2583 (("sisu-inject-plexus") "plexus-container-default"))
2584 #t))
2585 (delete 'build-tests))))))
2586 (propagated-inputs
2587 (list maven-3.0-model
2588 maven-3.0-model-builder
2589 maven-3.0-settings
2590 maven-3.0-settings-builder
2591 maven-3.0-artifact
2592 maven-3.0-core
2593 maven-3.0-aether-provider
2594 maven-3.0-repository-metadata
2595 java-sonatype-aether-api
2596 java-sonatype-aether-util
2597 java-sonatype-aether-impl
2598 java-plexus-utils
2599 java-plexus-interpolation
2600 java-eclipse-sisu-plexus
2601 java-plexus-component-annotations
2602 java-plexus-container-default
2603 maven-wagon-provider-api
2604 maven-3.0-pom))))
2605
2606 (define-public maven-shared-utils-3.0
2607 (package
2608 (inherit maven-shared-utils)
2609 (version "3.0.0")
2610 (source (origin
2611 (method url-fetch)
2612 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2613 "maven-shared-utils-" version "-source-release.zip"))
2614 (sha256
2615 (base32
2616 "0qm8y85kip2hyhnhlkqgj0rhmf83z07s7l7gzsfl5dzl3kvp8nal"))))
2617 (propagated-inputs
2618 (modify-inputs (package-propagated-inputs maven-shared-utils)
2619 (prepend maven-3.0-core maven-components-parent-pom-21)))))
2620
2621 (define-public maven-shared-utils-3.1
2622 (package
2623 (inherit maven-shared-utils)
2624 (version "3.1.0")
2625 (source (origin
2626 (method url-fetch)
2627 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
2628 "maven-shared-utils-" version "-source-release.zip"))
2629 (sha256
2630 (base32
2631 "0vfaas4g09ch0agrd1dcxcmhdd3w971ssvfr9mx9gi2lp5nv8w66"))))))
2632
2633 (define-public maven-shared-io
2634 (package
2635 (name "maven-shared-io")
2636 (version "3.0.0")
2637 (source (origin
2638 (method url-fetch)
2639 (uri (string-append "mirror://apache/maven/shared/"
2640 "maven-shared-io-" version
2641 "-source-release.zip"))
2642 (sha256
2643 (base32
2644 "0hsyll8gg581802xhs4achdz8fpmfz7y02abx9s4mb8bc6yfh229"))))
2645 (build-system ant-build-system)
2646 (arguments
2647 `(#:jar-name "maven-shared-io.jar"
2648 #:source-dir "src/main/java"
2649 #:test-dir "src/test"
2650 #:phases
2651 (modify-phases %standard-phases
2652 (add-before 'build 'copy-resources
2653 (lambda _
2654 (copy-recursively "src/main/resources" "build/classes/")
2655 (copy-recursively "src/test/resources" "build/test-classes/")
2656 #t))
2657 (replace 'install
2658 (install-from-pom "pom.xml")))))
2659 (propagated-inputs
2660 (list maven-3.0-artifact
2661 maven-3.0-compat
2662 maven-3.0-plugin-api
2663 maven-shared-utils
2664 maven-wagon-provider-api
2665 java-plexus-utils
2666 maven-components-parent-pom-22))
2667 (native-inputs
2668 (list unzip java-junit java-easymock))
2669 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2670 (synopsis "Tree-based API for resolution of Maven project dependencies")
2671 (description "This package provides a tree-based API for resolution of
2672 Maven project dependencies.")
2673 (license license:asl2.0)))
2674
2675 (define-public maven-file-management
2676 (package
2677 (name "maven-file-management")
2678 (version "3.0.0")
2679 (source (origin
2680 (method url-fetch)
2681 (uri (string-append "mirror://apache/maven/shared/"
2682 "file-management-" version
2683 "-source-release.zip"))
2684 (sha256
2685 (base32
2686 "0wisz6sm67axrwvx8a75mb9s03h7kzkzfw8j3aaa4sx4k9ph58da"))))
2687 (build-system ant-build-system)
2688 (arguments
2689 `(#:jar-name "maven-file-management.jar"
2690 #:source-dir "src/main/java"
2691 #:phases
2692 (modify-phases %standard-phases
2693 (add-before 'build 'copy-resources
2694 (lambda _
2695 (copy-recursively "src/main/resources" "build/classes/")
2696 #t))
2697 (add-before 'build 'generate-models
2698 (lambda* (#:key inputs #:allow-other-keys)
2699 (define (modello-single-mode file version mode)
2700 (invoke "java"
2701 "org.codehaus.modello.ModelloCli"
2702 file mode "src/main/java" version
2703 "false" "true"))
2704 (let ((file "src/main/mdo/fileset.mdo"))
2705 (modello-single-mode file "1.1.0" "java")
2706 (modello-single-mode file "1.1.0" "xpp3-reader")
2707 (modello-single-mode file "1.1.0" "xpp3-writer"))
2708 #t))
2709 (replace 'install
2710 (install-from-pom "pom.xml")))))
2711 (propagated-inputs
2712 (list maven-3.0-plugin-api maven-shared-io maven-shared-utils
2713 java-plexus-utils maven-components-parent-pom-22))
2714 (native-inputs
2715 `(("java-modello-core" ,java-modello-core)
2716 ;; modello plugins:
2717 ("java-modellop-plugins-java" ,java-modello-plugins-java)
2718 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
2719 ("unzip" ,unzip)))
2720 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2721 (synopsis "Tree-based API for resolution of Maven project dependencies")
2722 (description "This package provides a tree-based API for resolution of
2723 Maven project dependencies.")
2724 (license license:asl2.0)))
2725
2726 (define-public maven-archiver
2727 (package
2728 (name "maven-archiver")
2729 (version "3.5.0")
2730 (source (origin
2731 (method url-fetch)
2732 (uri (string-append "mirror://apache/maven/shared/"
2733 "maven-archiver-" version
2734 "-source-release.zip"))
2735 (sha256
2736 (base32
2737 "1204xkqj259brpk3yscprml0lbfbyn1vn5nrgqjk44z5vx127lbw"))))
2738 (build-system ant-build-system)
2739 (arguments
2740 `(#:jar-name "maven-archiver.jar"
2741 #:source-dir "src/main/java"
2742 #:phases
2743 (modify-phases %standard-phases
2744 (replace 'install
2745 (install-from-pom "pom.xml")))))
2746 (propagated-inputs
2747 `(("java-commons-io" ,java-commons-io)
2748 ("maven-artifact" ,maven-3.0-artifact)
2749 ("maven-core" ,maven-3.0-core)
2750 ("maven-model" ,maven-3.0-model)
2751 ("maven-shared-utils" ,maven-shared-utils)
2752 ("java-plexus-archiver" ,java-plexus-archiver)
2753 ("java-plexus-interpolation" ,java-plexus-interpolation)
2754 ("java-plexus-utils" ,java-plexus-utils)
2755 ("maen-parent-pom" ,maven-parent-pom-33)))
2756 (native-inputs
2757 (list java-junit java-assertj unzip))
2758 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2759 (synopsis "Tree-based API for resolution of Maven project dependencies")
2760 (description "This package provides a tree-based API for resolution of
2761 Maven project dependencies.")
2762 (license license:asl2.0)))
2763
2764 (define-public maven-dependency-tree
2765 (package
2766 (name "maven-dependency-tree")
2767 (version "3.1.0")
2768 (source (origin
2769 (method url-fetch)
2770 (uri (string-append "mirror://apache/maven/shared/"
2771 "maven-dependency-tree-" version
2772 "-source-release.zip"))
2773 (sha256
2774 (base32
2775 "1vhcd3lmbyy8q61c37sqgbllqj4ypkxm344l6pb05mkchlyk5dy5"))))
2776 (build-system ant-build-system)
2777 (arguments
2778 `(#:jar-name "maven-dependency-tree.jar"
2779 #:source-dir "src/main/java"
2780 #:tests? #f; no tests
2781 #:phases
2782 (modify-phases %standard-phases
2783 (replace 'install
2784 (install-from-pom "pom.xml")))))
2785 (propagated-inputs
2786 (list maven-3.0-core java-plexus-component-annotations
2787 maven-parent-pom-34))
2788 (inputs
2789 (list java-sonatype-aether-api-1.13 java-sonatype-aether-util-1.13
2790 java-eclipse-aether-api java-eclipse-aether-util))
2791 (native-inputs
2792 (list unzip java-junit))
2793 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2794 (synopsis "Tree-based API for resolution of Maven project dependencies")
2795 (description "This package provides a tree-based API for resolution of
2796 Maven project dependencies.")
2797 (license license:asl2.0)))
2798
2799 (define-public maven-common-artifact-filters
2800 (package
2801 (name "maven-common-artifact-filters")
2802 (version "3.2.0")
2803 (source (origin
2804 (method url-fetch)
2805 (uri (string-append "mirror://apache/maven/shared/"
2806 "maven-common-artifact-filters-" version
2807 "-source-release.zip"))
2808 (sha256
2809 (base32
2810 "1mr92s4zz6gf028wiskjg8rd1znxzdnmskg42ac55ifg9v1p1884"))))
2811 (build-system ant-build-system)
2812 (arguments
2813 `(#:jar-name "maven-common-artifact-filters.jar"
2814 #:source-dir "src/main/java"
2815 #:tests? #f; require maven-plugin-testing-harness, which requires maven 3.2.
2816 #:phases
2817 (modify-phases %standard-phases
2818 (add-before 'build 'fix-aether
2819 (lambda _
2820 (substitute* "pom.xml"
2821 (("eclipse.aether") "sonatype.aether"))
2822 (substitute* "src/main/java/org/apache/maven/shared/artifact/filter/collection/ArtifactTransitivityFilter.java"
2823 (("eclipse") "sonatype"))))
2824 (replace 'install
2825 (install-from-pom "pom.xml")))))
2826 (propagated-inputs
2827 (list maven-3.0-artifact
2828 maven-3.0-model
2829 maven-3.0-core
2830 maven-3.0-plugin-api
2831 maven-shared-utils
2832 maven-parent-pom-33
2833 java-eclipse-sisu-plexus
2834 java-sonatype-aether-api
2835 java-sonatype-aether-util))
2836 (inputs
2837 (list maven-resolver-api maven-resolver-util))
2838 (native-inputs
2839 (list unzip))
2840 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2841 (synopsis "Tree-based API for resolution of Maven project dependencies")
2842 (description "This package provides a tree-based API for resolution of
2843 Maven project dependencies.")
2844 (license license:asl2.0)))
2845
2846 (define-public maven-common-artifact-filters-3.1.0
2847 (package
2848 (inherit maven-common-artifact-filters)
2849 (version "3.1.0")
2850 (source (origin
2851 (method url-fetch)
2852 (uri (string-append "mirror://apache/maven/shared/"
2853 "maven-common-artifact-filters-" version
2854 "-source-release.zip"))
2855 (sha256
2856 (base32
2857 "1cl1qk4r0gp62bjzfm7lml9raz1my2kd4yf0ci0lnfsn0h5qivnb"))))
2858 (arguments
2859 (substitute-keyword-arguments (package-arguments maven-common-artifact-filters)
2860 ((#:phases phases)
2861 `(modify-phases ,phases
2862 (delete 'fix-aether)
2863 (add-before 'build 'remove-sisu
2864 (lambda _
2865 (substitute* "pom.xml"
2866 (("sisu-inject-plexus") "maven-plugin-api")
2867 (("org.sonatype.sisu") "org.apache.maven"))))))))))
2868
2869 (define-public maven-enforcer-api
2870 (package
2871 (name "maven-enforcer-api")
2872 (version "3.0.0")
2873 (source (origin
2874 (method url-fetch)
2875 (uri (string-append "mirror://apache/maven/enforcer/"
2876 "enforcer-" version "-source-release.zip"))
2877 (sha256
2878 (base32
2879 "1479yp58jv788xc1jc2sbdxpajlbvwlk60639vd2h4s8r6x7naqh"))))
2880 (build-system ant-build-system)
2881 (arguments
2882 `(#:jar-name "maven-enforcer-api.jar"
2883 #:source-dir "enforcer-api/src/main/java"
2884 #:tests? #f; no tests
2885 #:phases
2886 (modify-phases %standard-phases
2887 (replace 'install
2888 (install-from-pom "enforcer-api/pom.xml")))))
2889 (propagated-inputs
2890 (list maven-plugin-api java-plexus-container-default java-jsr305
2891 maven-enforcer-parent-pom))
2892 (native-inputs
2893 (list unzip))
2894 (home-page "https://maven.apache.org/shared/maven-dependency-tree")
2895 (synopsis "Tree-based API for resolution of Maven project dependencies")
2896 (description "This package provides a tree-based API for resolution of
2897 Maven project dependencies.")
2898 (license license:asl2.0)))
2899
2900 (define maven-enforcer-parent-pom
2901 (package
2902 (inherit maven-enforcer-api)
2903 (name "maven-enforcer-parent-pom")
2904 (arguments
2905 `(#:tests? #f
2906 #:phases
2907 (modify-phases %standard-phases
2908 (delete 'configure)
2909 (delete 'build)
2910 (add-before 'install 'fix-pom-versions
2911 (lambda _
2912 (substitute* "pom.xml"
2913 (("<maven.version>.*</maven.version>")
2914 ,(string-append "<maven.version>" (package-version maven)
2915 "</maven.version>"))
2916 (("2.11.0") ,(package-version java-commons-io))
2917 (("3.12.0") ,(package-version java-commons-lang3))
2918 (("1.6.1") ,(package-version maven-resolver-util))
2919 (("1.15") ,(package-version java-commons-codec)))))
2920 (replace 'install
2921 (install-pom-file "pom.xml")))))
2922 (propagated-inputs
2923 `(("maven-parent-pom" ,maven-parent-pom-30)))))
2924
2925 (define-public maven-enforcer-rules
2926 (package
2927 (inherit maven-enforcer-api)
2928 (name "maven-enforcer-rules")
2929 (arguments
2930 `(#:tests? #f; requires maven-plugin-testing-harness
2931 #:jar-name "maven-enforcer-rules.jar"
2932 #:source-dir "enforcer-rules/src/main/java"
2933 #:test-dir "enforcer-rules/src/test"
2934 #:phases
2935 (modify-phases %standard-phases
2936 (replace 'install
2937 (install-from-pom "enforcer-rules/pom.xml")))))
2938 (propagated-inputs
2939 (list maven-artifact
2940 maven-plugin-api
2941 maven-core
2942 maven-common-artifact-filters
2943 java-commons-codec
2944 java-commons-lang3
2945 maven-enforcer-api
2946 maven-resolver-util
2947 java-bsh
2948 maven-dependency-tree
2949 maven-3.0-compat
2950 maven-enforcer-parent-pom))))
2951
2952 (define-public maven-enforcer-plugin
2953 (package
2954 (inherit maven-enforcer-api)
2955 (name "maven-enforcer-plugin")
2956 (arguments
2957 `(#:tests? #f
2958 #:jar-name "maven-enforcer-plugin.jar"
2959 #:source-dir "maven-enforcer-plugin/src/main/java"
2960 #:phases
2961 (modify-phases %standard-phases
2962 (add-before 'build 'generate-plugin.xml
2963 (generate-plugin.xml "maven-enforcer-plugin/pom.xml"
2964 "enforcer"
2965 "maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/"
2966 (list
2967 (list "DisplayInfoMojo.java")
2968 (list "EnforceMojo.java"))))
2969 (replace 'install
2970 (install-from-pom "maven-enforcer-plugin/pom.xml")))))
2971 (propagated-inputs
2972 (list maven-artifact
2973 maven-plugin-api
2974 maven-core
2975 java-plexus-utils
2976 maven-enforcer-api
2977 maven-enforcer-rules
2978 maven-plugin-annotations
2979 maven-enforcer-parent-pom))))
2980
2981 (define-public maven-artifact-transfer
2982 (package
2983 (name "maven-artifact-transfer")
2984 (version "0.13.1")
2985 (source (origin
2986 (method url-fetch)
2987 (uri (string-append "mirror://apache/maven/shared/"
2988 "maven-artifact-transfer-" version
2989 "-source-release.zip"))
2990 (sha256
2991 (base32
2992 "0xl7lkksljacrhmvwf924zb6h0h5zw9494jaz9cz4hll0lrhlpz6"))))
2993 (build-system ant-build-system)
2994 (arguments
2995 `(#:tests? #f; require mockito 2
2996 #:jar-name "maven-artifact-transfer.jar"
2997 #:source-dir "src/main/java"
2998 #:phases
2999 (modify-phases %standard-phases
3000 (add-after 'build 'generate-metadata
3001 (lambda _
3002 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3003 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3004 "--source" "src/main/java"
3005 "--output" "build/classes/META-INF/plexus/components.xml"
3006 "--classes" "build/classes"
3007 "--descriptors" "build/classes/META-INF")
3008 #t))
3009 (add-after 'generate-metadata 'rebuild
3010 (lambda _
3011 (invoke "ant" "jar")
3012 #t))
3013 (replace 'install
3014 (install-from-pom "pom.xml")))))
3015 (propagated-inputs
3016 (list java-commons-codec
3017 maven-3.0-artifact
3018 maven-3.0-core
3019 maven-common-artifact-filters-3.1.0
3020 java-plexus-component-annotations
3021 java-plexus-utils
3022 java-slf4j-api
3023 java-plexus-classworlds
3024 java-sonatype-aether-api
3025 java-eclipse-aether-api
3026 java-eclipse-aether-util
3027 java-eclipse-aether-impl))
3028 (native-inputs
3029 (list unzip java-plexus-component-metadata))
3030 (home-page "https://maven.apache.org/shared/maven-artifact-transfer")
3031 (synopsis "API to install, deploy and resolve artifacts in Maven")
3032 (description "This package contains an API to install, deploy and resolve
3033 artifacts in Maven 3.")
3034 (license license:asl2.0)))
3035
3036 (define-public maven-install-plugin
3037 (package
3038 (name "maven-install-plugin")
3039 (version "3.0.0-M1")
3040 (source (origin
3041 (method url-fetch)
3042 (uri (string-append "mirror://apache/maven/plugins/"
3043 "maven-install-plugin-" version
3044 "-source-release.zip"))
3045 (sha256
3046 (base32
3047 "1l9iydxririrair0i5sk2iypn9wspzbb666lc0ddg20yyr8w39dm"))))
3048 (build-system ant-build-system)
3049 (arguments
3050 `(#:tests? #f; require maven-plugin-testing-harness
3051 #:jar-name "maven-install-plugin.jar"
3052 #:source-dir "src/main/java"
3053 #:phases
3054 (modify-phases %standard-phases
3055 (add-before 'build 'fix-pom
3056 (lambda _
3057 (substitute* "pom.xml"
3058 (("maven-project") "maven-core")
3059 (("maven-artifact-manager") "maven-artifact")
3060 (("2.0.6") "3.0"))
3061 #t))
3062 (add-before 'build 'generate-plugin.xml
3063 (generate-plugin.xml "pom.xml"
3064 "install"
3065 "src/main/java/org/apache/maven/plugins/install"
3066 (list
3067 (list "AbstractInstallMojo.java" "InstallFileMojo.java")
3068 (list "AbstractInstallMojo.java" "InstallMojo.java"))))
3069 (replace 'install
3070 (install-from-pom "pom.xml")))))
3071 (propagated-inputs
3072 `(("maven-artifact" ,maven-artifact)
3073 ("maven-plugin-api" ,maven-plugin-api)
3074 ("maven-compat" ,maven-compat)
3075 ("maven-artifact-transfer" ,maven-artifact-transfer)
3076 ("maven-plugins-pom-23" ,maven-plugins-pom-23)
3077 ("java-plexus-digest" ,java-plexus-digest)))
3078 (inputs
3079 (list maven-plugin-annotations java-slf4j-api))
3080 (native-inputs
3081 (list unzip))
3082 (home-page "https://maven.apache.org/plugin/maven-install-plugin")
3083 (synopsis "Maven's install plugin")
3084 (description "The Install Plugin is used during the install phase to add
3085 artifact(s) to the local repository. The Install Plugin uses the information
3086 in the POM (groupId, artifactId, version) to determine the proper location for
3087 the artifact within the local repository.
3088
3089 The local repository is the local cache where all artifacts needed for the
3090 build are stored. By default, it is located within the user's home directory
3091 (@file{~/.m2/repository}) but the location can be configured in
3092 @file{~/.m2/settings.xml} using the @code{<localRepository>} element.")
3093 (license license:asl2.0)))
3094
3095 (define-public maven-filtering
3096 (package
3097 (name "maven-filtering")
3098 (version "3.1.1")
3099 (source (origin
3100 (method url-fetch)
3101 (uri (string-append "https://archive.apache.org/dist/maven/"
3102 "shared/maven-filtering-" version
3103 "-source-release.zip"))
3104 (sha256
3105 (base32
3106 "09wrdhchnszd2l6h4z30ra0bv1a19qyjgac9z8zf1pn0m4nw05yz"))))
3107 (build-system ant-build-system)
3108 (arguments
3109 `(#:jar-name "maven-filtering.jar"
3110 #:source-dir "src/main/java"
3111 #:test-dir "src/test"
3112 ;; this test comes from plexus-build-api, not this package
3113 #:test-exclude (list "**/IncrementalResourceFilteringTest.java"
3114 "**/Abstract*.java")
3115 #:phases
3116 (modify-phases %standard-phases
3117 (add-after 'build 'generate-metadata
3118 (lambda _
3119 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3120 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3121 "--source" "src/main/java"
3122 "--output" "build/classes/META-INF/plexus/components.xml"
3123 "--classes" "build/classes"
3124 "--descriptors" "build/classes/META-INF")
3125 #t))
3126 (add-after 'generate-metadata 'rebuild
3127 (lambda _
3128 (invoke "ant" "jar")
3129 #t))
3130 (add-before 'check 'decompress-tests
3131 (lambda* (#:key inputs #:allow-other-keys)
3132 (let* ((build-api-source (assoc-ref inputs "java-plexus-build-api-origin"))
3133 (classes (string-append build-api-source "/src/test/java")))
3134 (copy-recursively classes "src/test/"))
3135 #t))
3136 (add-before 'check 'fix-directory
3137 (lambda _
3138 (substitute* (find-files "src/test" ".*.java$")
3139 (("target/test-classes/") "build/test-classes/"))))
3140 (add-before 'check 'copy-test-resources
3141 (lambda _
3142 (copy-recursively "src/test/resources" "build/test-classes/")
3143 #t))
3144 (replace 'install
3145 (install-from-pom "pom.xml")))))
3146 (propagated-inputs
3147 (list maven-3.0-core
3148 maven-shared-utils
3149 java-plexus-utils-3.2.1
3150 java-plexus-interpolation
3151 java-plexus-build-api
3152 maven-parent-pom-30))
3153 (inputs
3154 (list java-jsr305))
3155 (native-inputs
3156 `(("unzip" ,unzip)
3157 ("java-assertj" ,java-assertj)
3158 ("java-junit" ,java-junit)
3159 ("java-mockito" ,java-mockito-1)
3160 ("java-objenesis" ,java-objenesis)
3161 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
3162 ("java-plexus-build-api-origin" ,(package-source java-plexus-build-api))))
3163 (home-page "https://maven.apache.org/shared/maven-filtering")
3164 (synopsis "Shared component for all plugins that needs to filter resources")
3165 (description "This component provides an API to filter resources in Maven
3166 projects.")
3167 (license license:asl2.0)))
3168
3169 (define-public maven-resources-plugin
3170 (package
3171 (name "maven-resources-plugin")
3172 (version "3.1.0")
3173 (source (origin
3174 (method git-fetch)
3175 (uri (git-reference
3176 (url "https://github.com/apache/maven-resources-plugin")
3177 (commit (string-append "maven-resources-plugin-" version))))
3178 (file-name (git-file-name name version))
3179 (sha256
3180 (base32
3181 "090k5j2y7ak54czfjjg3v7pdmdlgd96fbs91d1fd3vslm9zzndg8"))))
3182 (build-system ant-build-system)
3183 (arguments
3184 `(#:jar-name "maven-resources-plugin.jar"
3185 #:source-dir "src/main/java"
3186 #:test-dir "src/test"
3187 #:tests? #f; test depends on maven-plugin-test-harness
3188 #:phases
3189 (modify-phases %standard-phases
3190 (add-before 'build 'generate-plugin.xml
3191 (generate-plugin.xml "pom.xml" "resources"
3192 "src/main/java/org/apache/maven/plugins/resources"
3193 (list
3194 (list "ResourcesMojo.java" "CopyResourcesMojo.java")
3195 (list "ResourcesMojo.java")
3196 (list "ResourcesMojo.java" "TestResourcesMojo.java"))))
3197 (replace 'install
3198 (install-from-pom "pom.xml")))))
3199 (propagated-inputs
3200 (list maven-plugin-api
3201 maven-core
3202 java-plexus-utils
3203 maven-filtering
3204 java-plexus-interpolation
3205 maven-parent-pom-31))
3206 (inputs
3207 (list maven-plugin-annotations java-commons-io))
3208 (native-inputs
3209 (list java-plexus-component-metadata))
3210 (home-page "https://maven.apache.org/plugins/maven-resources-plugin")
3211 (synopsis "Maven plugin to collect and install resources")
3212 (description "The Resources Plugin handles the copying of project resources
3213 to the output directory. There are two different kinds of resources: main
3214 resources and test resources. The difference is that the main resources are
3215 the resources associated to the main source code while the test resources are
3216 associated to the test source code.
3217
3218 Thus, this allows the separation of resources for the main source code and its
3219 unit tests.")
3220 (license license:asl2.0)))
3221
3222 (define-public maven-shared-incremental
3223 (package
3224 (name "maven-shared-incremental")
3225 (version "1.1")
3226 (source (origin
3227 (method url-fetch)
3228 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
3229 "maven-shared-incremental-" version
3230 "-source-release.zip"))
3231 (sha256
3232 (base32
3233 "03n4nfswyg9ahkz2zx4skcr3ghs01zh95g9js51hc75mfqx9b976"))))
3234 (build-system ant-build-system)
3235 (arguments
3236 `(#:jar-name "shared-incremental.java"
3237 #:source-dir "src/main/java"
3238 #:test-dir "src/test"
3239 #:phases
3240 (modify-phases %standard-phases
3241 (add-before 'build 'change-parent
3242 (lambda _
3243 (substitute* "pom.xml"
3244 (("19") "30"))
3245 #t))
3246 (add-before 'build 'fix-pom
3247 (lambda _
3248 (substitute* "pom.xml"
3249 (("plexus-component-api") "plexus-component-annotations"))
3250 #t))
3251 (add-after 'build 'generate-metadata
3252 (lambda _
3253 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
3254 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
3255 "--source" "src/main/java"
3256 "--output" "build/classes/META-INF/plexus/components.xml"
3257 "--classes" "build/classes"
3258 "--descriptors" "build/classes/META-INF")
3259 #t))
3260 (replace 'install
3261 (install-from-pom "pom.xml")))))
3262 (propagated-inputs
3263 (list maven-plugin-api maven-core maven-shared-utils
3264 java-plexus-component-annotations maven-parent-pom-30))
3265 (native-inputs
3266 (list unzip java-plexus-component-metadata))
3267 (home-page "https://maven.apache.org/shared/maven-shared-incremental")
3268 (synopsis "Maven Incremental Build support utilities")
3269 (description "This package contains various utility classes and plexus
3270 components for supporting incremental build functionality in maven plugins.")
3271 (license license:asl2.0)))
3272
3273 (define-public maven-compiler-plugin
3274 (package
3275 (name "maven-compiler-plugin")
3276 (version "3.8.1")
3277 (source (origin
3278 (method git-fetch)
3279 (uri (git-reference
3280 (url "https://github.com/apache/maven-compiler-plugin")
3281 (commit (string-append "maven-compiler-plugin-" version))))
3282 (file-name (git-file-name name version))
3283 (sha256
3284 (base32
3285 "0jkbq02vykd09ws8k9bzqxv6fjrpmir8gcxydbmj05kkhl242bma"))))
3286 (build-system ant-build-system)
3287 (arguments
3288 `(#:jar-name "maven-compiler-plugin.jar"
3289 #:source-dir "src/main/java"
3290 #:test-dir "src/test"
3291 #:tests? #f; test depends on maven-plugin-test-harness
3292 #:phases
3293 (modify-phases %standard-phases
3294 (add-before 'build 'generate-plugin.xml
3295 (generate-plugin.xml "pom.xml"
3296 "compiler"
3297 "src/main/java/org/apache/maven/plugin/compiler"
3298 (list
3299 (list "AbstractCompilerMojo.java" "CompilerMojo.java")
3300 (list "AbstractCompilerMojo.java" "TestCompilerMojo.java"))))
3301 (add-after 'generate-plugin.xml 'fix-plugin.xml
3302 (lambda _
3303 (substitute* "build/classes/META-INF/maven/plugin.xml"
3304 ;; These are defined in AbstractCompilerMojo.java, but not
3305 ;; parsed correctly in the previous phase
3306 (("DEFAULT_TARGET") "1.6")
3307 (("DEFAULT_SOURCE") "1.6"))
3308 #t))
3309 (replace 'install
3310 (install-from-pom "pom.xml")))))
3311 (propagated-inputs
3312 (list maven-plugin-api
3313 maven-artifact
3314 maven-core
3315 maven-shared-utils
3316 maven-shared-incremental
3317 java-plexus-java
3318 java-plexus-compiler-api
3319 java-plexus-compiler-manager
3320 java-plexus-compiler-javac
3321 maven-parent-pom-33))
3322 (inputs
3323 (list maven-plugin-annotations java-commons-io))
3324 (home-page "https://maven.apache.org/plugins/maven-compiler-plugin")
3325 (synopsis "Compiler plugin for Maven")
3326 (description "The Compiler Plugin is used to compile the sources of your
3327 project. Since 3.0, the default compiler is @code{javax.tools.JavaCompiler}
3328 (if you are using java 1.6) and is used to compile Java sources. If you want
3329 to force the plugin using javac, you must configure the plugin option
3330 @code{forceJavacCompilerUse}.
3331
3332 Also note that at present the default source setting is 1.6 and the default
3333 target setting is 1.6, independently of the JDK you run Maven with. You are
3334 highly encouraged to change these defaults by setting source and target as
3335 described in Setting the -source and -target of the Java Compiler.
3336
3337 Other compilers than javac can be used and work has already started on
3338 AspectJ, .NET, and C#.")
3339 (license license:asl2.0)))
3340
3341 (define-public java-surefire-logger-api
3342 (package
3343 (name "java-surefire-logger-api")
3344 (version "3.0.0-M4")
3345 (source (origin
3346 (method url-fetch)
3347 (uri (string-append "mirror://apache/maven/surefire/"
3348 "surefire-" version "-source-release.zip"))
3349 (sha256
3350 (base32
3351 "1s6d4pzk3bjm9l38mj9sfgbgmk145rppdj1dmqwc4d5105mr9q9w"))))
3352 (build-system ant-build-system)
3353 (arguments
3354 `(#:jar-name "java-surefire-logger-api.jar"
3355 #:source-dir "surefire-logger-api/src/main/java"
3356 #:tests? #f; require mockito 2
3357 #:phases
3358 (modify-phases %standard-phases
3359 (replace 'install
3360 (install-from-pom "surefire-logger-api/pom.xml")))))
3361 (propagated-inputs
3362 (list java-surefire-parent-pom))
3363 (native-inputs
3364 (list unzip))
3365 (home-page "https://maven.apache.org/surefire/surefire-logger-api")
3366 (synopsis "Interfaces and Utilities related only to internal SureFire Logger API")
3367 (description "This package contains interfaces and utilities that are
3368 internal to the SureFire Logger API. It is designed to have no dependency.")
3369 (license license:asl2.0)))
3370
3371 (define-public java-surefire-parent-pom
3372 (package
3373 (inherit java-surefire-logger-api)
3374 (name "java-surefire-parent-pom")
3375 (arguments
3376 `(#:tests? #f
3377 #:phases
3378 (modify-phases %standard-phases
3379 (delete 'configure)
3380 (delete 'build)
3381 (add-before 'install 'fix-pom-dependency-versions
3382 (lambda _
3383 (substitute* "pom.xml"
3384 (("1.11") ,(package-version java-commons-compress))
3385 (("1.13") ,(package-version java-commons-codec)))
3386 (substitute* "pom.xml"
3387 (("commonsLang3Version>.*")
3388 (string-append
3389 "commonsLang3Version>"
3390 ,(package-version java-commons-lang3)
3391 "</commonsLang3Version>\n"))
3392 (("commonsCompress>.*")
3393 (string-append
3394 "commonsCompress>"
3395 ,(package-version java-commons-compress)
3396 "</commonsCompress>\n"))
3397 (("commonsIoVersion>.*")
3398 (string-append
3399 "commonsIoVersion>"
3400 ,(package-version java-commons-io)
3401 "</commonsIoVersion>\n"))
3402 (("0.11.0") ,(package-version maven-artifact-transfer))
3403 (("1.0.3") ,(package-version java-plexus-java)))
3404 #t))
3405 (add-after 'install 'install-providers
3406 (install-pom-file "surefire-providers/pom.xml"))
3407 (replace 'install
3408 (install-pom-file "pom.xml")))))
3409 (propagated-inputs
3410 (list maven-parent-pom-33))))
3411
3412 (define-public java-surefire-api
3413 (package
3414 (inherit java-surefire-logger-api)
3415 (name "java-surefire-api")
3416 (arguments
3417 `(#:tests? #f
3418 #:jar-name "java-surefire-api.jar"
3419 #:source-dir "surefire-api/src/main/java"
3420 #:phases
3421 (modify-phases %standard-phases
3422 (add-before 'build 'copy-resources
3423 (lambda _
3424 (mkdir-p "build/classes")
3425 (copy-recursively "surefire-api/src/main/resources" "build/classes")
3426 #t))
3427 (add-before 'build 'prepare-shade
3428 (lambda* (#:key inputs #:allow-other-keys)
3429 (mkdir-p "build/classes")
3430 (with-directory-excursion "build/classes"
3431 (for-each
3432 (lambda (input)
3433 (for-each
3434 (lambda (jar-file)
3435 (invoke "jar" "xf" jar-file)
3436 (delete-file-recursively "META-INF"))
3437 (find-files (assoc-ref inputs input) ".*.jar$")))
3438 '("maven-shared-utils" "java-commons-codec")))
3439 #t))
3440 (add-after 'build 'shade
3441 (lambda* (#:key inputs #:allow-other-keys)
3442 (let ((jarjar
3443 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3444 (injar "java-surefire-api.jar")
3445 (outjar "java-surefire-api-shaded.jar"))
3446 (with-directory-excursion "build/jar"
3447 (with-output-to-file "rules"
3448 (lambda _
3449 (format #t (string-append
3450 "rule "
3451 "org.apache.maven.shared.utils.** "
3452 "org.apache.maven.surefire.shade.api."
3453 "org.apache.maven.shared.utils.@1~%"))
3454 (format #t (string-append
3455 "rule "
3456 "org.apache.commons.codec.** "
3457 "org.apache.maven.surefire.shade.api."
3458 "org.apache.commons.codec.@1~%"))))
3459 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3460 (delete-file injar)
3461 (rename-file outjar injar)))
3462 #t))
3463 (replace 'install
3464 (install-from-pom "surefire-api/pom.xml")))))
3465 (propagated-inputs
3466 (list java-surefire-logger-api java-commons-codec
3467 java-surefire-parent-pom maven-shared-utils-3.1))
3468 (inputs
3469 (list java-jsr305))
3470 (native-inputs
3471 (list unzip java-jarjar))
3472 (synopsis "Maven SureFire API")
3473 (description "This package contains the API to use Maven SureFire.")))
3474
3475 (define-public java-surefire-booter
3476 (package
3477 (inherit java-surefire-logger-api)
3478 (name "java-surefire-booter")
3479 (arguments
3480 `(#:tests? #f; require mockito 2
3481 #:jar-name "java-surefire-booter.jar"
3482 #:source-dir "surefire-booter/src/main/java"
3483 #:phases
3484 (modify-phases %standard-phases
3485 (add-before 'build 'fix-/bin/sh
3486 (lambda _
3487 (substitute* "surefire-booter/src/main/java/org/apache/maven/surefire/booter/PpidChecker.java"
3488 (("/bin/sh") (which "sh")))
3489 #t))
3490 (replace 'install
3491 (install-from-pom "surefire-booter/pom.xml")))))
3492 (propagated-inputs
3493 (list java-surefire-api java-commons-lang3 java-commons-io
3494 java-surefire-parent-pom))
3495 (inputs
3496 (list java-jsr305))
3497 (synopsis "API and Facilities used by forked tests running in JVM sub-process")
3498 (description "SureFire runs tests inside a forked JVM subprocess. This
3499 package contains an API and facilities used inside that forked JVM.")))
3500
3501 (define-public java-surefire-extensions-api
3502 (package
3503 (inherit java-surefire-logger-api)
3504 (name "java-surefire-extensions-api")
3505 (arguments
3506 `(#:tests? #f; requires mockito 2
3507 #:jar-name "java-surefire-extensions-api.jar"
3508 #:source-dir "surefire-extensions-api/src/main/java"
3509 #:phases
3510 (modify-phases %standard-phases
3511 (replace 'install
3512 (install-from-pom "surefire-extensions-api/pom.xml")))))
3513 (propagated-inputs
3514 (list java-surefire-api java-surefire-parent-pom))
3515 (inputs
3516 (list java-plexus-component-annotations))
3517 (synopsis "Extension API for Maven SureFire")
3518 (description "Surefire is a test framework project. This is the aggregator
3519 POM in Apache Maven Surefire project.")))
3520
3521 (define-public java-surefire-common-java5
3522 (package
3523 (inherit java-surefire-logger-api)
3524 (name "java-surefire-common-java5")
3525 (arguments
3526 `(#:jar-name "java-surefire-common-java5.jar"
3527 #:source-dir "surefire-providers/common-java5/src/main/java"
3528 #:test-dir "surefire-providers/common-java5/src/test"
3529 #:test-exclude (list
3530 ;; Abstract class
3531 "**/PojoStackTraceWriterTest.java"
3532 ;; Fails
3533 "**/SmartStackTraceParserTest.java")
3534 #:phases
3535 (modify-phases %standard-phases
3536 (add-before 'build 'prepare-shade
3537 (lambda* (#:key inputs #:allow-other-keys)
3538 (mkdir-p "build/classes")
3539 (with-directory-excursion "build/classes"
3540 (for-each
3541 (lambda (jar-file)
3542 (invoke "jar" "xf" jar-file)
3543 (delete-file-recursively "META-INF"))
3544 (find-files (assoc-ref inputs "maven-shared-utils") ".*.jar$")))
3545 #t))
3546 (add-after 'build 'shade
3547 (lambda* (#:key inputs #:allow-other-keys)
3548 (let ((jarjar
3549 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3550 (injar "java-surefire-common-java5.jar")
3551 (outjar "java-surefire-common-java5-shaded.jar"))
3552 (with-directory-excursion "build/jar"
3553 (with-output-to-file "rules"
3554 (lambda _
3555 (format #t (string-append
3556 "rule "
3557 "org.apache.maven.shared.utils.** "
3558 "org.apache.maven.surefire.shade.common."
3559 "org.apache.maven.shared.utils.@1~%"))))
3560 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3561 (delete-file injar)
3562 (rename-file outjar injar)))
3563 #t))
3564 (replace 'install
3565 (install-from-pom "surefire-providers/common-java5/pom.xml")))))
3566 (propagated-inputs
3567 (list maven-shared-utils-3.1 java-surefire-api
3568 java-surefire-parent-pom))
3569 (native-inputs
3570 (list unzip java-jarjar java-junit java-fest-assert))
3571 (synopsis "Common java5 facilities for Maven SureFire")
3572 (description "This package contains shared Java 5 code for all providers.")))
3573
3574 (define-public java-surefire-common-junit3
3575 (package
3576 (inherit java-surefire-logger-api)
3577 (name "java-surefire-common-junit3")
3578 (arguments
3579 `(#:jar-name "java-surefire-common-junit3.jar"
3580 #:source-dir "surefire-providers/common-junit3/src/main/java"
3581 #:test-dir "surefire-providers/common-junit3/src/test"
3582 #:phases
3583 (modify-phases %standard-phases
3584 (replace 'install
3585 (install-from-pom "surefire-providers/common-junit3/pom.xml")))))
3586 (propagated-inputs
3587 (list java-junit java-surefire-api java-surefire-parent-pom))
3588 (native-inputs
3589 (list unzip java-junit java-fest-assert))
3590 (synopsis "Shared JUnit3 provider code for Maven SureFire")
3591 (description "This package contains shared code for all JUnit providers.")))
3592
3593 (define-public java-surefire-common-junit4
3594 (package
3595 (inherit java-surefire-logger-api)
3596 (name "java-surefire-common-junit4")
3597 (arguments
3598 `(#:jar-name "java-surefire-common-junit4.jar"
3599 #:source-dir "surefire-providers/common-junit4/src/main/java"
3600 #:tests? #f; tests require junit 4.0
3601 #:phases
3602 (modify-phases %standard-phases
3603 (replace 'install
3604 (install-from-pom "surefire-providers/common-junit4/pom.xml")))))
3605 (propagated-inputs
3606 (list java-junit
3607 java-surefire-api
3608 java-surefire-common-java5
3609 java-surefire-common-junit3
3610 maven-shared-utils-3.1
3611 java-surefire-parent-pom))
3612 (synopsis "Shared JUnit4 provider code for Maven SureFire")
3613 (description "This package contains shared code for all JUnit providers,
3614 starting from JUnit 4.")))
3615
3616 (define-public java-surefire-junit4
3617 (package
3618 (inherit java-surefire-logger-api)
3619 (name "java-surefire-junit4")
3620 (arguments
3621 `(;#:tests? #f
3622 #:jar-name "java-surefire-junit4.jar"
3623 #:source-dir "surefire-providers/surefire-junit4/src/main/java"
3624 #:test-dir "surefire-providers/surefire-junit4/src/test"
3625 #:modules ((guix build ant-build-system)
3626 (guix build utils)
3627 (guix build java-utils)
3628 (sxml simple))
3629 #:phases
3630 (modify-phases %standard-phases
3631 (add-before 'install 'regenerate-own-pom
3632 ;; Surefire struggles resolving artifacts because of this pom
3633 ;; file, resulting in a NullPointerException when collecting
3634 ;; Artifacts (and a "Failure detected." message from
3635 ;; DefaultArtifactResolver). Replace the pom file with a much
3636 ;; simpler one. Everything is shaded anyway (as used to be the
3637 ;; case in 2.22), so there will not be missing dependencies.
3638 (generate-pom.xml
3639 "surefire-providers/surefire-junit4/pom.xml"
3640 "org.apache.maven.surefire" "surefire-junit4"
3641 ,(package-version java-surefire-common-java5)
3642 #:name "Surefire JUnit4"))
3643 (add-before 'build 'copy-resources
3644 (lambda _
3645 (mkdir-p "build/classes")
3646 (copy-recursively "surefire-providers/surefire-junit4/src/main/resources"
3647 "build/classes")
3648 #t))
3649 (add-before 'build 'prepare-shade
3650 (lambda* (#:key inputs #:allow-other-keys)
3651 (mkdir-p "build/classes")
3652 (with-directory-excursion "build/classes"
3653 (for-each
3654 (lambda (input)
3655 (for-each
3656 (lambda (jar-file)
3657 (invoke "jar" "xf" jar-file)
3658 (delete-file-recursively "META-INF"))
3659 (find-files (assoc-ref inputs input) ".*.jar$")))
3660 '("maven-shared-utils" "java-surefire-common-java5"
3661 "java-surefire-common-junit3" "java-surefire-common-junit4"
3662 "java-surefire-api")))
3663 #t))
3664 (add-after 'build 'shade
3665 (lambda* (#:key inputs #:allow-other-keys)
3666 (let ((jarjar
3667 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3668 (injar "java-surefire-junit4.jar")
3669 (outjar "java-surefire-junit4-shaded.jar"))
3670 (with-directory-excursion "build/jar"
3671 (with-output-to-file "rules"
3672 (lambda _
3673 (format #t (string-append
3674 "rule "
3675 "org.apache.maven.shared.utils.** "
3676 "org.apache.maven.surefire.shade."
3677 "org.apache.maven.shared.utils.@1~%"))))
3678 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3679 (delete-file injar)
3680 (rename-file outjar injar)))
3681 #t))
3682 (replace 'install
3683 (install-from-pom "surefire-providers/surefire-junit4/pom.xml")))))
3684 (propagated-inputs
3685 (list java-junit java-surefire-parent-pom))
3686 (inputs
3687 (list java-surefire-common-junit4 java-surefire-common-junit3
3688 java-surefire-common-java5 java-surefire-api))
3689 (native-inputs
3690 (list java-jarjar unzip java-junit java-hamcrest-all
3691 java-fest-assert))
3692 (synopsis "SureFire JUnit 4.0+ runner")
3693 (description "This package contains the runner for tests run on a forked
3694 JVM, using JUnit 4.0 or later.")))
3695
3696 (define-public maven-surefire-common
3697 (package
3698 (inherit java-surefire-logger-api)
3699 (name "maven-surefire-common")
3700 (arguments
3701 `(#:tests? #f; require mockito 2
3702 #:jar-name "maven-surefire-common.jar"
3703 #:source-dir "maven-surefire-common/src/main/java"
3704 #:phases
3705 (modify-phases %standard-phases
3706 (add-before 'build 'prepare-shade
3707 (lambda* (#:key inputs #:allow-other-keys)
3708 (mkdir-p "build/classes")
3709 (with-directory-excursion "build/classes"
3710 (for-each
3711 (lambda (input)
3712 (for-each
3713 (lambda (jar-file)
3714 (invoke "jar" "xf" jar-file)
3715 (delete-file-recursively "META-INF"))
3716 (find-files (assoc-ref inputs input) ".*.jar$")))
3717 '("maven-shared-utils" "java-commons-io" "java-commons-lang3"
3718 "java-commons-compress" "maven-common-artifact-filters")))
3719 #t))
3720 (add-after 'build 'shade
3721 (lambda* (#:key inputs #:allow-other-keys)
3722 (let ((jarjar
3723 (car (find-files (assoc-ref inputs "java-jarjar") ".*.jar$")))
3724 (injar "maven-surefire-common.jar")
3725 (outjar "maven-surefire-common-shaded.jar"))
3726 (with-directory-excursion "build/jar"
3727 (with-output-to-file "rules"
3728 (lambda _
3729 (format #t (string-append
3730 "rule "
3731 "org.apache.maven.shared.utils.** "
3732 "org.apache.maven.surefire.shade.common."
3733 "org.apache.maven.shared.utils.@1~%"))
3734 (format #t (string-append
3735 "rule "
3736 "org.apache.commons.io.** "
3737 "org.apache.maven.surefire.shade.common."
3738 "org.apache.commons.io.@1~%"))
3739 (format #t (string-append
3740 "rule "
3741 "org.apache.commons.lang3.** "
3742 "org.apache.maven.surefire.shade.common."
3743 "org.apache.commons.lang3.@1~%"))
3744 (format #t (string-append
3745 "rule "
3746 "org.apache.commons.compress.** "
3747 "org.apache.maven.surefire.shade.common."
3748 "org.apache.commons.compress.@1~%"))))
3749 (invoke "java" "-jar" jarjar "process" "rules" injar outjar)
3750 (delete-file injar)
3751 (rename-file outjar injar)))
3752 #t))
3753 (add-before 'install 'fix-pom
3754 (lambda _
3755 (substitute* "maven-surefire-common/pom.xml"
3756 (("maven-toolchain") "maven-core"))
3757 #t))
3758 (replace 'install
3759 (install-from-pom "maven-surefire-common/pom.xml")))))
3760 (propagated-inputs
3761 (list java-surefire-api
3762 java-surefire-extensions-api
3763 java-surefire-booter
3764 maven-core
3765 maven-plugin-annotations
3766 maven-common-artifact-filters
3767 maven-artifact-transfer
3768 java-plexus-java
3769 java-jansi
3770 java-commons-io
3771 java-commons-lang3
3772 java-commons-compress
3773 maven-shared-utils-3.1
3774 java-surefire-parent-pom))
3775 (inputs
3776 (list java-jsr305))
3777 (native-inputs
3778 (list unzip java-jarjar))
3779 (synopsis "API used in Surefire and Failsafe MOJO")
3780 (description "This package contains an API used in SureFire and Failsafe
3781 MOJO.")))
3782
3783 (define-public maven-surefire-plugin
3784 (package
3785 (inherit java-surefire-logger-api)
3786 (name "maven-surefire-plugin")
3787 (arguments
3788 `(#:jar-name "maven-surefire-plugin.jar"
3789 #:source-dir "maven-surefire-plugin/src/main/java"
3790 #:tests? #f; test depends on maven-plugin-test-harness
3791 #:phases
3792 (modify-phases %standard-phases
3793 (add-before 'build 'generate-plugin.xml
3794 (generate-plugin.xml "maven-surefire-plugin/pom.xml"
3795 "surefire"
3796 "."
3797 (list
3798 (list
3799 "maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/AbstractSurefireMojo.java"
3800 "maven-surefire-plugin/src/main/java/org/apache/maven/plugin/surefire/SurefirePlugin.java"))))
3801 (replace 'install
3802 (install-from-pom "maven-surefire-plugin/pom.xml")))))
3803 (propagated-inputs
3804 (list maven-surefire-common maven-core))
3805 (native-inputs
3806 (list maven-plugin-annotations unzip))
3807 (synopsis "SureFire Maven plugin that runs tests")
3808 (description "The Surefire Plugin is used during the test phase of the
3809 build lifecycle to execute the unit tests of an application. It generates
3810 reports in two different file formats, plain text and xml.")))
3811
3812 (define-public maven-jar-plugin
3813 (package
3814 (name "maven-jar-plugin")
3815 (version "3.2.0")
3816 (source (origin
3817 (method git-fetch)
3818 (uri (git-reference
3819 (url "https://github.com/apache/maven-jar-plugin")
3820 (commit (string-append "maven-jar-plugin-" version))))
3821 (file-name (git-file-name name version))
3822 (sha256
3823 (base32
3824 "04y2rlmcabmc55ljqlkgbb5xx94a59cz1dvrnpfj1vzz024pqkyg"))))
3825 (build-system ant-build-system)
3826 (arguments
3827 `(#:jar-name "maven-jar-plugin.jar"
3828 #:source-dir "src/main/java"
3829 #:tests? #f; test depends on maven-plugin-test-harness
3830 #:phases
3831 (modify-phases %standard-phases
3832 (add-before 'build 'generate-plugin.xml
3833 (generate-plugin.xml "pom.xml"
3834 "jar"
3835 "src/main/java/org/apache/maven/plugins/jar"
3836 (list
3837 (list "AbstractJarMojo.java" "JarMojo.java")
3838 (list "AbstractJarMojo.java" "TestJarMojo.java"))))
3839 (replace 'install
3840 (install-from-pom "pom.xml")))))
3841 (propagated-inputs
3842 (list maven-archiver
3843 maven-3.0-artifact
3844 maven-3.0-core
3845 maven-3.0-plugin-api
3846 maven-file-management
3847 maven-shared-utils
3848 java-plexus-archiver
3849 java-plexus-utils))
3850 (inputs
3851 (list maven-plugin-annotations))
3852 (home-page "https://maven.apache.org/plugins/maven-jar-plugin")
3853 (synopsis "Jar builder plugin for Maven")
3854 (description "This plugin provides the capability to build jars. If you
3855 would like to sign jars please use the Maven Jarsigner Plugin instead.")
3856 (license license:asl2.0)))