gnu: Add java-eclipse-aether-test-util.
[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
37 (define-public java-plexus-component-metadata
38 (package
39 (inherit java-plexus-container-default)
40 (name "java-plexus-component-metadata")
41 (arguments
42 `(#:jar-name "plexus-component-metadata.jar"
43 #:source-dir "src/main/java"
44 #:test-dir "src/test"
45 #:jdk ,icedtea-8
46 #:phases
47 (modify-phases %standard-phases
48 (add-before 'configure 'chdir
49 (lambda _
50 (chdir "plexus-component-metadata")
51 #t))
52 (add-before 'build 'copy-resources
53 (lambda _
54 (copy-recursively "src/main/resources"
55 "build/classes/")
56 #t)))))
57 (propagated-inputs
58 `(("java-plexus-container-default" ,java-plexus-container-default)
59 ("java-plexu-component-annotations" ,java-plexus-component-annotations)
60 ("java-plexus-utils" ,java-plexus-utils)
61 ("java-plexus-cli" ,java-plexus-cli)
62 ("java-plexus-classworlds" ,java-plexus-classworlds)
63 ("maven-plugin-api" ,maven-plugin-api)
64 ("maven-plugin-annotations" ,maven-plugin-annotations)
65 ("maven-core-bootstrap" ,maven-core-bootstrap)
66 ("maven-model" ,maven-model)
67 ("java-commons-cli" ,java-commons-cli)
68 ("java-qdox" ,java-qdox)
69 ("java-jdom2" ,java-jdom2)
70 ("java-asm" ,java-asm)))
71 (native-inputs
72 `(("java-junit" ,java-junit)
73 ("java-guava" ,java-guava)
74 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
75 (synopsis "Inversion-of-control container for Maven")
76 (description "The Plexus project provides a full software stack for creating
77 and executing software projects. Based on the Plexus container, the
78 applications can utilise component-oriented programming to build modular,
79 reusable components that can easily be assembled and reused. This package
80 provides the Maven plugin generating the component metadata.")))
81
82 (define-public maven-resolver-api
83 (package
84 (name "maven-resolver-api")
85 (version "1.3.1")
86 (source (origin
87 (method git-fetch)
88 (uri (git-reference
89 (url "https://github.com/apache/maven-resolver")
90 (commit (string-append "maven-resolver-" version))))
91 (file-name (git-file-name name version))
92 (sha256
93 (base32
94 "1x1gll8nkfl6zgnab78fxxvvhg42b2grxgdh1wp2h4qxsjkxg93d"))))
95 (build-system ant-build-system)
96 (arguments
97 `(#:jar-name "maven-resolver-api.jar"
98 #:source-dir "maven-resolver-api/src/main/java"
99 #:test-dir "maven-resolver-api/src/test"
100 #:phases
101 (modify-phases %standard-phases
102 (replace 'install
103 (install-from-pom "maven-resolver-api/pom.xml")))))
104 (native-inputs
105 `(("java-asm" ,java-asm)
106 ("java-cglib" ,java-cglib)
107 ("java-hamcrest-core" ,java-hamcrest-core)
108 ("java-junit" ,java-junit)
109 ("java-mockito-1" ,java-mockito-1)
110 ("java-objenesis" ,java-objenesis)))
111 (propagated-inputs
112 `(("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
113 (home-page "https://github.com/apache/maven-resolver")
114 (synopsis "Maven repository system API")
115 (description "This package contains the API for the maven repository system.")
116 (license license:asl2.0)))
117
118 (define maven-resolver-parent-pom
119 (package
120 (inherit maven-resolver-api)
121 (name "maven-resolver-parent-pom")
122 (arguments
123 `(#:tests? #f
124 #:phases
125 (modify-phases %standard-phases
126 (delete 'configure)
127 (delete 'build)
128 (add-before 'install 'fix-pom
129 (lambda _
130 (substitute* "pom.xml"
131 (("<classifier>no_aop</classifier>") ""))
132 #t))
133 (replace 'install
134 (install-pom-file "pom.xml")))))
135 (propagated-inputs '())))
136
137 (define-public maven-resolver-spi
138 (package
139 (inherit maven-resolver-api)
140 (name "maven-resolver-spi")
141 (arguments
142 `(#:jar-name "maven-resolver-spi.jar"
143 #:source-dir "maven-resolver-spi/src/main/java"
144 #:test-dir "maven-resolver-spi/src/test"
145 #:phases
146 (modify-phases %standard-phases
147 (replace 'install
148 (install-from-pom "maven-resolver-spi/pom.xml")))))
149 (propagated-inputs
150 `(("maven-resolver-api" ,maven-resolver-api)))
151 (synopsis "Maven repository system SPI")
152 (description "This package contains the service provider interface (SPI)
153 for repository system implementations and repository connectors.")))
154
155 (define-public maven-resolver-test-util
156 (package
157 (inherit maven-resolver-api)
158 (name "maven-resolver-test-util")
159 (arguments
160 `(#:jar-name "maven-resolver-test-util.jar"
161 #:source-dir "maven-resolver-test-util/src/main/java"
162 #:test-dir "maven-resolver-test-util/src/test"
163 #:jdk ,icedtea-8))
164 (inputs
165 `(("maven-resolver-api" ,maven-resolver-api)
166 ("maven-resolver-spi" ,maven-resolver-spi)))
167 (synopsis "Utility classes for testing the maven repository system")
168 (description "This package contains a collection of utility classes to
169 ease testing of the repository system.")))
170
171 (define-public maven-resolver-util
172 (package
173 (inherit maven-resolver-api)
174 (name "maven-resolver-util")
175 (arguments
176 `(#:jar-name "maven-resolver-util.jar"
177 #:source-dir "maven-resolver-util/src/main/java"
178 #:test-dir "maven-resolver-util/src/test"
179 #:phases
180 (modify-phases %standard-phases
181 (replace 'install
182 (install-from-pom "maven-resolver-util/pom.xml")))))
183 (propagated-inputs
184 `(("maven-resolver-api" ,maven-resolver-api)))
185 (native-inputs
186 `(("java-junit" ,java-junit)
187 ("java-hamcrest-core" ,java-hamcrest-core)
188 ("maven-resolver-test-util" ,maven-resolver-test-util)))
189 (synopsis "Utility classes for the maven repository system")
190 (description "This package contains a collection of utility classes to
191 ease usage of the repository system.")))
192
193 (define-public maven-resolver-connector-basic
194 (package
195 (inherit maven-resolver-api)
196 (name "maven-resolver-connector-basic")
197 (arguments
198 `(#:jar-name "maven-resolver-connector-basic.jar"
199 #:source-dir "maven-resolver-connector-basic/src/main/java"
200 #:test-dir "maven-resolver-connector-basic/src/test"
201 #:jdk ,icedtea-8
202 #:phases
203 (modify-phases %standard-phases
204 (add-before 'build 'generate-sisu
205 (lambda _
206 (mkdir-p "build/classes/META-INF/sisu")
207 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
208 (lambda _
209 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
210 #t))
211 (replace 'install
212 (install-from-pom "maven-resolver-connector-basic/pom.xml")))))
213 (propagated-inputs
214 `(("maven-resolver-api" ,maven-resolver-api)
215 ("maven-resolver-spi" ,maven-resolver-spi)
216 ("maven-resolver-util" ,maven-resolver-util)
217 ("java-slf4j-api" ,java-slf4j-api)))
218 (native-inputs
219 `(("java-javax-inject" ,java-javax-inject)
220 ("java-junit" ,java-junit)
221 ("maven-resolver-test-util" ,maven-resolver-test-util)))
222 (synopsis "Maven repository connector implementation")
223 (description "This package contains a repository connector implementation
224 for repositories using URI-based layouts.")))
225
226 (define-public maven-resolver-impl
227 (package
228 (inherit maven-resolver-api)
229 (name "maven-resolver-impl")
230 (arguments
231 `(#:jar-name "maven-resolver-impl.jar"
232 #:source-dir "maven-resolver-impl/src/main/java"
233 #:test-dir "maven-resolver-impl/src/test"
234 #:phases
235 (modify-phases %standard-phases
236 (add-before 'build 'generate-sisu
237 (lambda _
238 (mkdir-p "build/classes/META-INF/sisu")
239 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
240 (lambda _
241 (display
242 (string-append
243 ;; Build this list by looking for files containing "@Named"
244 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
245 "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
246 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
247 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
248 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
249 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
250 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
251 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
252 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
253 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
254 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
255 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
256 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
257 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
258 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
259 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
260 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
261 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
262 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
263 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
264 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
265 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
266 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
267 #t))
268 (replace 'install
269 (install-from-pom "maven-resolver-impl/pom.xml")))))
270 (propagated-inputs
271 `(("maven-resolver-api" ,maven-resolver-api)
272 ("maven-resolver-spi" ,maven-resolver-spi)
273 ("maven-resolver-util" ,maven-resolver-util)
274 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
275 ("java-javax-inject" ,java-javax-inject)
276 ("java-guice" ,java-guice)
277 ("java-slf4j-api" ,java-slf4j-api)
278 ("maven-resolver-parent-pom" ,maven-resolver-parent-pom)))
279 (native-inputs
280 `(("java-junit" ,java-junit)
281 ("maven-resolver-test-util" ,maven-resolver-test-util)))))
282
283 (define-public maven-resolver-transport-wagon
284 (package
285 (inherit maven-resolver-api)
286 (name "maven-resolver-transport-wagon")
287 (arguments
288 `(#:jar-name "maven-resolver-transport-wagon.jar"
289 #:source-dir "maven-resolver-transport-wagon/src/main/java"
290 #:test-dir "maven-resolver-transport-wagon/src/test"
291 #:jdk ,icedtea-8
292 #:phases
293 (modify-phases %standard-phases
294 (add-before 'build 'generate-sisu
295 (lambda _
296 (mkdir-p "build/classes/META-INF/sisu")
297 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
298 (lambda _
299 (display "org.eclipse.aether.transport.wagon.WagonTransporterFactory\n")))
300 #t))
301 (add-before 'build 'generate-components.xml
302 (lambda _
303 (mkdir-p "build/classes/META-INF/plexus")
304 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
305 (lambda _
306 (display
307 (string-append
308 "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
309 <component-set>
310 <components>
311 <component>
312 <role>org.eclipse.aether.transport.wagon.WagonConfigurator</role>
313 <role-hint>plexus</role-hint>
314 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator</implementation>
315 <description />
316 <isolated-realm>false</isolated-realm>
317 <requirements>
318 <requirement>
319 <role>org.codehaus.plexus.PlexusContainer</role>
320 <role-hint />
321 <field-name>container</field-name>
322 </requirement>
323 </requirements>
324 </component>
325 <component>
326 <role>org.eclipse.aether.transport.wagon.WagonProvider</role>
327 <role-hint>plexus</role-hint>
328 <implementation>org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider</implementation>
329 <description />
330 <isolated-realm>false</isolated-realm>
331 <requirements>
332 <requirement>
333 <role>org.codehaus.plexus.PlexusContainer</role>
334 <role-hint />
335 <field-name>container</field-name>
336 </requirement>
337 </requirements>
338 </component>
339 </components>
340 </component-set>\n"))))
341 #t)))))
342 (inputs
343 `(("maven-resolver-api" ,maven-resolver-api)
344 ("maven-resolver-spi" ,maven-resolver-spi)
345 ("maven-resolver-util" ,maven-resolver-util)
346 ("java-javax-inject" ,java-javax-inject)
347 ("mavne-wagon-provider-api" ,maven-wagon-provider-api)
348 ("java-plexus-component-annotation" ,java-plexus-component-annotations)
349 ("java-plexus-classworld" ,java-plexus-classworlds)
350 ("java-plexus-plexus-util" ,java-plexus-utils)
351 ("java-slf4j-api" ,java-slf4j-api)
352 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
353 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
354 (native-inputs
355 `(("java-junit" ,java-junit)
356 ("java-hamcrest-core" ,java-hamcrest-core)
357 ("maven-resolver-test-util" ,maven-resolver-test-util)
358 ("java-guava" ,java-guava)
359 ("java-cglib" ,java-cglib)
360 ("java-asm" ,java-asm)
361 ("java-aopalliance" ,java-aopalliance)
362 ("java-guice" ,java-guice)))
363 (synopsis "Transport implementation for Maven")
364 (description "This package contains a transport implementation based on
365 Maven Wagon, for use in Maven.")))
366
367 ;; aether is the parent project that was forked into maven-resolver. It used
368 ;; to be used with older versions of Maven, and is still required for some
369 ;; plugins and their dependencies. This version is required for the plugins,
370 ;; even though there are newer versions of this project.
371 (define-public java-sonatype-aether-api
372 (package
373 (name "java-sonatype-aether-api")
374 (version "1.7")
375 (source (origin
376 (method git-fetch)
377 (uri (git-reference
378 (url "https://github.com/sonatype/sonatype-aether")
379 (commit (string-append "aether-" version))))
380 (file-name (git-file-name name version))
381 (sha256
382 (base32
383 "1wn9fv91n40bvlwbzy0dmh0xqibxl2mpzpnbibhqss3c0zlr1ccq"))))
384 (build-system ant-build-system)
385 (arguments
386 `(#:jar-name "aether-api.jar"
387 #:source-dir "aether-api/src/main/java"
388 #:test-dir "aether-api/src/test"
389 #:phases
390 (modify-phases %standard-phases
391 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
392 (replace 'install (install-from-pom "aether-api/pom.xml")))))
393 (propagated-inputs
394 `(("java-sonatype-forge-parent-pom" ,java-sonatype-forge-parent-pom-6)))
395 (native-inputs `(("java-junit" ,java-junit)))
396 (home-page "https://github.com/sonatype/sonatype-aether")
397 (synopsis "Maven repository system API")
398 (description "This package contains the API for the maven repository system.")
399 (license license:asl2.0)))
400
401 (define-public java-sonatype-aether-spi
402 (package
403 (inherit java-sonatype-aether-api)
404 (name "java-sonatype-aether-spi")
405 (arguments
406 `(#:jar-name "aether-spi.jar"
407 #:source-dir "aether-spi/src/main/java"
408 #:tests? #f; no tests
409 #:phases
410 (modify-phases %standard-phases
411 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
412 (propagated-inputs
413 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
414 (synopsis "Maven repository system SPI")
415 (description "This package contains the service provider interface (SPI)
416 for repository system implementations and repository connectors.")))
417
418 (define-public java-sonatype-aether-test-util
419 (package
420 (inherit java-sonatype-aether-api)
421 (name "java-sonatype-aether-test-util")
422 (arguments
423 `(#:jar-name "java-sonatype-aether-test-util.jar"
424 #:source-dir "aether-test-util/src/main/java"
425 #:test-dir "aether-test-util/src/test"))
426 (inputs
427 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
428 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)))
429 (synopsis "Utility classes for testing the maven repository system")
430 (description "This package contains a collection of utility classes to
431 ease testing of the repository system.")))
432
433 (define-public java-sonatype-aether-util
434 (package
435 (inherit java-sonatype-aether-api)
436 (name "java-sonatype-aether-util")
437 (arguments
438 `(#:jar-name "aether-util.jar"
439 #:source-dir "aether-util/src/main/java"
440 #:test-dir "aether-util/src/test"
441 #:phases
442 (modify-phases %standard-phases
443 (replace 'install (install-from-pom "aether-util/pom.xml")))))
444 (propagated-inputs
445 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)))
446 (native-inputs
447 `(("java-junit" ,java-junit)
448 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))
449 (synopsis "Utility classes for the maven repository system")
450 (description "This package contains a collection of utility classes to
451 ease usage of the repository system.")))
452
453 (define-public java-sonatype-aether-impl
454 (package
455 (inherit java-sonatype-aether-api)
456 (name "java-sonatype-aether-impl")
457 (arguments
458 `(#:jar-name "aether-impl.jar"
459 #:source-dir "aether-impl/src/main/java"
460 #:test-dir "aether-impl/src/test"
461 #:phases
462 (modify-phases %standard-phases
463 (add-before 'install 'fix-pom
464 (lambda _
465 (substitute* "aether-impl/pom.xml"
466 (("org.sonatype.sisu") "org.codehaus.plexus")
467 (("sisu-inject-plexus") "plexus-container-default"))
468 #t))
469 (add-after 'build 'generate-metadata
470 (lambda _
471 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
472 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
473 "--source" "src/main/java"
474 "--output" "build/classes/META-INF/plexus/components.xml"
475 "--classes" "build/classes"
476 "--descriptors" "build/classes/META-INF")
477 #t))
478 (add-after 'generate-metadata 'rebuild
479 (lambda _
480 (invoke "ant" "jar")
481 #t))
482 (replace 'install (install-from-pom "aether-impl/pom.xml")))))
483 (propagated-inputs
484 `(("java-sonatype-aether-api" ,java-sonatype-aether-api)
485 ("java-sonatype-aether-spi" ,java-sonatype-aether-spi)
486 ("java-sonatype-aether-util" ,java-sonatype-aether-util)
487 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
488 ("java-plexus-container-default" ,java-plexus-container-default)
489 ("java-slf4j-api" ,java-slf4j-api)))
490 (native-inputs
491 `(("java-junit" ,java-junit)
492 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
493 ("java-sonatype-aether-test-util" ,java-sonatype-aether-test-util)))))
494
495 ;; Again, this old version is required by some maven plugins
496 (define-public java-eclipse-aether-api
497 (package
498 (name "java-eclipse-aether-api")
499 (version "1.0.2")
500 (source (origin
501 (method git-fetch)
502 (uri (git-reference
503 (url "https://github.com/eclipse/aether-core")
504 (commit "aether-1.0.2.v20150114")))
505 (file-name (git-file-name name version))
506 (sha256
507 (base32
508 "14d336nn0kh5ddf23j37va3hd8gaai19llrpxhf4bcc7g7sgdqxs"))))
509 (build-system ant-build-system)
510 (arguments
511 `(#:jar-name "aether-api.jar"
512 #:source-dir "aether-api/src/main/java"
513 #:test-dir "aether-api/src/test"
514 #:phases
515 (modify-phases %standard-phases
516 (add-before 'install 'install-parent (install-pom-file "pom.xml"))
517 (replace 'install (install-from-pom "aether-api/pom.xml")))))
518 (native-inputs `(("java-junit" ,java-junit)))
519 (home-page "https://github.com/sonatype/sonatype-aether")
520 (synopsis "Maven repository system API")
521 (description "This package contains the API for the maven repository system.")
522 (license license:asl2.0)))
523
524 (define-public java-eclipse-aether-spi
525 (package
526 (inherit java-eclipse-aether-api)
527 (name "java-eclipse-aether-spi")
528 (arguments
529 `(#:jar-name "aether-spi.jar"
530 #:source-dir "aether-spi/src/main/java"
531 #:test-dir "aether-spi/src/test"
532 #:phases
533 (modify-phases %standard-phases
534 (replace 'install (install-from-pom "aether-spi/pom.xml")))))
535 (propagated-inputs
536 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)))
537 (synopsis "Maven repository system SPI")
538 (description "This package contains the service provider interface (SPI)
539 for repository system implementations and repository connectors.")))
540
541 (define-public java-eclipse-aether-test-util
542 (package
543 (inherit java-eclipse-aether-api)
544 (name "java-eclipse-aether-test-util")
545 (arguments
546 `(#:jar-name "aether-test-util.jar"
547 #:source-dir "aether-test-util/src/main/java"
548 #:test-dir "aether-test-util/src/test"
549 #:phases
550 (modify-phases %standard-phases
551 (replace 'install (install-from-pom "aether-util/pom.xml")))))
552 (propagated-inputs
553 `(("java-eclipse-aether-api" ,java-eclipse-aether-api)
554 ("java-eclipse-aether-spi" ,java-eclipse-aether-spi)))
555 (synopsis "Utility classes for testing the maven repository system")
556 (description "This package contains a collection of utility classes to
557 ease testing of the repository system.")))
558
559 (define-public maven-shared-utils
560 (package
561 (name "maven-shared-utils")
562 (version "3.2.1")
563 (source (origin
564 (method url-fetch)
565 (uri (string-append "mirror://apache/maven/shared/"
566 "maven-shared-utils-" version "-source-release.zip"))
567 (sha256
568 (base32
569 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
570 (build-system ant-build-system)
571 (arguments
572 `(#:jar-name "maven-shared-utils.jar"
573 #:source-dir "src/main/java"
574 #:phases
575 (modify-phases %standard-phases
576 (add-before 'build 'fix-/bin/sh-invocation
577 (lambda _
578 (substitute* (find-files "src" ".*.java$")
579 (("/bin/sh") (which "sh")))
580 #t))
581 (add-before 'check 'remove-cyclic-dep
582 (lambda _
583 (delete-file
584 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
585 #t))
586 (replace 'install
587 (install-from-pom "pom.xml")))))
588 (propagated-inputs
589 `(("java-jansi" ,java-jansi)
590 ("java-commons-io" ,java-commons-io)
591 ("java-jsr305" ,java-jsr305)
592 ("java-plexus-container-default" ,java-plexus-container-default)
593 ("maven-parent-pom-30" ,maven-parent-pom-30)))
594 (native-inputs
595 `(("unzip" ,unzip)
596 ("java-junit" ,java-junit)
597 ("java-hamcrest-core" ,java-hamcrest-core)
598 ("java-commons-lang3" ,java-commons-lang3)))
599 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
600 (synopsis "Plexus-util replacement for maven")
601 (description "This project aims to be a functional replacement for
602 plexus-utils in Maven. It is not a 100% API compatible replacement but a
603 replacement with improvements.")
604 (license license:asl2.0)))
605
606 (define-public maven-plugin-annotations
607 (package
608 (name "maven-plugin-annotations")
609 (version "3.5")
610 (source (origin
611 (method url-fetch)
612 (uri (string-append "mirror://apache/maven/"
613 "plugin-tools/maven-plugin-tools-" version
614 "-source-release.zip"))
615 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
616 (build-system ant-build-system)
617 (arguments
618 `(#:jar-name "maven-plugin-annotations.jar"
619 #:source-dir "maven-plugin-annotations/src/main/java"
620 #:tests? #f))
621 (inputs
622 `(("maven-artifact" ,maven-artifact)))
623 (native-inputs
624 `(("unzip" ,unzip)))
625 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
626 (synopsis "Java 5 annotations to use in Mojos")
627 (description "This package contains Java 5 annotations for use in Mojos.")
628 (license license:asl2.0)))
629
630 (define-public maven-wagon-provider-api
631 (package
632 (name "maven-wagon-provider-api")
633 (version "3.3.4")
634 (source (origin
635 (method url-fetch)
636 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
637 "wagon-" version "-source-release.zip"))
638 (sha256
639 (base32
640 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
641 (build-system ant-build-system)
642 (arguments
643 `(#:jar-name "maven-wagon-provider-api.jar"
644 #:source-dir "wagon-provider-api/src/main/java"
645 #:test-dir "wagon-provider-api/src/test"
646 #:phases
647 (modify-phases %standard-phases
648 (replace 'install
649 (install-from-pom "wagon-provider-api/pom.xml")))))
650 (propagated-inputs
651 `(("java-plexus-utils" ,java-plexus-utils)
652 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
653 (native-inputs
654 `(("unzip" ,unzip)
655 ("java-junit" ,java-junit)
656 ("java-easymock" ,java-easymock)))
657 (home-page "https://maven.apache.org/wagon")
658 (synopsis "Transport abstraction for Maven")
659 (description "Maven Wagon is a transport abstraction that is used in Maven's
660 artifact and repository handling code.")
661 (license license:asl2.0)))
662
663 (define maven-wagon-parent-pom
664 (package
665 (inherit maven-wagon-provider-api)
666 (arguments
667 `(#:tests? #f
668 #:phases
669 (modify-phases %standard-phases
670 (delete 'configure)
671 (delete 'build)
672 (replace 'install
673 (install-pom-file "pom.xml")))))
674 (propagated-inputs
675 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
676 (native-inputs
677 `(("unzip" ,unzip)))))
678
679 (define-public maven-wagon-provider-test
680 (package
681 (inherit maven-wagon-provider-api)
682 (name "maven-wagon-provider-test")
683 (arguments
684 `(#:jar-name "maven-wagon-provider-test.jar"
685 #:source-dir "wagon-provider-test/src/main/java"
686 #:tests? #f; no tests
687 #:jdk ,icedtea-8))
688 (inputs
689 `(("java-plexus-utils" ,java-plexus-utils)
690 ("java-plexus-container-default" ,java-plexus-container-default)
691 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
692 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
693 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
694 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
695 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
696 ("java-slf4j-api" ,java-slf4j-api)
697 ("java-javaee-servletapi" ,java-javaee-servletapi)
698 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
699 (synopsis "Test classes from maven-wagon")
700 (description "Maven Wagon is a transport abstraction that is used in Maven's
701 artifact and repository handling code. This package contains common test
702 classes used in multiple maven-wagon components.")))
703
704 (define-public maven-wagon-file
705 (package
706 (inherit maven-wagon-provider-api)
707 (name "maven-wagon-file")
708 (arguments
709 `(#:jar-name "maven-wagon-file.jar"
710 #:source-dir "wagon-providers/wagon-file/src/main/java"
711 #:test-dir "wagon-providers/wagon-file/src/test"
712 #:jdk ,icedtea-8
713 #:phases
714 (modify-phases %standard-phases
715 (add-before 'check 'fix-paths
716 (lambda _
717 ;; Tests assume they are run by maven, which copies test resources
718 ;; to target. Our ant-build-system does the same, but with the
719 ;; build directory.
720 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
721 (("target") "build"))
722 #t))
723 (add-after 'build 'generate-metadata
724 (lambda _
725 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
726 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
727 "--source" "wagon-providers/wagon-file/src/main/java"
728 "--output" "build/classes/META-INF/plexus/components.xml"
729 "--classes" "build/classes"
730 "--descriptors" "build/classes/META-INF")
731 #t))
732 (add-after 'generate-metadata 'rebuild
733 (lambda _
734 (invoke "ant" "jar")
735 #t)))))
736 (inputs
737 `(("java-plexus-utils" ,java-plexus-utils)
738 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
739 (native-inputs
740 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
741 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
742 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
743 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
744 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
745 ("java-plexus-classworlds" ,java-plexus-classworlds)
746 ("java-guava" ,java-guava)
747 ("java-guice" ,java-guice)
748 ("java-javax-inject" ,java-javax-inject)
749 ("java-cglib" ,java-cglib)
750 ("java-slf4j-api" ,java-slf4j-api)
751 ("java-plexus-utils" ,java-plexus-utils)
752 ("java-plexus-cli" ,java-plexus-cli)
753 ("maven-plugin-api" ,maven-plugin-api)
754 ("maven-plugin-annotations" ,maven-plugin-annotations)
755 ("maven-core" ,maven-core)
756 ("maven-model" ,maven-model)
757 ("java-commons-cli" ,java-commons-cli)
758 ("java-qdox" ,java-qdox)
759 ("java-jdom2" ,java-jdom2)
760 ("java-asm" ,java-asm)
761 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
762 ,@(package-native-inputs maven-wagon-provider-api)))
763 (synopsis "Wagon provider that gets and puts artifacts using the file system")
764 (description "Maven Wagon is a transport abstraction that is used in Maven's
765 artifact and repository handling code. It uses providers, that are tools to
766 manage artifacts and deployment. This package contains the file provider which
767 gets and puts artifacts using the file system.")))
768
769 (define-public maven-wagon-tck-http
770 (package
771 (inherit maven-wagon-provider-api)
772 (name "maven-wagon-tck-http")
773 (arguments
774 `(#:jar-name "maven-wagon-tck-http.jar"
775 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
776 #:tests? #f; no tests
777 #:jdk ,icedtea-8))
778 (inputs
779 `(("java-plexus-util" ,java-plexus-utils)
780 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
781 ("java-javaee-servletapi" ,java-javaee-servletapi)
782 ("java-slf4j-api" ,java-slf4j-api)
783 ("java-commons-codec" ,java-commons-codec)
784 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
785 ("java-plexus-classworlds" ,java-plexus-classworlds)
786 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
787 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
788 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
789 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
790 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
791 (synopsis "Wagon HTTP Test Compatibility Kit")
792 (description "Maven Wagon is a transport abstraction that is used in Maven's
793 artifact and repository handling code. This package contains the HTTP
794 Test Compatibility Kit.")))
795
796 (define-public maven-wagon-http-shared
797 (package
798 (inherit maven-wagon-provider-api)
799 (name "maven-wagon-http-shared")
800 (arguments
801 `(#:jar-name "maven-wagon-http-shared.jar"
802 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
803 #:test-dir "wagon-providers/wagon-http-shared/src/test"
804 #:jdk ,icedtea-8
805 #:phases
806 (modify-phases %standard-phases
807 (add-after 'build 'generate-metadata
808 (lambda _
809 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
810 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
811 "--source" "wagon-providers/wagon-http-shared/src/main/java"
812 "--output" "build/classes/META-INF/plexus/components.xml"
813 "--classes" "build/classes"
814 "--descriptors" "build/classes/META-INF")
815 #t))
816 (add-after 'generate-metadata 'rebuild
817 (lambda _
818 (invoke "ant" "jar")
819 #t)))))
820 (inputs
821 `(("java-plexus-utils" ,java-plexus-utils)
822 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
823 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
824 ("java-commons-io" ,java-commons-io)
825 ("java-jsoup" ,java-jsoup)
826 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
827 (native-inputs
828 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
829 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
830 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
831 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
832 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
833 ("java-plexus-classworlds" ,java-plexus-classworlds)
834 ("java-guava" ,java-guava)
835 ("java-guice" ,java-guice)
836 ("java-javax-inject" ,java-javax-inject)
837 ("java-cglib" ,java-cglib)
838 ("java-slf4j-api" ,java-slf4j-api)
839 ("java-plexus-utils" ,java-plexus-utils)
840 ("java-plexus-cli" ,java-plexus-cli)
841 ("maven-plugin-api" ,maven-plugin-api)
842 ("maven-plugin-annotations" ,maven-plugin-annotations)
843 ("maven-core" ,maven-core)
844 ("maven-model" ,maven-model)
845 ("java-commons-cli" ,java-commons-cli)
846 ("java-qdox" ,java-qdox)
847 ("java-jdom2" ,java-jdom2)
848 ("java-asm" ,java-asm)
849 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
850 ,@(package-native-inputs maven-wagon-provider-api)))
851 (synopsis "Shared Library for wagon providers supporting HTTP.")
852 (description "Maven Wagon is a transport abstraction that is used in Maven's
853 artifact and repository handling code. It uses providers, that are tools to
854 manage artifacts and deployment. This package contains a shared library for
855 wagon providers supporting HTTP.")))
856
857 (define-public maven-wagon-http
858 (package
859 (inherit maven-wagon-provider-api)
860 (name "maven-wagon-http")
861 (arguments
862 `(#:jar-name "maven-wagon-http.jar"
863 #:source-dir "wagon-providers/wagon-http/src/main/java"
864 #:test-dir "wagon-providers/wagon-http/src/test"
865 #:test-exclude (list
866 "**/Abstract*.java"
867 ;; FIXME: javax.net.ssl.SSLHandshakeException:
868 ;; sun.security.validator.ValidatorException:
869 ;; PKIX path building failed:
870 ;; sun.security.provider.certpath.SunCertPathBuilderException:
871 ;; unable to find valid certification path to requested target
872 "**/HttpsWagonPreemptiveTest.java"
873 "**/HttpsWagonTest.java"
874 ;; Injection errors
875 "**/TckTest.java")
876 #:jdk ,icedtea-8
877 #:phases
878 (modify-phases %standard-phases
879 (add-before 'build 'copy-resources
880 (lambda _
881 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
882 "build/classes/META-INF/plexus")
883 #t))
884 (add-before 'check 'fix-resource-path
885 (lambda _
886 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
887 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
888 (("src/test") "wagon-providers/wagon-http/src/test"))
889 #t)))))
890 (inputs
891 `(("java-plexus-utils" ,java-plexus-utils)
892 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
893 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
894 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
895 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
896 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
897 (native-inputs
898 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
899 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
900 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
901 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
902 ("java-plexus-container-default" ,java-plexus-container-default)
903 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
904 ("java-plexus-classworlds" ,java-plexus-classworlds)
905 ("java-guava" ,java-guava)
906 ("java-guice" ,java-guice)
907 ("java-inject" ,java-javax-inject)
908 ("java-cglib" ,java-cglib)
909 ("java-slf4j-api" ,java-slf4j-api)
910 ("java-plexus-utils" ,java-plexus-utils)
911 ("java-plexus-cli" ,java-plexus-cli)
912 ("maven-plugin-api" ,maven-plugin-api)
913 ("maven-plugin-annotations" ,maven-plugin-annotations)
914 ("maven-core" ,maven-core)
915 ("maven-model" ,maven-model)
916 ("java-commons-cli" ,java-commons-cli)
917 ("java-qdox" ,java-qdox)
918 ("java-jdom2" ,java-jdom2)
919 ("java-asm" ,java-asm)
920 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
921 ("java-javaee-servletapi" ,java-javaee-servletapi)
922 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
923 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
924 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
925 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
926 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
927 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
928 ("java-hamcrest-core" ,java-hamcrest-core)
929 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
930 ("java-commons-codec" ,java-commons-codec)
931 ("java-commons-io" ,java-commons-io)
932 ("java-jsoup" ,java-jsoup)
933 ("java-slf4j-simple" ,java-slf4j-simple)
934 ,@(package-native-inputs maven-wagon-provider-api)))
935 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
936 (description "Maven Wagon is a transport abstraction that is used in Maven's
937 artifact and repository handling code. It uses providers, that are tools to
938 manage artifacts and deployment. This package contains a Wagon provider that
939 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
940
941 (define maven-pom
942 (package
943 (name "maven-pom")
944 (version "3.6.1")
945 (source (origin
946 (method url-fetch)
947 (uri (string-append "mirror://apache/maven/"
948 "maven-3/" version "/source/"
949 "apache-maven-" version "-src.tar.gz"))
950 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
951 (modules '((guix build utils)))
952 (snippet
953 '(begin
954 (for-each delete-file (find-files "." "\\.jar$"))
955 #t))
956 (patches
957 (search-patches "maven-generate-component-xml.patch"
958 "maven-generate-javax-inject-named.patch"))))
959 (build-system ant-build-system)
960 (arguments
961 `(#:tests? #f
962 #:phases
963 (modify-phases %standard-phases
964 (delete 'configure)
965 (delete 'build)
966 (add-before 'install 'fix-dependencies
967 (lambda _
968 (substitute* "pom.xml"
969 (("classWorldsVersion>.*")
970 (string-append
971 "classWorldsVersion>"
972 ,(package-version java-plexus-classworlds)
973 "</classWorldsVersion>\n"))
974 (("commonsCliVersion>.*")
975 (string-append
976 "commonsCliVersion>"
977 ,(package-version java-commons-cli)
978 "</commonsCliVersion>\n"))
979 (("commonsLangVersion>.*")
980 (string-append
981 "commonsLangVersion>"
982 ,(package-version java-commons-lang3)
983 "</commonsLangVersion>\n"))
984 (("plexusUtilsVersion>.*")
985 (string-append
986 "plexusUtilsVersion>"
987 ,(package-version java-plexus-utils)
988 "</plexusUtilsVersion>\n"))
989 (("plexusInterpolationVersion>.*")
990 (string-append
991 "plexusInterpolationVersion>"
992 ,(package-version java-plexus-interpolation)
993 "</plexusInterpolationVersion>\n"))
994 (("guiceVersion>.*")
995 (string-append
996 "guiceVersion>"
997 ,(package-version java-guice)
998 "</guiceVersion>\n"))
999 (("sisuInjectVersion>.*")
1000 (string-append
1001 "sisuInjectVersion>"
1002 ,(package-version java-eclipse-sisu-inject)
1003 "</sisuInjectVersion>\n"))
1004 (("securityDispatcherVersion>.*")
1005 (string-append
1006 "securityDispatcherVersion>"
1007 ,(package-version java-plexus-sec-dispatcher)
1008 "</securityDispatcherVersion>\n"))
1009 (("cipherVersion>.*")
1010 (string-append
1011 "cipherVersion>"
1012 ,(package-version java-plexus-cipher)
1013 "</cipherVersion>\n"))
1014 (("slf4jVersion>.*")
1015 (string-append
1016 "slf4jVersion>"
1017 ,(package-version java-slf4j-api)
1018 "</slf4jVersion>\n"))
1019 (("<classifier>no_aop</classifier>") ""))
1020 #t))
1021 (replace 'install
1022 (install-pom-file "pom.xml")))))
1023 (propagated-inputs
1024 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
1025 (home-page "https://maven.apache.org/")
1026 (synopsis "Build system")
1027 (description "Apache Maven is a software project management and comprehension
1028 tool. This package contains the Maven pom file, used by all maven components.")
1029 (license license:asl2.0)))
1030
1031 (define-public maven-artifact
1032 (package
1033 (inherit maven-pom)
1034 (name "maven-artifact")
1035 (arguments
1036 `(#:jar-name "maven-artifact.jar"
1037 #:source-dir "maven-artifact/src/main/java"
1038 #:test-dir "maven-artifact/src/test"
1039 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
1040 #:phases
1041 (modify-phases %standard-phases
1042 (replace 'install
1043 (install-from-pom "maven-artifact/pom.xml")))))
1044 (propagated-inputs
1045 `(("java-plexus-utils" ,java-plexus-utils)
1046 ("java-commons-lang3" ,java-commons-lang3)
1047 ("maven-pom" ,maven-pom)))
1048 (native-inputs
1049 `(("java-junit" ,java-junit)))
1050 (description "Apache Maven is a software project management and comprehension
1051 tool. This package contains the Maven Artifact classes, providing the
1052 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
1053 jar file is executable and provides a little tool to display how Maven parses
1054 and compares versions:")))
1055
1056 (define-public maven-model
1057 (package
1058 (inherit maven-artifact)
1059 (name "maven-model")
1060 (arguments
1061 `(#:jar-name "maven-model.jar"
1062 #:source-dir "maven-model/src/main/java"
1063 #:test-dir "maven-model/src/test"
1064 #:phases
1065 (modify-phases %standard-phases
1066 (add-before 'build 'generate-models
1067 (lambda* (#:key inputs #:allow-other-keys)
1068 (define (modello-single-mode file version mode)
1069 (invoke "java" "org.codehaus.modello.ModelloCli"
1070 file mode "maven-model/src/main/java" version
1071 "false" "true"))
1072 (let ((file "maven-model/src/main/mdo/maven.mdo"))
1073 (modello-single-mode file "4.0.0" "java")
1074 (modello-single-mode file "4.0.0" "xpp3-reader")
1075 (modello-single-mode file "4.0.0" "xpp3-writer")
1076 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
1077 #t))
1078 (replace 'install (install-from-pom "maven-model/pom.xml")))))
1079 (propagated-inputs
1080 `(("java-commons-lang3" ,java-commons-lang3)
1081 ("java-plexus-utils" ,java-plexus-utils)
1082 ("maven-pom" ,maven-pom)))
1083 (native-inputs
1084 `(("java-modello-core" ,java-modello-core)
1085 ;; for modello:
1086 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1087 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1088 ("java-guice" ,java-guice)
1089 ("java-cglib" ,java-cglib)
1090 ("java-asm" ,java-asm)
1091 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1092 ("java-javax-inject" ,java-javax-inject)
1093 ("java-plexus-classworlds" ,java-plexus-classworlds)
1094 ("java-guava" ,java-guava)
1095 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1096 ("java-sisu-build-api" ,java-sisu-build-api)
1097 ;; modello plugins:
1098 ("java-modello-plugins-java" ,java-modello-plugins-java)
1099 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1100 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1101 ;; for tests
1102 ("java-junit" ,java-junit)))
1103 (description "Apache Maven is a software project management and comprehension
1104 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
1105 so really just plain Java objects.")))
1106
1107 (define-public maven-builder-support
1108 (package
1109 (inherit maven-artifact)
1110 (name "maven-builder-support")
1111 (arguments
1112 `(#:jar-name "maven-builder-support.jar"
1113 #:source-dir "maven-builder-support/src/main/java"
1114 #:jdk ,icedtea-8
1115 #:test-dir "maven-builder-support/src/test"
1116 #:phases
1117 (modify-phases %standard-phases
1118 (add-before 'check 'fix-paths
1119 (lambda _
1120 (with-directory-excursion "maven-builder-support/src/test/java"
1121 (substitute*
1122 '("org/apache/maven/building/FileSourceTest.java"
1123 "org/apache/maven/building/UrlSourceTest.java")
1124 (("target/test-classes") "maven-builder-support/src/test/resources")))
1125 #t))
1126 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
1127 (propagated-inputs
1128 `(("maven-pom" ,maven-pom)))
1129 (native-inputs
1130 `(("java-junit" ,java-junit)))
1131 (description "Apache Maven is a software project management and comprehension
1132 tool. This package contains a support library for descriptor builders (model,
1133 setting, toolchains)")))
1134
1135 (define-public maven-settings
1136 (package
1137 (inherit maven-artifact)
1138 (name "maven-settings")
1139 (arguments
1140 `(#:jar-name "maven-settings.jar"
1141 #:source-dir "maven-settings/src/main/java"
1142 #:tests? #f; no tests
1143 #:phases
1144 (modify-phases %standard-phases
1145 (add-before 'build 'generate-models
1146 (lambda* (#:key inputs #:allow-other-keys)
1147 (define (modello-single-mode file version mode)
1148 (invoke "java" "org.codehaus.modello.ModelloCli"
1149 file mode "maven-settings/src/main/java" version
1150 "false" "true"))
1151 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
1152 (modello-single-mode file "1.1.0" "java")
1153 (modello-single-mode file "1.1.0" "xpp3-reader")
1154 (modello-single-mode file "1.1.0" "xpp3-writer"))
1155 #t))
1156 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
1157 (propagated-inputs
1158 `(("java-plexus-utils" ,java-plexus-utils)
1159 ("maven-pom" ,maven-pom)))
1160 (native-inputs
1161 `(("java-modello-core" ,java-modello-core)
1162 ;; for modello:
1163 ;("container" ,java-plexus-container-default)
1164 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1165 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1166 ("java-guice" ,java-guice)
1167 ("java-cglib" ,java-cglib)
1168 ("java-asm" ,java-asm)
1169 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1170 ("java-javax-inject" ,java-javax-inject)
1171 ("java-plexus-classworlds" ,java-plexus-classworlds)
1172 ("java-plexus-utils" ,java-plexus-utils)
1173 ("java-guava" ,java-guava)
1174 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1175 ("java-sisu-build-api" ,java-sisu-build-api)
1176 ;; modello plugins:
1177 ("java-modello-plugins-java" ,java-modello-plugins-java)
1178 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1179 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1180 (description "Apache Maven is a software project management and comprehension
1181 tool. This package contains strictly the model for Maven settings, that is
1182 simply plain java objects.")))
1183
1184 (define-public maven-settings-builder
1185 (package
1186 (inherit maven-artifact)
1187 (name "maven-settings-builder")
1188 (arguments
1189 `(#:jar-name "maven-settings-builder.jar"
1190 #:source-dir "maven-settings-builder/src/main/java"
1191 #:jdk ,icedtea-8
1192 #:test-dir "maven-settings-builder/src/test"
1193 #:phases
1194 (modify-phases %standard-phases
1195 (add-before 'build 'generate-components.xml
1196 (lambda _
1197 (mkdir-p "build/classes/META-INF/plexus")
1198 (chmod "components.sh" #o755)
1199 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1200 "build/classes/META-INF/plexus/components.xml")
1201 #t))
1202 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1203 (propagated-inputs
1204 `(("java-plexus-utils" ,java-plexus-utils)
1205 ("java-plexus-interpolation" ,java-plexus-interpolation)
1206 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1207 ("maven-builder-support" ,maven-builder-support)
1208 ("maven-settings" ,maven-settings)
1209 ("maven-pom" ,maven-pom)))
1210 (native-inputs
1211 `(("java-junit" ,java-junit)
1212 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
1213 (description "Apache Maven is a software project management and comprehension
1214 tool. This package contains the effective model builder, with profile activation,
1215 inheritance, interpolation, @dots{}")))
1216
1217 (define-public maven-model-builder
1218 (package
1219 (inherit maven-artifact)
1220 (name "maven-model-builder")
1221 (arguments
1222 `(#:jar-name "maven-model-builder.jar"
1223 #:source-dir "maven-model-builder/src/main/java"
1224 #:jdk ,icedtea-8
1225 #:test-dir "maven-model-builder/src/test"
1226 #:phases
1227 (modify-phases %standard-phases
1228 (add-before 'build 'copy-resources
1229 (lambda _
1230 (copy-recursively "maven-model-builder/src/main/resources"
1231 "build/classes")
1232 #t))
1233 (add-before 'build 'generate-components.xml
1234 (lambda _
1235 (mkdir-p "build/classes/META-INF/plexus")
1236 (chmod "components.sh" #o755)
1237 (invoke "./components.sh" "maven-model-builder/src/main/java"
1238 "build/classes/META-INF/plexus/components.xml")
1239 #t))
1240 (add-before 'check 'fix-paths
1241 (lambda _
1242 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1243 (("src/test") "maven-model-builder/src/test"))
1244 #t))
1245 (replace 'install
1246 (install-from-pom "maven-model-builder/pom.xml")))))
1247 (propagated-inputs
1248 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1249 ("java-plexus-utils" ,java-plexus-utils)
1250 ("maven-artifact" ,maven-artifact)
1251 ("maven-builder-support" ,maven-builder-support)
1252 ("maven-model" ,maven-model)
1253 ("maven-pom" ,maven-pom)))
1254 (native-inputs
1255 `(("java-junit" ,java-junit)
1256 ("java-guava" ,java-guava)
1257 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1258 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1259 ("guice" ,java-guice)
1260 ("java-cglib" ,java-cglib)
1261 ("java-asm" ,java-asm)
1262 ("sisu-inject" ,java-eclipse-sisu-inject)
1263 ("javax-inject" ,java-javax-inject)
1264 ("java-xmlunit" ,java-xmlunit)
1265 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1266 ("xbean" ,java-geronimo-xbean-reflect)
1267 ("classworlds" ,java-plexus-classworlds)))
1268 (description "Apache Maven is a software project management and comprehension
1269 tool. This package contains the effective model builder, with profile activation,
1270 inheritance, interpolation, @dots{}")))
1271
1272 (define-public maven-repository-metadata
1273 (package
1274 (inherit maven-artifact)
1275 (name "maven-repository-metadata")
1276 (arguments
1277 `(#:jar-name "maven-repository-metadata.jar"
1278 #:source-dir "maven-repository-metadata/src/main/java"
1279 #:jdk ,icedtea-8
1280 #:tests? #f; no tests
1281 #:phases
1282 (modify-phases %standard-phases
1283 (add-before 'build 'generate-models
1284 (lambda* (#:key inputs #:allow-other-keys)
1285 (define (modello-single-mode file version mode)
1286 (invoke "java" "org.codehaus.modello.ModelloCli"
1287 file mode "maven-repository-metadata/src/main/java" version
1288 "false" "true"))
1289 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1290 (modello-single-mode file "1.1.0" "java")
1291 (modello-single-mode file "1.1.0" "xpp3-reader")
1292 (modello-single-mode file "1.1.0" "xpp3-writer"))
1293 #t))
1294 (replace 'install
1295 (install-from-pom "maven-repository-metadata/pom.xml")))))
1296 (propagated-inputs
1297 `(("java-plexus-utils" ,java-plexus-utils)
1298 ("maven-pom" ,maven-pom)))
1299 (native-inputs
1300 `(("modello" ,java-modello-core)
1301 ;; for modello:
1302 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1303 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1304 ("java-guice" ,java-guice)
1305 ("java-cglib" ,java-cglib)
1306 ("java-asm" ,java-asm)
1307 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1308 ("java-javax-inject" ,java-javax-inject)
1309 ("java-plexus-utils" ,java-plexus-utils)
1310 ("java-plexus-classworlds" ,java-plexus-classworlds)
1311 ("java-guava" ,java-guava)
1312 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1313 ("java-sisu-build-api" ,java-sisu-build-api)
1314 ;; modello plugins:
1315 ("java-modello-plugins-java" ,java-modello-plugins-java)
1316 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1317 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1318 (description "Apache Maven is a software project management and comprehension
1319 tool. This package contains strictly the model for Maven Repository Metadata,
1320 so really just plain objects.")))
1321
1322 (define-public maven-resolver-provider
1323 (package
1324 (inherit maven-artifact)
1325 (name "maven-resolver-provider")
1326 (arguments
1327 `(#:jar-name "maven-resolver-provider.jar"
1328 #:source-dir "maven-resolver-provider/src/main/java"
1329 #:test-dir "maven-resolver-provider/src/test"
1330 #:jdk ,icedtea-8
1331 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1332 #:phases
1333 (modify-phases %standard-phases
1334 (add-before 'build 'generate-sisu-named
1335 (lambda _
1336 (mkdir-p "build/classes/META-INF/sisu")
1337 (chmod "./sisu.sh" #o755)
1338 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1339 "build/classes/META-INF/sisu/javax.inject.Named")
1340 #t))
1341 (replace 'install
1342 (install-from-pom "maven-resolver-provider/pom.xml")))))
1343 (propagated-inputs
1344 `(("maven-model" ,maven-model)
1345 ("maven-model-builder" ,maven-model-builder)
1346 ("maven-resolver-spi" ,maven-resolver-spi)
1347 ("maven-resolver-api" ,maven-resolver-api)
1348 ("maven-resolver-impl" ,maven-resolver-impl)
1349 ("maven-resolver-util" ,maven-resolver-util)
1350 ("maven-builder-support" ,maven-builder-support)
1351 ("maven-repository-metadata" ,maven-repository-metadata)
1352 ("java-plexus-utils" ,java-plexus-utils)
1353 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1354 ("java-guice" ,java-guice)
1355 ("java-javax-inject" ,java-javax-inject)))))
1356
1357 (define-public maven-plugin-api
1358 (package
1359 (inherit maven-artifact)
1360 (name "maven-plugin-api")
1361 (arguments
1362 `(#:jar-name "maven-plugin-api.jar"
1363 #:source-dir "maven-plugin-api/src/main/java"
1364 #:jdk ,icedtea-8
1365 #:test-dir "maven-plugin-api/src/test"
1366 #:phases
1367 (modify-phases %standard-phases
1368 (add-before 'build 'generate-models
1369 (lambda* (#:key inputs #:allow-other-keys)
1370 (define (modello-single-mode file version mode)
1371 (invoke "java" "org.codehaus.modello.ModelloCli"
1372 file mode "maven-plugin-api/src/main/java" version
1373 "false" "true"))
1374 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1375 (modello-single-mode file "1.0.0" "java")
1376 (modello-single-mode file "1.0.0" "xpp3-reader")
1377 (modello-single-mode file "1.0.0" "xpp3-writer"))
1378 #t))
1379 (replace 'install
1380 (install-from-pom "maven-plugin-api/pom.xml")))))
1381 (propagated-inputs
1382 `(("maven-artifact" ,maven-artifact)
1383 ("maven-model" ,maven-model)
1384 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1385 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1386 ("guice" ,java-guice)
1387 ("java-cglib" ,java-cglib)
1388 ("java-asm" ,java-asm)
1389 ("sisu-inject" ,java-eclipse-sisu-inject)
1390 ("javax-inject" ,java-javax-inject)
1391 ("utils" ,java-plexus-utils)))
1392 (native-inputs
1393 `(("modello" ,java-modello-core)
1394 ;; for modello:
1395 ("classworlds" ,java-plexus-classworlds)
1396 ("guava" ,java-guava)
1397 ("xbean" ,java-geronimo-xbean-reflect)
1398 ("build-api" ,java-sisu-build-api)
1399 ;; modello plugins:
1400 ("java" ,java-modello-plugins-java)
1401 ("xml" ,java-modello-plugins-xml)
1402 ("xpp3" ,java-modello-plugins-xpp3)
1403 ;; for tests
1404 ("java-junit" ,java-junit)))
1405 (description "Apache Maven is a software project management and comprehension
1406 tool. This package contains strictly the API for plugins -- composed of goals
1407 implemented by Mojos -- development.
1408
1409 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1410 generally generated from plugin sources using maven-plugin-plugin.")))
1411
1412 (define maven-core-bootstrap
1413 (package
1414 (inherit maven-artifact)
1415 (name "maven-core")
1416 (arguments
1417 `(#:jar-name "maven-core.jar"
1418 #:source-dir "src/main/java"
1419 #:jdk ,icedtea-8
1420 ;; Tests need maven-compat, which requires maven-core
1421 #:tests? #f
1422 #:phases
1423 (modify-phases %standard-phases
1424 (add-before 'configure 'chdir
1425 (lambda _
1426 ;; Required for generating components.xml in maven-core
1427 (chdir "maven-core")
1428 #t))
1429 (add-before 'build 'copy-resources
1430 (lambda _
1431 (mkdir-p "build/classes/")
1432 (copy-recursively "src/main/resources" "build/classes")
1433 #t))
1434 (add-after 'copy-resources 'fill-properties
1435 (lambda _
1436 ;; This file controls the output of some mvn subcommands, such as
1437 ;; mvn -version.
1438 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1439 (("\\$\\{buildNumber\\}") "guix_build")
1440 (("\\$\\{timestamp\\}") "0")
1441 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1442 (("\\$\\{distributionId\\}") "apache-maven")
1443 (("\\$\\{distributionShortName\\}") "Maven")
1444 (("\\$\\{distributionName\\}") "Apache Maven"))
1445 #t))
1446 (add-before 'build 'generate-sisu-named
1447 (lambda _
1448 (mkdir-p "build/classes/META-INF/sisu")
1449 (chmod "../sisu.sh" #o755)
1450 (invoke "../sisu.sh" "src/main/java"
1451 "build/classes/META-INF/sisu/javax.inject.Named")
1452 #t))
1453 (add-before 'build 'generate-models
1454 (lambda* (#:key inputs #:allow-other-keys)
1455 (define (modello-single-mode file version mode)
1456 (invoke "java" "org.codehaus.modello.ModelloCli"
1457 file mode "src/main/java" version
1458 "false" "true"))
1459 (let ((file "src/main/mdo/toolchains.mdo"))
1460 (modello-single-mode file "1.1.0" "java")
1461 (modello-single-mode file "1.1.0" "xpp3-reader")
1462 (modello-single-mode file "1.1.0" "xpp3-writer"))
1463 #t))
1464 (add-before 'install 'fix-pom
1465 (lambda _
1466 (substitute* "pom.xml"
1467 (("<classifier>no_aop</classifier>") ""))
1468 #t))
1469 (replace 'install
1470 (install-from-pom "pom.xml")))))
1471 (propagated-inputs
1472 `(("maven-artifact" ,maven-artifact)
1473 ("maven-resolver-provider" ,maven-resolver-provider)
1474 ("maven-builder-support" ,maven-builder-support)
1475 ("maven-model" ,maven-model)
1476 ("maven-model-builder" ,maven-model-builder)
1477 ("maven-settings" ,maven-settings)
1478 ("maven-settings-builder" ,maven-settings-builder)
1479 ("maven-plugin-api" ,maven-plugin-api)
1480 ("maven-repository-metadata" ,maven-repository-metadata)
1481 ("maven-shared-utils" ,maven-shared-utils)
1482 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1483 ("java-plexus-utils" ,java-plexus-utils)
1484 ("java-commons-lang3" ,java-commons-lang3)
1485 ("java-guava" ,java-guava)
1486 ("java-guice" ,java-guice)
1487 ("maven-resolver-api" ,maven-resolver-api)
1488 ("maven-resolver-spi" ,maven-resolver-spi)
1489 ("maven-resolver-util" ,maven-resolver-util)
1490 ("maven-resolver-impl" ,maven-resolver-impl)
1491 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1492 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1493 ("java-javax-inject" ,java-javax-inject)
1494 ("java-plexus-classworld" ,java-plexus-classworlds)))
1495 (native-inputs
1496 `(("java-modello-core" ,java-modello-core)
1497 ("java-cglib" ,java-cglib)
1498 ("java-asm" ,java-asm)
1499 ("java-plexus-classworlds" ,java-plexus-classworlds)
1500 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1501 ("java-sisu-build-api" ,java-sisu-build-api)
1502 ("java-modello-plugins-java" ,java-modello-plugins-java)
1503 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1504 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1505 ;; tests
1506 ("java-junit" ,java-junit)
1507 ("java-mockito-1" ,java-mockito-1)
1508 ("java-commons-jxpath" ,java-commons-jxpath)))
1509 (description "Apache Maven is a software project management and comprehension
1510 tool. This package contains the maven core classes managing the whole build
1511 process.")))
1512
1513 (define-public maven-core
1514 (package
1515 (inherit maven-core-bootstrap)
1516 (arguments
1517 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1518 ((#:phases phases)
1519 `(modify-phases ,phases
1520 (add-before 'build 'modify-metainf
1521 (lambda _
1522 (substitute* "build.xml"
1523 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
1524 #t))
1525 (add-before 'build 'add-maven-files
1526 (lambda _
1527 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1528 (copy-file "pom.xml"
1529 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1530 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1531 (lambda _
1532 (format #t "version=~a~%
1533 groupId=org.apache.maven~%
1534 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1535 #t))
1536 (add-after 'build 'generate-metadata
1537 (lambda _
1538 (define (components file)
1539 (let ((sxml (with-input-from-file file
1540 (lambda _ (xml->sxml (current-input-port)
1541 #:trim-whitespace? #t)))))
1542 ;; Select the list of <component>s inside the <component-set>
1543 ;; and <components>.
1544 ((@ (ice-9 match) match) sxml
1545 (('*TOP*
1546 ('*PI* foo ...)
1547 ('component-set
1548 ('components x ...))) x))))
1549 (use-modules (sxml simple))
1550 (delete-file "build/classes/META-INF/plexus/components.xml")
1551 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1552 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1553 "--source" "build/classes/META-INF/plexus"
1554 "--output" "build/classes/META-INF/plexus/components.t.xml"
1555 "--classes" "build/classes"
1556 "--descriptors" "build/classes")
1557 ;; Now we merge all other components from hand-written xml
1558 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1559 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1560 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1561 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1562 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1563 (lambda _
1564 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1565 (sxml->xml
1566 `(component-set
1567 (components
1568 ,@(append generated-xml components-xml
1569 default-bindings-xml
1570 artifact-handlers-xml)))))))
1571 #t))
1572 (add-after 'generate-metadata 'rebuild
1573 (lambda _
1574 (invoke "ant" "jar")
1575 #t))))))
1576 (native-inputs
1577 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1578 ("java-commons-cli" ,java-commons-cli)
1579 ("java-plexus-cli" ,java-plexus-cli)
1580 ("java-jdom2" ,java-jdom2)
1581 ("java-qdox" ,java-qdox)
1582 ("maven-core-boot" ,maven-core-bootstrap)
1583 ,@(package-native-inputs maven-core-bootstrap)))))
1584
1585 (define-public maven-embedder
1586 (package
1587 (inherit maven-artifact)
1588 (name "maven-embedder")
1589 (arguments
1590 `(#:jar-name "maven-embedder.jar"
1591 #:source-dir "maven-embedder/src/main/java"
1592 #:test-dir "maven-embedder/src/test"
1593 #:test-exclude (list "**/MavenCliTest.java")
1594 #:jdk ,icedtea-8
1595 #:phases
1596 (modify-phases %standard-phases
1597 (add-before 'build 'generate-sisu-named
1598 (lambda _
1599 (mkdir-p "build/classes/META-INF/sisu")
1600 (chmod "sisu.sh" #o755)
1601 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1602 "build/classes/META-INF/sisu/javax.inject.Named")
1603 #t))
1604 (add-before 'build 'generate-models
1605 (lambda* (#:key inputs #:allow-other-keys)
1606 (define (modello-single-mode file version mode)
1607 (invoke "java" "org.codehaus.modello.ModelloCli"
1608 file mode "maven-embedder/src/main/java" version
1609 "false" "true"))
1610 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1611 (modello-single-mode file "1.0.0" "java")
1612 (modello-single-mode file "1.0.0" "xpp3-reader")
1613 (modello-single-mode file "1.0.0" "xpp3-writer"))
1614 #t))
1615 (add-before 'check 'fix-test-paths
1616 (lambda _
1617 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1618 (("target/test-classes") "build/test-classes"))
1619 #t))
1620 (add-before 'check 'fix-test-compilation
1621 (lambda _
1622 ;; Tests are in the java/ subdir. Other subdirectories contain
1623 ;; additional test plugins, with duplicate classes, so we can't
1624 ;; compile them. Also, they are meant to be built with maven, to
1625 ;; test its build process.
1626 (substitute* "build.xml"
1627 (("srcdir=\"maven-embedder/src/test\"")
1628 "srcdir=\"maven-embedder/src/test/java\""))
1629 #t))
1630 (replace 'install
1631 (install-from-pom "maven-embedder/pom.xml")))))
1632 (propagated-inputs
1633 `(("maven-core" ,maven-core)
1634 ("maven-artifact" ,maven-artifact)
1635 ("maven-plugin-api" ,maven-plugin-api)
1636 ("maven-builder-support" ,maven-builder-support)
1637 ("maven-model" ,maven-model)
1638 ("maven-model-builder" ,maven-model-builder)
1639 ("maven-settings" ,maven-settings)
1640 ("maven-settings-builder" ,maven-settings-builder)
1641 ("maven-shared-utils" ,maven-shared-utils)
1642 ("java-plexus-classworlds" ,java-plexus-classworlds)
1643 ("java-plexus-util" ,java-plexus-utils)
1644 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1645 ("java-plexus-cipher" ,java-plexus-cipher)
1646 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1647 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1648 ("maven-resolevr-util" ,maven-resolver-util)
1649 ("maven-resolevr-api" ,maven-resolver-api)
1650 ("java-logback-core" ,java-logback-core)
1651 ("java-logback-classic" ,java-logback-classic)
1652 ("java-commons-cli" ,java-commons-cli)
1653 ("java-commons-io" ,java-commons-io)
1654 ("java-commons-lang3" ,java-commons-lang3)
1655 ("java-guava" ,java-guava)
1656 ("java-guice" ,java-guice)
1657 ("java-javax-inject" ,java-javax-inject)
1658 ("java-slf4j-api" ,java-slf4j-api)
1659 ("java-slf4j-simple" ,java-slf4j-simple)
1660 ("java-jsr250" ,java-jsr250)))
1661 (native-inputs
1662 `(("java-modello-core" ,java-modello-core)
1663 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1664 ("java-sisu-build-api" ,java-sisu-build-api)
1665 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1666 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1667 ("java-cglib" ,java-cglib)
1668 ("java-asm" ,java-asm)
1669 ("java-modello-plugins-java" ,java-modello-plugins-java)
1670 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1671 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1672 ;; tests
1673 ("java-junit" ,java-junit)
1674 ("java-objenesis" ,java-objenesis)
1675 ("java-mockito-1" ,java-mockito-1)
1676 ("java-hamcrest-core" ,java-hamcrest-core)))
1677 (description "Apache Maven is a software project management and comprehension
1678 tool. This package contains a Maven embeddable component, with CLI and
1679 logging support.")))
1680
1681 (define-public maven-compat
1682 (package
1683 (inherit maven-artifact)
1684 (name "maven-compat")
1685 (arguments
1686 `(#:jar-name "maven-compat.jar"
1687 #:source-dir "src/main/java"
1688 #:jdk ,icedtea-8
1689 #:test-dir "src/test"
1690 #:phases
1691 (modify-phases %standard-phases
1692 ;; Tests assume we're in this directory
1693 (add-before 'configure 'chdir
1694 (lambda _
1695 (chdir "maven-compat")
1696 #t))
1697 (add-before 'build 'recreate-removed-jar
1698 (lambda _
1699 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1700 (const #t))
1701 (with-directory-excursion "src/test/resources"
1702 (with-output-to-file "artifact-install/artifact-1.0.jar"
1703 (lambda _
1704 (format #t "dummy~%")))
1705 (for-each
1706 (lambda (file)
1707 (with-output-to-file file
1708 (lambda _
1709 (format #t "foo~%"))))
1710 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1711 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1712 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1713 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1714 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1715 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1716 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1717 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1718 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1719 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1720 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1721 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1722 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1723 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1724 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1725 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1726 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1727 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1728 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1729 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1730 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1731 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1732 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1733 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1734 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1735 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1736 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1737 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1738 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1739 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1740 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1741 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1742 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1743 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1744 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1745 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1746 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1747 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1748 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1749 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1750 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1751 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1752 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1753 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1754 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1755 (with-directory-excursion "local-repo/snapshot-test/jars"
1756 (for-each
1757 (lambda (file)
1758 (with-output-to-file file
1759 (lambda _
1760 ;; No end-of-line
1761 (format #t "local"))))
1762 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1763 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1764 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1765 (for-each
1766 (lambda (letter)
1767 (with-directory-excursion
1768 (string-append "src/test/remote-repo/org/apache/maven/its/"
1769 letter "/0.1")
1770 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1771 letter)))
1772 (mkdir-p dir)
1773 (copy-file (string-append letter "-0.1.pom")
1774 (string-append dir "/pom.xml"))
1775 (with-output-to-file (string-append dir "/pom.properties")
1776 (lambda _
1777 (format #t "version=0.1~%")
1778 (format #t "groupId=org.apache.maven.its")
1779 (format #t (string-append "artifactId=" letter))))
1780 (with-output-to-file "META-INF/MANIFEST.MF"
1781 (lambda _
1782 (format #t "Manifest-Version: 1.0~%"))))
1783 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1784 (string-append letter "-0.1.jar") "META-INF")))
1785 '("a" "b"))
1786 #t))
1787 (add-before 'build 'generate-models
1788 (lambda* (#:key inputs #:allow-other-keys)
1789 (define (modello-single-mode file version mode)
1790 (invoke "java" "org.codehaus.modello.ModelloCli"
1791 file mode "src/main/java" version
1792 "false" "true"))
1793 (let ((file "src/main/mdo/profiles.mdo"))
1794 (modello-single-mode file "1.0.0" "java")
1795 (modello-single-mode file "1.0.0" "xpp3-reader")
1796 (modello-single-mode file "1.0.0" "xpp3-writer"))
1797 (let ((file "src/main/mdo/paramdoc.mdo"))
1798 (modello-single-mode file "1.0.0" "java")
1799 (modello-single-mode file "1.0.0" "xpp3-reader")
1800 (modello-single-mode file "1.0.0" "xpp3-writer"))
1801 #t))
1802 (add-after 'build 'generate-metadata
1803 (lambda _
1804 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1805 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1806 "--source" "src/main/java"
1807 "--output" "build/classes/META-INF/plexus/components.xml"
1808 "--classes" "build/classes"
1809 "--descriptors" "build/classes/META-INF")
1810 #t))
1811 (add-before 'check 'build-tests
1812 (lambda _
1813 (invoke "ant" "compile-tests")
1814 #t))
1815 (add-after 'build-tests 'generate-test-metadata
1816 (lambda _
1817 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1818 ":build/classes"
1819 ":build/test-classes")
1820 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1821 "--source" "src/test/java"
1822 "--output" "build/test-classes/META-INF/plexus/components.xml"
1823 "--classes" "build/test-classes"
1824 "--descriptors" "build/test-classes/META-INF")
1825 #t))
1826 (add-after 'generate-metadata 'rebuild
1827 (lambda _
1828 (invoke "ant" "jar")
1829 #t))
1830 (replace 'install
1831 (install-from-pom "pom.xml")))))
1832 (propagated-inputs
1833 `(("maven-artifact" ,maven-artifact)
1834 ("maven-repository-metadata" ,maven-repository-metadata)
1835 ("maven-builder-support" ,maven-builder-support)
1836 ("maven-model" ,maven-model)
1837 ("maven-model-builder" ,maven-model-builder)
1838 ("maven-settings" ,maven-settings)
1839 ("maven-settings-builder" ,maven-settings-builder)
1840 ("maven-core" ,maven-core)
1841 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1842 ("maven-wagon-file" ,maven-wagon-file)
1843 ("maven-resolver-api" ,maven-resolver-api)
1844 ("maven-resolver-util" ,maven-resolver-util)
1845 ("maven-resolver-spi" ,maven-resolver-spi)
1846 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1847 (native-inputs
1848 `(("java-modello-core" ,java-modello-core)
1849 ("java-plexus-utils" ,java-plexus-utils)
1850 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1851 ("java-plexus-classworlds" ,java-plexus-classworlds)
1852 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1853 ("java-sisu-build-api" ,java-sisu-build-api)
1854 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1855 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1856 ("java-javax-inject" ,java-javax-inject)
1857 ("java-guice" ,java-guice)
1858 ("java-guava" ,java-guava)
1859 ("java-cglib" ,java-cglib)
1860 ("java-asm" ,java-asm)
1861 ("java-modello-plugins-java" ,java-modello-plugins-java)
1862 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1863 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1864 ;; metadata
1865 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
1866 ("java-commons-cli" ,java-commons-cli)
1867 ("java-plexus-cli" ,java-plexus-cli)
1868 ("java-jdom2" ,java-jdom2)
1869 ("maven-plugin-api" ,maven-plugin-api)
1870 ("java-qdox" ,java-qdox)
1871 ;; tests
1872 ("java-plexus-cipher" ,java-plexus-cipher)
1873 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1874 ("java-jsr250" ,java-jsr250)
1875 ("java-cdi-api" ,java-cdi-api)
1876 ("java-junit" ,java-junit)
1877 ("maven-resolver-impl" ,maven-resolver-impl)
1878 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1879 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1880 ("java-commons-lang3" ,java-commons-lang3)
1881 ("java-aop" ,java-aopalliance)
1882 ("maven-resolver-provider" ,maven-resolver-provider)
1883 ("java-slf4j-api" ,java-slf4j-api)
1884 ("java-slf4j-simple" ,java-slf4j-simple)
1885 ,@(package-inputs java-slf4j-api)))
1886 (description "Apache Maven is a software project management and comprehension
1887 tool. This package contains Maven2 classes maintained as compatibility
1888 layer for plugins that need to keep Maven2 compatibility.")))
1889
1890 (define-public maven
1891 (package
1892 (inherit maven-artifact)
1893 (name "maven")
1894 (arguments
1895 `(#:phases
1896 (modify-phases %standard-phases
1897 (replace 'build
1898 (lambda* (#:key inputs #:allow-other-keys)
1899 ;; Recreate the configuration for the loader
1900 (with-output-to-file "apache-maven/src/bin/m2.conf"
1901 (lambda _
1902 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1903 (format #t "~%")
1904 (format #t "set maven.conf default ${maven.home}/conf~%")
1905 (format #t "~%")
1906 (format #t "[plexus.core]~%")
1907 (format #t "load ${maven.conf}/logging~%")
1908 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1909 ;; Reference every jar so plexus-classworlds can find them.
1910 (for-each
1911 (lambda (dependency)
1912 (for-each
1913 (lambda (file)
1914 (format #t "load ~a~%" file))
1915 (find-files (assoc-ref inputs dependency) ".*.jar$")))
1916 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1917 "maven-builder-support" "maven-model" "maven-model-builder"
1918 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1919 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1920 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1921 "maven-resolver-connector-basic" "maven-resolver-provider"
1922 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1923 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1924 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1925 "maven-wagon-http-shared" "maven-wagon-tck-http"
1926 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1927 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1928 "java-javax-inject" "java-plexus-component-annotations"
1929 "java-plexus-utils" "java-plexus-interpolation"
1930 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1931 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1932 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1933 "java-slf4j-simple"))))
1934 (substitute* "apache-maven/src/bin/mvn"
1935 (("cygwin=false;")
1936 (string-append
1937 "CLASSPATH="
1938 (car (find-files
1939 (assoc-ref inputs "java-plexus-classworlds")
1940 ".*.jar"))
1941 "\ncygwin=false;"))
1942 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
1943 #t))
1944 (delete 'check)
1945 (replace 'install
1946 (lambda* (#:key outputs #:allow-other-keys)
1947 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
1948 (conf (string-append (assoc-ref outputs "out") "/conf/")))
1949 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
1950 (for-each (lambda (file)
1951 (install-file (string-append "apache-maven/src/bin/" file)
1952 bin)
1953 (chmod (string-append bin file) #o755))
1954 '("mvn" "mvnDebug" "mvnyjp"))
1955 (install-file "apache-maven/src/bin/m2.conf" bin)
1956 (copy-recursively "apache-maven/src/conf" conf))
1957 #t)))))
1958 (inputs
1959 `(("java-plexus-classworlds" ,java-plexus-classworlds)
1960 ("maven-artifact" ,maven-artifact)
1961 ("maven-embedder" ,maven-embedder)
1962 ("maven-core" ,maven-core)
1963 ("maven-compat" ,maven-compat)
1964 ("maven-builder-support" ,maven-builder-support)
1965 ("maven-model" ,maven-model)
1966 ("maven-model-builder" ,maven-model-builder)
1967 ("maven-settings" ,maven-settings)
1968 ("maven-settings-builder" ,maven-settings-builder)
1969 ("maven-plugin-api" ,maven-plugin-api)
1970 ("maven-repository-metadata" ,maven-repository-metadata)
1971 ("maven-shared-utils" ,maven-shared-utils)
1972 ("maven-resolver-api" ,maven-resolver-api)
1973 ("maven-resolver-spi" ,maven-resolver-spi)
1974 ("maven-resolver-util" ,maven-resolver-util)
1975 ("maven-resolver-impl" ,maven-resolver-impl)
1976 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1977 ("maven-resolver-provider" ,maven-resolver-provider)
1978 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1979 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1980 ("maven-wagon-file" ,maven-wagon-file)
1981 ("maven-wagon-http" ,maven-wagon-http)
1982 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1983 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
1984 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
1985 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
1986 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
1987 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1988 ("java-guice" ,java-guice)
1989 ("java-aopalliance" ,java-aopalliance)
1990 ("java-cglib" ,java-cglib)
1991 ("java-asm" ,java-asm)
1992 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1993 ("java-javax-inject" ,java-javax-inject)
1994 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1995 ("java-plexus-utils" ,java-plexus-utils)
1996 ("java-plexus-interpolation" ,java-plexus-interpolation)
1997 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1998 ("java-plexus-cipher" ,java-plexus-cipher)
1999 ("java-guava" ,java-guava)
2000 ("java-jansi" ,java-jansi)
2001 ("java-jsr250" ,java-jsr250)
2002 ("java-cdi-api" ,java-cdi-api)
2003 ("java-commons-cli" ,java-commons-cli)
2004 ("java-commons-io" ,java-commons-io)
2005 ("java-commons-lang3" ,java-commons-lang3)
2006 ("java-slf4j-api" ,java-slf4j-api)
2007 ;; TODO: replace with maven-slf4j-provider
2008 ("java-slf4j-simple" ,java-slf4j-simple)))
2009 (propagated-inputs
2010 `(("coreutils" ,coreutils)
2011 ("which" ,which)))
2012 (description "Apache Maven is a software project management and comprehension
2013 tool. Based on the concept of a project object model: builds, dependency
2014 management, documentation creation, site publication, and distribution
2015 publication are all controlled from the @file{pom.xml} declarative file. Maven
2016 can be extended by plugins to utilise a number of other development tools for
2017 reporting or the build process.")))