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