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