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