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