gnu: maven-shared-utils: Fix /bin/sh invocation.
[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 #: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 (define-public maven-shared-utils
368 (package
369 (name "maven-shared-utils")
370 (version "3.2.1")
371 (source (origin
372 (method url-fetch)
373 (uri (string-append "mirror://apache/maven/shared/"
374 "maven-shared-utils-" version "-source-release.zip"))
375 (sha256
376 (base32
377 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
378 (build-system ant-build-system)
379 (arguments
380 `(#:jar-name "maven-shared-utils.jar"
381 #:source-dir "src/main/java"
382 #:phases
383 (modify-phases %standard-phases
384 (add-before 'build 'fix-/bin/sh-invocation
385 (lambda _
386 (substitute* (find-files "src" ".*.java$")
387 (("/bin/sh") (which "sh")))
388 #t))
389 (add-before 'check 'remove-cyclic-dep
390 (lambda _
391 (delete-file
392 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
393 #t))
394 (replace 'install
395 (install-from-pom "pom.xml")))))
396 (propagated-inputs
397 `(("java-jansi" ,java-jansi)
398 ("java-commons-io" ,java-commons-io)
399 ("java-jsr305" ,java-jsr305)
400 ("java-plexus-container-default" ,java-plexus-container-default)
401 ("maven-parent-pom-30" ,maven-parent-pom-30)))
402 (native-inputs
403 `(("unzip" ,unzip)
404 ("java-junit" ,java-junit)
405 ("java-hamcrest-core" ,java-hamcrest-core)
406 ("java-commons-lang3" ,java-commons-lang3)))
407 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
408 (synopsis "Plexus-util replacement for maven")
409 (description "This project aims to be a functional replacement for
410 plexus-utils in Maven. It is not a 100% API compatible replacement but a
411 replacement with improvements.")
412 (license license:asl2.0)))
413
414 (define-public maven-plugin-annotations
415 (package
416 (name "maven-plugin-annotations")
417 (version "3.5")
418 (source (origin
419 (method url-fetch)
420 (uri (string-append "mirror://apache/maven/"
421 "plugin-tools/maven-plugin-tools-" version
422 "-source-release.zip"))
423 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
424 (build-system ant-build-system)
425 (arguments
426 `(#:jar-name "maven-plugin-annotations.jar"
427 #:source-dir "maven-plugin-annotations/src/main/java"
428 #:tests? #f))
429 (inputs
430 `(("maven-artifact" ,maven-artifact)))
431 (native-inputs
432 `(("unzip" ,unzip)))
433 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
434 (synopsis "Java 5 annotations to use in Mojos")
435 (description "This package contains Java 5 annotations for use in Mojos.")
436 (license license:asl2.0)))
437
438 (define-public maven-wagon-provider-api
439 (package
440 (name "maven-wagon-provider-api")
441 (version "3.3.4")
442 (source (origin
443 (method url-fetch)
444 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
445 "wagon-" version "-source-release.zip"))
446 (sha256
447 (base32
448 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
449 (build-system ant-build-system)
450 (arguments
451 `(#:jar-name "maven-wagon-provider-api.jar"
452 #:source-dir "wagon-provider-api/src/main/java"
453 #:test-dir "wagon-provider-api/src/test"
454 #:phases
455 (modify-phases %standard-phases
456 (replace 'install
457 (install-from-pom "wagon-provider-api/pom.xml")))))
458 (propagated-inputs
459 `(("java-plexus-utils" ,java-plexus-utils)
460 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
461 (native-inputs
462 `(("unzip" ,unzip)
463 ("java-junit" ,java-junit)
464 ("java-easymock" ,java-easymock)))
465 (home-page "https://maven.apache.org/wagon")
466 (synopsis "Transport abstraction for Maven")
467 (description "Maven Wagon is a transport abstraction that is used in Maven's
468 artifact and repository handling code.")
469 (license license:asl2.0)))
470
471 (define maven-wagon-parent-pom
472 (package
473 (inherit maven-wagon-provider-api)
474 (arguments
475 `(#:tests? #f
476 #:phases
477 (modify-phases %standard-phases
478 (delete 'configure)
479 (delete 'build)
480 (replace 'install
481 (install-pom-file "pom.xml")))))
482 (propagated-inputs
483 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
484 (native-inputs
485 `(("unzip" ,unzip)))))
486
487 (define-public maven-wagon-provider-test
488 (package
489 (inherit maven-wagon-provider-api)
490 (name "maven-wagon-provider-test")
491 (arguments
492 `(#:jar-name "maven-wagon-provider-test.jar"
493 #:source-dir "wagon-provider-test/src/main/java"
494 #:tests? #f; no tests
495 #:jdk ,icedtea-8))
496 (inputs
497 `(("java-plexus-utils" ,java-plexus-utils)
498 ("java-plexus-container-default" ,java-plexus-container-default)
499 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
500 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
501 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
502 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
503 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
504 ("java-slf4j-api" ,java-slf4j-api)
505 ("java-javaee-servletapi" ,java-javaee-servletapi)
506 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
507 (synopsis "Test classes from maven-wagon")
508 (description "Maven Wagon is a transport abstraction that is used in Maven's
509 artifact and repository handling code. This package contains common test
510 classes used in multiple maven-wagon components.")))
511
512 (define-public maven-wagon-file
513 (package
514 (inherit maven-wagon-provider-api)
515 (name "maven-wagon-file")
516 (arguments
517 `(#:jar-name "maven-wagon-file.jar"
518 #:source-dir "wagon-providers/wagon-file/src/main/java"
519 #:test-dir "wagon-providers/wagon-file/src/test"
520 #:jdk ,icedtea-8
521 #:phases
522 (modify-phases %standard-phases
523 (add-before 'check 'fix-paths
524 (lambda _
525 ;; Tests assume they are run by maven, which copies test resources
526 ;; to target. Our ant-build-system does the same, but with the
527 ;; build directory.
528 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
529 (("target") "build"))
530 #t))
531 (add-after 'build 'generate-metadata
532 (lambda _
533 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
534 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
535 "--source" "wagon-providers/wagon-file/src/main/java"
536 "--output" "build/classes/META-INF/plexus/components.xml"
537 "--classes" "build/classes"
538 "--descriptors" "build/classes/META-INF")
539 #t))
540 (add-after 'generate-metadata 'rebuild
541 (lambda _
542 (invoke "ant" "jar")
543 #t)))))
544 (inputs
545 `(("java-plexus-utils" ,java-plexus-utils)
546 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
547 (native-inputs
548 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
549 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
550 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
551 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
552 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
553 ("java-plexus-classworlds" ,java-plexus-classworlds)
554 ("java-guava" ,java-guava)
555 ("java-guice" ,java-guice)
556 ("java-javax-inject" ,java-javax-inject)
557 ("java-cglib" ,java-cglib)
558 ("java-slf4j-api" ,java-slf4j-api)
559 ("java-plexus-utils" ,java-plexus-utils)
560 ("java-plexus-cli" ,java-plexus-cli)
561 ("maven-plugin-api" ,maven-plugin-api)
562 ("maven-plugin-annotations" ,maven-plugin-annotations)
563 ("maven-core" ,maven-core)
564 ("maven-model" ,maven-model)
565 ("java-commons-cli" ,java-commons-cli)
566 ("java-qdox" ,java-qdox)
567 ("java-jdom2" ,java-jdom2)
568 ("java-asm" ,java-asm)
569 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
570 ,@(package-native-inputs maven-wagon-provider-api)))
571 (synopsis "Wagon provider that gets and puts artifacts using the file system")
572 (description "Maven Wagon is a transport abstraction that is used in Maven's
573 artifact and repository handling code. It uses providers, that are tools to
574 manage artifacts and deployment. This package contains the file provider which
575 gets and puts artifacts using the file system.")))
576
577 (define-public maven-wagon-tck-http
578 (package
579 (inherit maven-wagon-provider-api)
580 (name "maven-wagon-tck-http")
581 (arguments
582 `(#:jar-name "maven-wagon-tck-http.jar"
583 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
584 #:tests? #f; no tests
585 #:jdk ,icedtea-8))
586 (inputs
587 `(("java-plexus-util" ,java-plexus-utils)
588 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
589 ("java-javaee-servletapi" ,java-javaee-servletapi)
590 ("java-slf4j-api" ,java-slf4j-api)
591 ("java-commons-codec" ,java-commons-codec)
592 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
593 ("java-plexus-classworlds" ,java-plexus-classworlds)
594 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
595 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
596 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
597 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
598 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
599 (synopsis "Wagon HTTP Test Compatibility Kit")
600 (description "Maven Wagon is a transport abstraction that is used in Maven's
601 artifact and repository handling code. This package contains the HTTP
602 Test Compatibility Kit.")))
603
604 (define-public maven-wagon-http-shared
605 (package
606 (inherit maven-wagon-provider-api)
607 (name "maven-wagon-http-shared")
608 (arguments
609 `(#:jar-name "maven-wagon-http-shared.jar"
610 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
611 #:test-dir "wagon-providers/wagon-http-shared/src/test"
612 #:jdk ,icedtea-8
613 #:phases
614 (modify-phases %standard-phases
615 (add-after 'build 'generate-metadata
616 (lambda _
617 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
618 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
619 "--source" "wagon-providers/wagon-http-shared/src/main/java"
620 "--output" "build/classes/META-INF/plexus/components.xml"
621 "--classes" "build/classes"
622 "--descriptors" "build/classes/META-INF")
623 #t))
624 (add-after 'generate-metadata 'rebuild
625 (lambda _
626 (invoke "ant" "jar")
627 #t)))))
628 (inputs
629 `(("java-plexus-utils" ,java-plexus-utils)
630 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
631 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
632 ("java-commons-io" ,java-commons-io)
633 ("java-jsoup" ,java-jsoup)
634 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
635 (native-inputs
636 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
637 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
638 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
639 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
640 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
641 ("java-plexus-classworlds" ,java-plexus-classworlds)
642 ("java-guava" ,java-guava)
643 ("java-guice" ,java-guice)
644 ("java-javax-inject" ,java-javax-inject)
645 ("java-cglib" ,java-cglib)
646 ("java-slf4j-api" ,java-slf4j-api)
647 ("java-plexus-utils" ,java-plexus-utils)
648 ("java-plexus-cli" ,java-plexus-cli)
649 ("maven-plugin-api" ,maven-plugin-api)
650 ("maven-plugin-annotations" ,maven-plugin-annotations)
651 ("maven-core" ,maven-core)
652 ("maven-model" ,maven-model)
653 ("java-commons-cli" ,java-commons-cli)
654 ("java-qdox" ,java-qdox)
655 ("java-jdom2" ,java-jdom2)
656 ("java-asm" ,java-asm)
657 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
658 ,@(package-native-inputs maven-wagon-provider-api)))
659 (synopsis "Shared Library for wagon providers supporting HTTP.")
660 (description "Maven Wagon is a transport abstraction that is used in Maven's
661 artifact and repository handling code. It uses providers, that are tools to
662 manage artifacts and deployment. This package contains a shared library for
663 wagon providers supporting HTTP.")))
664
665 (define-public maven-wagon-http
666 (package
667 (inherit maven-wagon-provider-api)
668 (name "maven-wagon-http")
669 (arguments
670 `(#:jar-name "maven-wagon-http.jar"
671 #:source-dir "wagon-providers/wagon-http/src/main/java"
672 #:test-dir "wagon-providers/wagon-http/src/test"
673 #:test-exclude (list
674 "**/Abstract*.java"
675 ;; FIXME: javax.net.ssl.SSLHandshakeException:
676 ;; sun.security.validator.ValidatorException:
677 ;; PKIX path building failed:
678 ;; sun.security.provider.certpath.SunCertPathBuilderException:
679 ;; unable to find valid certification path to requested target
680 "**/HttpsWagonPreemptiveTest.java"
681 "**/HttpsWagonTest.java"
682 ;; Injection errors
683 "**/TckTest.java")
684 #:jdk ,icedtea-8
685 #:phases
686 (modify-phases %standard-phases
687 (add-before 'build 'copy-resources
688 (lambda _
689 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
690 "build/classes/META-INF/plexus")
691 #t))
692 (add-before 'check 'fix-resource-path
693 (lambda _
694 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
695 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
696 (("src/test") "wagon-providers/wagon-http/src/test"))
697 #t)))))
698 (inputs
699 `(("java-plexus-utils" ,java-plexus-utils)
700 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
701 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
702 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
703 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
704 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
705 (native-inputs
706 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
707 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
708 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
709 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
710 ("java-plexus-container-default" ,java-plexus-container-default)
711 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
712 ("java-plexus-classworlds" ,java-plexus-classworlds)
713 ("java-guava" ,java-guava)
714 ("java-guice" ,java-guice)
715 ("java-inject" ,java-javax-inject)
716 ("java-cglib" ,java-cglib)
717 ("java-slf4j-api" ,java-slf4j-api)
718 ("java-plexus-utils" ,java-plexus-utils)
719 ("java-plexus-cli" ,java-plexus-cli)
720 ("maven-plugin-api" ,maven-plugin-api)
721 ("maven-plugin-annotations" ,maven-plugin-annotations)
722 ("maven-core" ,maven-core)
723 ("maven-model" ,maven-model)
724 ("java-commons-cli" ,java-commons-cli)
725 ("java-qdox" ,java-qdox)
726 ("java-jdom2" ,java-jdom2)
727 ("java-asm" ,java-asm)
728 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
729 ("java-javaee-servletapi" ,java-javaee-servletapi)
730 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
731 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
732 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
733 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
734 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
735 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
736 ("java-hamcrest-core" ,java-hamcrest-core)
737 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
738 ("java-commons-codec" ,java-commons-codec)
739 ("java-commons-io" ,java-commons-io)
740 ("java-jsoup" ,java-jsoup)
741 ("java-slf4j-simple" ,java-slf4j-simple)
742 ,@(package-native-inputs maven-wagon-provider-api)))
743 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
744 (description "Maven Wagon is a transport abstraction that is used in Maven's
745 artifact and repository handling code. It uses providers, that are tools to
746 manage artifacts and deployment. This package contains a Wagon provider that
747 gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
748
749 (define maven-pom
750 (package
751 (name "maven-pom")
752 (version "3.6.1")
753 (source (origin
754 (method url-fetch)
755 (uri (string-append "mirror://apache/maven/"
756 "maven-3/" version "/source/"
757 "apache-maven-" version "-src.tar.gz"))
758 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
759 (modules '((guix build utils)))
760 (snippet
761 '(begin
762 (for-each delete-file (find-files "." "\\.jar$"))
763 #t))
764 (patches
765 (search-patches "maven-generate-component-xml.patch"
766 "maven-generate-javax-inject-named.patch"))))
767 (build-system ant-build-system)
768 (arguments
769 `(#:tests? #f
770 #:phases
771 (modify-phases %standard-phases
772 (delete 'configure)
773 (delete 'build)
774 (add-before 'install 'fix-dependencies
775 (lambda _
776 (substitute* "pom.xml"
777 (("classWorldsVersion>.*")
778 (string-append
779 "classWorldsVersion>"
780 ,(package-version java-plexus-classworlds)
781 "</classWorldsVersion>\n"))
782 (("commonsCliVersion>.*")
783 (string-append
784 "commonsCliVersion>"
785 ,(package-version java-commons-cli)
786 "</commonsCliVersion>\n"))
787 (("commonsLangVersion>.*")
788 (string-append
789 "commonsLangVersion>"
790 ,(package-version java-commons-lang3)
791 "</commonsLangVersion>\n"))
792 (("plexusUtilsVersion>.*")
793 (string-append
794 "plexusUtilsVersion>"
795 ,(package-version java-plexus-utils)
796 "</plexusUtilsVersion>\n"))
797 (("plexusInterpolationVersion>.*")
798 (string-append
799 "plexusInterpolationVersion>"
800 ,(package-version java-plexus-interpolation)
801 "</plexusInterpolationVersion>\n"))
802 (("guiceVersion>.*")
803 (string-append
804 "guiceVersion>"
805 ,(package-version java-guice)
806 "</guiceVersion>\n"))
807 (("sisuInjectVersion>.*")
808 (string-append
809 "sisuInjectVersion>"
810 ,(package-version java-eclipse-sisu-inject)
811 "</sisuInjectVersion>\n"))
812 (("securityDispatcherVersion>.*")
813 (string-append
814 "securityDispatcherVersion>"
815 ,(package-version java-plexus-sec-dispatcher)
816 "</securityDispatcherVersion>\n"))
817 (("cipherVersion>.*")
818 (string-append
819 "cipherVersion>"
820 ,(package-version java-plexus-cipher)
821 "</cipherVersion>\n"))
822 (("slf4jVersion>.*")
823 (string-append
824 "slf4jVersion>"
825 ,(package-version java-slf4j-api)
826 "</slf4jVersion>\n"))
827 (("<classifier>no_aop</classifier>") ""))
828 #t))
829 (replace 'install
830 (install-pom-file "pom.xml")))))
831 (propagated-inputs
832 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
833 (home-page "https://maven.apache.org/")
834 (synopsis "Build system")
835 (description "Apache Maven is a software project management and comprehension
836 tool. This package contains the Maven pom file, used by all maven components.")
837 (license license:asl2.0)))
838
839 (define-public maven-artifact
840 (package
841 (inherit maven-pom)
842 (name "maven-artifact")
843 (arguments
844 `(#:jar-name "maven-artifact.jar"
845 #:source-dir "maven-artifact/src/main/java"
846 #:test-dir "maven-artifact/src/test"
847 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
848 #:phases
849 (modify-phases %standard-phases
850 (replace 'install
851 (install-from-pom "maven-artifact/pom.xml")))))
852 (propagated-inputs
853 `(("java-plexus-utils" ,java-plexus-utils)
854 ("java-commons-lang3" ,java-commons-lang3)
855 ("maven-pom" ,maven-pom)))
856 (native-inputs
857 `(("java-junit" ,java-junit)))
858 (description "Apache Maven is a software project management and comprehension
859 tool. This package contains the Maven Artifact classes, providing the
860 @code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
861 jar file is executable and provides a little tool to display how Maven parses
862 and compares versions:")))
863
864 (define-public maven-model
865 (package
866 (inherit maven-artifact)
867 (name "maven-model")
868 (arguments
869 `(#:jar-name "maven-model.jar"
870 #:source-dir "maven-model/src/main/java"
871 #:test-dir "maven-model/src/test"
872 #:phases
873 (modify-phases %standard-phases
874 (add-before 'build 'generate-models
875 (lambda* (#:key inputs #:allow-other-keys)
876 (define (modello-single-mode file version mode)
877 (invoke "java" "org.codehaus.modello.ModelloCli"
878 file mode "maven-model/src/main/java" version
879 "false" "true"))
880 (let ((file "maven-model/src/main/mdo/maven.mdo"))
881 (modello-single-mode file "4.0.0" "java")
882 (modello-single-mode file "4.0.0" "xpp3-reader")
883 (modello-single-mode file "4.0.0" "xpp3-writer")
884 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
885 #t))
886 (replace 'install (install-from-pom "maven-model/pom.xml")))))
887 (propagated-inputs
888 `(("java-commons-lang3" ,java-commons-lang3)
889 ("java-plexus-utils" ,java-plexus-utils)
890 ("maven-pom" ,maven-pom)))
891 (native-inputs
892 `(("java-modello-core" ,java-modello-core)
893 ;; for modello:
894 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
895 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
896 ("java-guice" ,java-guice)
897 ("java-cglib" ,java-cglib)
898 ("java-asm" ,java-asm)
899 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
900 ("java-javax-inject" ,java-javax-inject)
901 ("java-plexus-classworlds" ,java-plexus-classworlds)
902 ("java-guava" ,java-guava)
903 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
904 ("java-sisu-build-api" ,java-sisu-build-api)
905 ;; modello plugins:
906 ("java-modello-plugins-java" ,java-modello-plugins-java)
907 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
908 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
909 ;; for tests
910 ("java-junit" ,java-junit)))
911 (description "Apache Maven is a software project management and comprehension
912 tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
913 so really just plain Java objects.")))
914
915 (define-public maven-builder-support
916 (package
917 (inherit maven-artifact)
918 (name "maven-builder-support")
919 (arguments
920 `(#:jar-name "maven-builder-support.jar"
921 #:source-dir "maven-builder-support/src/main/java"
922 #:jdk ,icedtea-8
923 #:test-dir "maven-builder-support/src/test"
924 #:phases
925 (modify-phases %standard-phases
926 (add-before 'check 'fix-paths
927 (lambda _
928 (with-directory-excursion "maven-builder-support/src/test/java"
929 (substitute*
930 '("org/apache/maven/building/FileSourceTest.java"
931 "org/apache/maven/building/UrlSourceTest.java")
932 (("target/test-classes") "maven-builder-support/src/test/resources")))
933 #t))
934 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
935 (propagated-inputs
936 `(("maven-pom" ,maven-pom)))
937 (native-inputs
938 `(("java-junit" ,java-junit)))
939 (description "Apache Maven is a software project management and comprehension
940 tool. This package contains a support library for descriptor builders (model,
941 setting, toolchains)")))
942
943 (define-public maven-settings
944 (package
945 (inherit maven-artifact)
946 (name "maven-settings")
947 (arguments
948 `(#:jar-name "maven-settings.jar"
949 #:source-dir "maven-settings/src/main/java"
950 #:tests? #f; no tests
951 #:phases
952 (modify-phases %standard-phases
953 (add-before 'build 'generate-models
954 (lambda* (#:key inputs #:allow-other-keys)
955 (define (modello-single-mode file version mode)
956 (invoke "java" "org.codehaus.modello.ModelloCli"
957 file mode "maven-settings/src/main/java" version
958 "false" "true"))
959 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
960 (modello-single-mode file "1.1.0" "java")
961 (modello-single-mode file "1.1.0" "xpp3-reader")
962 (modello-single-mode file "1.1.0" "xpp3-writer"))
963 #t))
964 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
965 (propagated-inputs
966 `(("java-plexus-utils" ,java-plexus-utils)
967 ("maven-pom" ,maven-pom)))
968 (native-inputs
969 `(("java-modello-core" ,java-modello-core)
970 ;; for modello:
971 ;("container" ,java-plexus-container-default)
972 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
973 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
974 ("java-guice" ,java-guice)
975 ("java-cglib" ,java-cglib)
976 ("java-asm" ,java-asm)
977 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
978 ("java-javax-inject" ,java-javax-inject)
979 ("java-plexus-classworlds" ,java-plexus-classworlds)
980 ("java-plexus-utils" ,java-plexus-utils)
981 ("java-guava" ,java-guava)
982 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
983 ("java-sisu-build-api" ,java-sisu-build-api)
984 ;; modello plugins:
985 ("java-modello-plugins-java" ,java-modello-plugins-java)
986 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
987 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
988 (description "Apache Maven is a software project management and comprehension
989 tool. This package contains strictly the model for Maven settings, that is
990 simply plain java objects.")))
991
992 (define-public maven-settings-builder
993 (package
994 (inherit maven-artifact)
995 (name "maven-settings-builder")
996 (arguments
997 `(#:jar-name "maven-settings-builder.jar"
998 #:source-dir "maven-settings-builder/src/main/java"
999 #:jdk ,icedtea-8
1000 #:test-dir "maven-settings-builder/src/test"
1001 #:phases
1002 (modify-phases %standard-phases
1003 (add-before 'build 'generate-components.xml
1004 (lambda _
1005 (mkdir-p "build/classes/META-INF/plexus")
1006 (chmod "components.sh" #o755)
1007 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1008 "build/classes/META-INF/plexus/components.xml")
1009 #t))
1010 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1011 (propagated-inputs
1012 `(("java-plexus-utils" ,java-plexus-utils)
1013 ("java-plexus-interpolation" ,java-plexus-interpolation)
1014 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1015 ("maven-builder-support" ,maven-builder-support)
1016 ("maven-settings" ,maven-settings)
1017 ("maven-pom" ,maven-pom)))
1018 (native-inputs
1019 `(("java-junit" ,java-junit)
1020 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
1021 (description "Apache Maven is a software project management and comprehension
1022 tool. This package contains the effective model builder, with profile activation,
1023 inheritance, interpolation, @dots{}")))
1024
1025 (define-public maven-model-builder
1026 (package
1027 (inherit maven-artifact)
1028 (name "maven-model-builder")
1029 (arguments
1030 `(#:jar-name "maven-model-builder.jar"
1031 #:source-dir "maven-model-builder/src/main/java"
1032 #:jdk ,icedtea-8
1033 #:test-dir "maven-model-builder/src/test"
1034 #:phases
1035 (modify-phases %standard-phases
1036 (add-before 'build 'copy-resources
1037 (lambda _
1038 (copy-recursively "maven-model-builder/src/main/resources"
1039 "build/classes")
1040 #t))
1041 (add-before 'build 'generate-components.xml
1042 (lambda _
1043 (mkdir-p "build/classes/META-INF/plexus")
1044 (chmod "components.sh" #o755)
1045 (invoke "./components.sh" "maven-model-builder/src/main/java"
1046 "build/classes/META-INF/plexus/components.xml")
1047 #t))
1048 (add-before 'check 'fix-paths
1049 (lambda _
1050 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1051 (("src/test") "maven-model-builder/src/test"))
1052 #t))
1053 (replace 'install
1054 (install-from-pom "maven-model-builder/pom.xml")))))
1055 (propagated-inputs
1056 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1057 ("java-plexus-utils" ,java-plexus-utils)
1058 ("maven-artifact" ,maven-artifact)
1059 ("maven-builder-support" ,maven-builder-support)
1060 ("maven-model" ,maven-model)
1061 ("maven-pom" ,maven-pom)))
1062 (native-inputs
1063 `(("java-junit" ,java-junit)
1064 ("java-guava" ,java-guava)
1065 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1066 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1067 ("guice" ,java-guice)
1068 ("java-cglib" ,java-cglib)
1069 ("java-asm" ,java-asm)
1070 ("sisu-inject" ,java-eclipse-sisu-inject)
1071 ("javax-inject" ,java-javax-inject)
1072 ("java-xmlunit" ,java-xmlunit)
1073 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
1074 ("xbean" ,java-geronimo-xbean-reflect)
1075 ("classworlds" ,java-plexus-classworlds)))
1076 (description "Apache Maven is a software project management and comprehension
1077 tool. This package contains the effective model builder, with profile activation,
1078 inheritance, interpolation, @dots{}")))
1079
1080 (define-public maven-repository-metadata
1081 (package
1082 (inherit maven-artifact)
1083 (name "maven-repository-metadata")
1084 (arguments
1085 `(#:jar-name "maven-repository-metadata.jar"
1086 #:source-dir "maven-repository-metadata/src/main/java"
1087 #:jdk ,icedtea-8
1088 #:tests? #f; no tests
1089 #:phases
1090 (modify-phases %standard-phases
1091 (add-before 'build 'generate-models
1092 (lambda* (#:key inputs #:allow-other-keys)
1093 (define (modello-single-mode file version mode)
1094 (invoke "java" "org.codehaus.modello.ModelloCli"
1095 file mode "maven-repository-metadata/src/main/java" version
1096 "false" "true"))
1097 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1098 (modello-single-mode file "1.1.0" "java")
1099 (modello-single-mode file "1.1.0" "xpp3-reader")
1100 (modello-single-mode file "1.1.0" "xpp3-writer"))
1101 #t))
1102 (replace 'install
1103 (install-from-pom "maven-repository-metadata/pom.xml")))))
1104 (propagated-inputs
1105 `(("java-plexus-utils" ,java-plexus-utils)
1106 ("maven-pom" ,maven-pom)))
1107 (native-inputs
1108 `(("modello" ,java-modello-core)
1109 ;; for modello:
1110 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1111 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1112 ("java-guice" ,java-guice)
1113 ("java-cglib" ,java-cglib)
1114 ("java-asm" ,java-asm)
1115 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1116 ("java-javax-inject" ,java-javax-inject)
1117 ("java-plexus-utils" ,java-plexus-utils)
1118 ("java-plexus-classworlds" ,java-plexus-classworlds)
1119 ("java-guava" ,java-guava)
1120 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1121 ("java-sisu-build-api" ,java-sisu-build-api)
1122 ;; modello plugins:
1123 ("java-modello-plugins-java" ,java-modello-plugins-java)
1124 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1125 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1126 (description "Apache Maven is a software project management and comprehension
1127 tool. This package contains strictly the model for Maven Repository Metadata,
1128 so really just plain objects.")))
1129
1130 (define-public maven-resolver-provider
1131 (package
1132 (inherit maven-artifact)
1133 (name "maven-resolver-provider")
1134 (arguments
1135 `(#:jar-name "maven-resolver-provider.jar"
1136 #:source-dir "maven-resolver-provider/src/main/java"
1137 #:test-dir "maven-resolver-provider/src/test"
1138 #:jdk ,icedtea-8
1139 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1140 #:phases
1141 (modify-phases %standard-phases
1142 (add-before 'build 'generate-sisu-named
1143 (lambda _
1144 (mkdir-p "build/classes/META-INF/sisu")
1145 (chmod "./sisu.sh" #o755)
1146 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1147 "build/classes/META-INF/sisu/javax.inject.Named")
1148 #t))
1149 (replace 'install
1150 (install-from-pom "maven-resolver-provider/pom.xml")))))
1151 (propagated-inputs
1152 `(("maven-model" ,maven-model)
1153 ("maven-model-builder" ,maven-model-builder)
1154 ("maven-resolver-spi" ,maven-resolver-spi)
1155 ("maven-resolver-api" ,maven-resolver-api)
1156 ("maven-resolver-impl" ,maven-resolver-impl)
1157 ("maven-resolver-util" ,maven-resolver-util)
1158 ("maven-builder-support" ,maven-builder-support)
1159 ("maven-repository-metadata" ,maven-repository-metadata)
1160 ("java-plexus-utils" ,java-plexus-utils)
1161 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1162 ("java-guice" ,java-guice)
1163 ("java-javax-inject" ,java-javax-inject)))))
1164
1165 (define-public maven-plugin-api
1166 (package
1167 (inherit maven-artifact)
1168 (name "maven-plugin-api")
1169 (arguments
1170 `(#:jar-name "maven-plugin-api.jar"
1171 #:source-dir "maven-plugin-api/src/main/java"
1172 #:jdk ,icedtea-8
1173 #:test-dir "maven-plugin-api/src/test"
1174 #:phases
1175 (modify-phases %standard-phases
1176 (add-before 'build 'generate-models
1177 (lambda* (#:key inputs #:allow-other-keys)
1178 (define (modello-single-mode file version mode)
1179 (invoke "java" "org.codehaus.modello.ModelloCli"
1180 file mode "maven-plugin-api/src/main/java" version
1181 "false" "true"))
1182 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1183 (modello-single-mode file "1.0.0" "java")
1184 (modello-single-mode file "1.0.0" "xpp3-reader")
1185 (modello-single-mode file "1.0.0" "xpp3-writer"))
1186 #t))
1187 (replace 'install
1188 (install-from-pom "maven-plugin-api/pom.xml")))))
1189 (propagated-inputs
1190 `(("maven-artifact" ,maven-artifact)
1191 ("maven-model" ,maven-model)
1192 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1193 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1194 ("guice" ,java-guice)
1195 ("java-cglib" ,java-cglib)
1196 ("java-asm" ,java-asm)
1197 ("sisu-inject" ,java-eclipse-sisu-inject)
1198 ("javax-inject" ,java-javax-inject)
1199 ("utils" ,java-plexus-utils)))
1200 (native-inputs
1201 `(("modello" ,java-modello-core)
1202 ;; for modello:
1203 ("classworlds" ,java-plexus-classworlds)
1204 ("guava" ,java-guava)
1205 ("xbean" ,java-geronimo-xbean-reflect)
1206 ("build-api" ,java-sisu-build-api)
1207 ;; modello plugins:
1208 ("java" ,java-modello-plugins-java)
1209 ("xml" ,java-modello-plugins-xml)
1210 ("xpp3" ,java-modello-plugins-xpp3)
1211 ;; for tests
1212 ("java-junit" ,java-junit)))
1213 (description "Apache Maven is a software project management and comprehension
1214 tool. This package contains strictly the API for plugins -- composed of goals
1215 implemented by Mojos -- development.
1216
1217 A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1218 generally generated from plugin sources using maven-plugin-plugin.")))
1219
1220 (define maven-core-bootstrap
1221 (package
1222 (inherit maven-artifact)
1223 (name "maven-core")
1224 (arguments
1225 `(#:jar-name "maven-core.jar"
1226 #:source-dir "src/main/java"
1227 #:jdk ,icedtea-8
1228 ;; Tests need maven-compat, which requires maven-core
1229 #:tests? #f
1230 #:phases
1231 (modify-phases %standard-phases
1232 (add-before 'configure 'chdir
1233 (lambda _
1234 ;; Required for generating components.xml in maven-core
1235 (chdir "maven-core")
1236 #t))
1237 (add-before 'build 'copy-resources
1238 (lambda _
1239 (mkdir-p "build/classes/")
1240 (copy-recursively "src/main/resources" "build/classes")
1241 #t))
1242 (add-after 'copy-resources 'fill-properties
1243 (lambda _
1244 ;; This file controls the output of some mvn subcommands, such as
1245 ;; mvn -version.
1246 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1247 (("\\$\\{buildNumber\\}") "guix_build")
1248 (("\\$\\{timestamp\\}") "0")
1249 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1250 (("\\$\\{distributionId\\}") "apache-maven")
1251 (("\\$\\{distributionShortName\\}") "Maven")
1252 (("\\$\\{distributionName\\}") "Apache Maven"))
1253 #t))
1254 (add-before 'build 'generate-sisu-named
1255 (lambda _
1256 (mkdir-p "build/classes/META-INF/sisu")
1257 (chmod "../sisu.sh" #o755)
1258 (invoke "../sisu.sh" "src/main/java"
1259 "build/classes/META-INF/sisu/javax.inject.Named")
1260 #t))
1261 (add-before 'build 'generate-models
1262 (lambda* (#:key inputs #:allow-other-keys)
1263 (define (modello-single-mode file version mode)
1264 (invoke "java" "org.codehaus.modello.ModelloCli"
1265 file mode "src/main/java" version
1266 "false" "true"))
1267 (let ((file "src/main/mdo/toolchains.mdo"))
1268 (modello-single-mode file "1.1.0" "java")
1269 (modello-single-mode file "1.1.0" "xpp3-reader")
1270 (modello-single-mode file "1.1.0" "xpp3-writer"))
1271 #t))
1272 (add-before 'install 'fix-pom
1273 (lambda _
1274 (substitute* "pom.xml"
1275 (("<classifier>no_aop</classifier>") ""))
1276 #t))
1277 (replace 'install
1278 (install-from-pom "pom.xml")))))
1279 (propagated-inputs
1280 `(("maven-artifact" ,maven-artifact)
1281 ("maven-resolver-provider" ,maven-resolver-provider)
1282 ("maven-builder-support" ,maven-builder-support)
1283 ("maven-model" ,maven-model)
1284 ("maven-model-builder" ,maven-model-builder)
1285 ("maven-settings" ,maven-settings)
1286 ("maven-settings-builder" ,maven-settings-builder)
1287 ("maven-plugin-api" ,maven-plugin-api)
1288 ("maven-repository-metadata" ,maven-repository-metadata)
1289 ("maven-shared-utils" ,maven-shared-utils)
1290 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1291 ("java-plexus-utils" ,java-plexus-utils)
1292 ("java-commons-lang3" ,java-commons-lang3)
1293 ("java-guava" ,java-guava)
1294 ("java-guice" ,java-guice)
1295 ("maven-resolver-api" ,maven-resolver-api)
1296 ("maven-resolver-spi" ,maven-resolver-spi)
1297 ("maven-resolver-util" ,maven-resolver-util)
1298 ("maven-resolver-impl" ,maven-resolver-impl)
1299 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1300 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1301 ("java-javax-inject" ,java-javax-inject)
1302 ("java-plexus-classworld" ,java-plexus-classworlds)))
1303 (native-inputs
1304 `(("java-modello-core" ,java-modello-core)
1305 ("java-cglib" ,java-cglib)
1306 ("java-asm" ,java-asm)
1307 ("java-plexus-classworlds" ,java-plexus-classworlds)
1308 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1309 ("java-sisu-build-api" ,java-sisu-build-api)
1310 ("java-modello-plugins-java" ,java-modello-plugins-java)
1311 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1312 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1313 ;; tests
1314 ("java-junit" ,java-junit)
1315 ("java-mockito-1" ,java-mockito-1)
1316 ("java-commons-jxpath" ,java-commons-jxpath)))
1317 (description "Apache Maven is a software project management and comprehension
1318 tool. This package contains the maven core classes managing the whole build
1319 process.")))
1320
1321 (define-public maven-core
1322 (package
1323 (inherit maven-core-bootstrap)
1324 (arguments
1325 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1326 ((#:phases phases)
1327 `(modify-phases ,phases
1328 (add-before 'build 'modify-metainf
1329 (lambda _
1330 (substitute* "build.xml"
1331 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
1332 #t))
1333 (add-before 'build 'add-maven-files
1334 (lambda _
1335 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1336 (copy-file "pom.xml"
1337 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1338 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1339 (lambda _
1340 (format #t "version=~a~%
1341 groupId=org.apache.maven~%
1342 artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1343 #t))
1344 (add-after 'build 'generate-metadata
1345 (lambda _
1346 (define (components file)
1347 (let ((sxml (with-input-from-file file
1348 (lambda _ (xml->sxml (current-input-port)
1349 #:trim-whitespace? #t)))))
1350 ;; Select the list of <component>s inside the <component-set>
1351 ;; and <components>.
1352 ((@ (ice-9 match) match) sxml
1353 (('*TOP*
1354 ('*PI* foo ...)
1355 ('component-set
1356 ('components x ...))) x))))
1357 (use-modules (sxml simple))
1358 (delete-file "build/classes/META-INF/plexus/components.xml")
1359 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1360 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1361 "--source" "build/classes/META-INF/plexus"
1362 "--output" "build/classes/META-INF/plexus/components.t.xml"
1363 "--classes" "build/classes"
1364 "--descriptors" "build/classes")
1365 ;; Now we merge all other components from hand-written xml
1366 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1367 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1368 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1369 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1370 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1371 (lambda _
1372 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1373 (sxml->xml
1374 `(component-set
1375 (components
1376 ,@(append generated-xml components-xml
1377 default-bindings-xml
1378 artifact-handlers-xml)))))))
1379 #t))
1380 (add-after 'generate-metadata 'rebuild
1381 (lambda _
1382 (invoke "ant" "jar")
1383 #t))))))
1384 (native-inputs
1385 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1386 ("java-commons-cli" ,java-commons-cli)
1387 ("java-plexus-cli" ,java-plexus-cli)
1388 ("java-jdom2" ,java-jdom2)
1389 ("java-qdox" ,java-qdox)
1390 ("maven-core-boot" ,maven-core-bootstrap)
1391 ,@(package-native-inputs maven-core-bootstrap)))))
1392
1393 (define-public maven-embedder
1394 (package
1395 (inherit maven-artifact)
1396 (name "maven-embedder")
1397 (arguments
1398 `(#:jar-name "maven-embedder.jar"
1399 #:source-dir "maven-embedder/src/main/java"
1400 #:test-dir "maven-embedder/src/test"
1401 #:test-exclude (list "**/MavenCliTest.java")
1402 #:jdk ,icedtea-8
1403 #:phases
1404 (modify-phases %standard-phases
1405 (add-before 'build 'generate-sisu-named
1406 (lambda _
1407 (mkdir-p "build/classes/META-INF/sisu")
1408 (chmod "sisu.sh" #o755)
1409 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1410 "build/classes/META-INF/sisu/javax.inject.Named")
1411 #t))
1412 (add-before 'build 'generate-models
1413 (lambda* (#:key inputs #:allow-other-keys)
1414 (define (modello-single-mode file version mode)
1415 (invoke "java" "org.codehaus.modello.ModelloCli"
1416 file mode "maven-embedder/src/main/java" version
1417 "false" "true"))
1418 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1419 (modello-single-mode file "1.0.0" "java")
1420 (modello-single-mode file "1.0.0" "xpp3-reader")
1421 (modello-single-mode file "1.0.0" "xpp3-writer"))
1422 #t))
1423 (add-before 'check 'fix-test-paths
1424 (lambda _
1425 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1426 (("target/test-classes") "build/test-classes"))
1427 #t))
1428 (add-before 'check 'fix-test-compilation
1429 (lambda _
1430 ;; Tests are in the java/ subdir. Other subdirectories contain
1431 ;; additional test plugins, with duplicate classes, so we can't
1432 ;; compile them. Also, they are meant to be built with maven, to
1433 ;; test its build process.
1434 (substitute* "build.xml"
1435 (("srcdir=\"maven-embedder/src/test\"")
1436 "srcdir=\"maven-embedder/src/test/java\""))
1437 #t))
1438 (replace 'install
1439 (install-from-pom "maven-embedder/pom.xml")))))
1440 (propagated-inputs
1441 `(("maven-core" ,maven-core)
1442 ("maven-artifact" ,maven-artifact)
1443 ("maven-plugin-api" ,maven-plugin-api)
1444 ("maven-builder-support" ,maven-builder-support)
1445 ("maven-model" ,maven-model)
1446 ("maven-model-builder" ,maven-model-builder)
1447 ("maven-settings" ,maven-settings)
1448 ("maven-settings-builder" ,maven-settings-builder)
1449 ("maven-shared-utils" ,maven-shared-utils)
1450 ("java-plexus-classworlds" ,java-plexus-classworlds)
1451 ("java-plexus-util" ,java-plexus-utils)
1452 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1453 ("java-plexus-cipher" ,java-plexus-cipher)
1454 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1455 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1456 ("maven-resolevr-util" ,maven-resolver-util)
1457 ("maven-resolevr-api" ,maven-resolver-api)
1458 ("java-logback-core" ,java-logback-core)
1459 ("java-logback-classic" ,java-logback-classic)
1460 ("java-commons-cli" ,java-commons-cli)
1461 ("java-commons-io" ,java-commons-io)
1462 ("java-commons-lang3" ,java-commons-lang3)
1463 ("java-guava" ,java-guava)
1464 ("java-guice" ,java-guice)
1465 ("java-javax-inject" ,java-javax-inject)
1466 ("java-slf4j-api" ,java-slf4j-api)
1467 ("java-slf4j-simple" ,java-slf4j-simple)
1468 ("java-jsr250" ,java-jsr250)))
1469 (native-inputs
1470 `(("java-modello-core" ,java-modello-core)
1471 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1472 ("java-sisu-build-api" ,java-sisu-build-api)
1473 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1474 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1475 ("java-cglib" ,java-cglib)
1476 ("java-asm" ,java-asm)
1477 ("java-modello-plugins-java" ,java-modello-plugins-java)
1478 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1479 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1480 ;; tests
1481 ("java-junit" ,java-junit)
1482 ("java-objenesis" ,java-objenesis)
1483 ("java-mockito-1" ,java-mockito-1)
1484 ("java-hamcrest-core" ,java-hamcrest-core)))
1485 (description "Apache Maven is a software project management and comprehension
1486 tool. This package contains a Maven embeddable component, with CLI and
1487 logging support.")))
1488
1489 (define-public maven-compat
1490 (package
1491 (inherit maven-artifact)
1492 (name "maven-compat")
1493 (arguments
1494 `(#:jar-name "maven-compat.jar"
1495 #:source-dir "src/main/java"
1496 #:jdk ,icedtea-8
1497 #:test-dir "src/test"
1498 #:phases
1499 (modify-phases %standard-phases
1500 ;; Tests assume we're in this directory
1501 (add-before 'configure 'chdir
1502 (lambda _
1503 (chdir "maven-compat")
1504 #t))
1505 (add-before 'build 'recreate-removed-jar
1506 (lambda _
1507 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1508 (const #t))
1509 (with-directory-excursion "src/test/resources"
1510 (with-output-to-file "artifact-install/artifact-1.0.jar"
1511 (lambda _
1512 (format #t "dummy~%")))
1513 (for-each
1514 (lambda (file)
1515 (with-output-to-file file
1516 (lambda _
1517 (format #t "foo~%"))))
1518 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1519 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1520 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1521 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1522 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1523 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1524 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1525 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1526 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1527 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1528 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1529 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1530 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1531 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1532 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1533 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1534 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1535 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1536 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1537 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1538 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1539 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1540 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1541 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1542 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1543 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1544 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1545 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1546 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1547 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1548 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1549 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1550 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1551 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1552 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1553 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1554 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1555 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1556 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1557 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1558 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1559 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1560 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1561 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1562 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1563 (with-directory-excursion "local-repo/snapshot-test/jars"
1564 (for-each
1565 (lambda (file)
1566 (with-output-to-file file
1567 (lambda _
1568 ;; No end-of-line
1569 (format #t "local"))))
1570 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1571 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1572 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1573 (for-each
1574 (lambda (letter)
1575 (with-directory-excursion
1576 (string-append "src/test/remote-repo/org/apache/maven/its/"
1577 letter "/0.1")
1578 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1579 letter)))
1580 (mkdir-p dir)
1581 (copy-file (string-append letter "-0.1.pom")
1582 (string-append dir "/pom.xml"))
1583 (with-output-to-file (string-append dir "/pom.properties")
1584 (lambda _
1585 (format #t "version=0.1~%")
1586 (format #t "groupId=org.apache.maven.its")
1587 (format #t (string-append "artifactId=" letter))))
1588 (with-output-to-file "META-INF/MANIFEST.MF"
1589 (lambda _
1590 (format #t "Manifest-Version: 1.0~%"))))
1591 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1592 (string-append letter "-0.1.jar") "META-INF")))
1593 '("a" "b"))
1594 #t))
1595 (add-before 'build 'generate-models
1596 (lambda* (#:key inputs #:allow-other-keys)
1597 (define (modello-single-mode file version mode)
1598 (invoke "java" "org.codehaus.modello.ModelloCli"
1599 file mode "src/main/java" version
1600 "false" "true"))
1601 (let ((file "src/main/mdo/profiles.mdo"))
1602 (modello-single-mode file "1.0.0" "java")
1603 (modello-single-mode file "1.0.0" "xpp3-reader")
1604 (modello-single-mode file "1.0.0" "xpp3-writer"))
1605 (let ((file "src/main/mdo/paramdoc.mdo"))
1606 (modello-single-mode file "1.0.0" "java")
1607 (modello-single-mode file "1.0.0" "xpp3-reader")
1608 (modello-single-mode file "1.0.0" "xpp3-writer"))
1609 #t))
1610 (add-after 'build 'generate-metadata
1611 (lambda _
1612 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1613 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1614 "--source" "src/main/java"
1615 "--output" "build/classes/META-INF/plexus/components.xml"
1616 "--classes" "build/classes"
1617 "--descriptors" "build/classes/META-INF")
1618 #t))
1619 (add-before 'check 'build-tests
1620 (lambda _
1621 (invoke "ant" "compile-tests")
1622 #t))
1623 (add-after 'build-tests 'generate-test-metadata
1624 (lambda _
1625 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1626 ":build/classes"
1627 ":build/test-classes")
1628 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1629 "--source" "src/test/java"
1630 "--output" "build/test-classes/META-INF/plexus/components.xml"
1631 "--classes" "build/test-classes"
1632 "--descriptors" "build/test-classes/META-INF")
1633 #t))
1634 (add-after 'generate-metadata 'rebuild
1635 (lambda _
1636 (invoke "ant" "jar")
1637 #t))
1638 (replace 'install
1639 (install-from-pom "pom.xml")))))
1640 (propagated-inputs
1641 `(("maven-artifact" ,maven-artifact)
1642 ("maven-repository-metadata" ,maven-repository-metadata)
1643 ("maven-builder-support" ,maven-builder-support)
1644 ("maven-model" ,maven-model)
1645 ("maven-model-builder" ,maven-model-builder)
1646 ("maven-settings" ,maven-settings)
1647 ("maven-settings-builder" ,maven-settings-builder)
1648 ("maven-core" ,maven-core)
1649 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1650 ("maven-wagon-file" ,maven-wagon-file)
1651 ("maven-resolver-api" ,maven-resolver-api)
1652 ("maven-resolver-util" ,maven-resolver-util)
1653 ("maven-resolver-spi" ,maven-resolver-spi)
1654 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1655 (native-inputs
1656 `(("java-modello-core" ,java-modello-core)
1657 ("java-plexus-utils" ,java-plexus-utils)
1658 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1659 ("java-plexus-classworlds" ,java-plexus-classworlds)
1660 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1661 ("java-sisu-build-api" ,java-sisu-build-api)
1662 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1663 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1664 ("java-javax-inject" ,java-javax-inject)
1665 ("java-guice" ,java-guice)
1666 ("java-guava" ,java-guava)
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 ;; metadata
1673 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
1674 ("java-commons-cli" ,java-commons-cli)
1675 ("java-plexus-cli" ,java-plexus-cli)
1676 ("java-jdom2" ,java-jdom2)
1677 ("maven-plugin-api" ,maven-plugin-api)
1678 ("java-qdox" ,java-qdox)
1679 ;; tests
1680 ("java-plexus-cipher" ,java-plexus-cipher)
1681 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1682 ("java-jsr250" ,java-jsr250)
1683 ("java-cdi-api" ,java-cdi-api)
1684 ("java-junit" ,java-junit)
1685 ("maven-resolver-impl" ,maven-resolver-impl)
1686 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1687 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1688 ("java-commons-lang3" ,java-commons-lang3)
1689 ("java-aop" ,java-aopalliance)
1690 ("maven-resolver-provider" ,maven-resolver-provider)
1691 ("java-slf4j-api" ,java-slf4j-api)
1692 ("java-slf4j-simple" ,java-slf4j-simple)
1693 ,@(package-inputs java-slf4j-api)))
1694 (description "Apache Maven is a software project management and comprehension
1695 tool. This package contains Maven2 classes maintained as compatibility
1696 layer for plugins that need to keep Maven2 compatibility.")))
1697
1698 (define-public maven
1699 (package
1700 (inherit maven-artifact)
1701 (name "maven")
1702 (arguments
1703 `(#:phases
1704 (modify-phases %standard-phases
1705 (replace 'build
1706 (lambda* (#:key inputs #:allow-other-keys)
1707 ;; Recreate the configuration for the loader
1708 (with-output-to-file "apache-maven/src/bin/m2.conf"
1709 (lambda _
1710 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1711 (format #t "~%")
1712 (format #t "set maven.conf default ${maven.home}/conf~%")
1713 (format #t "~%")
1714 (format #t "[plexus.core]~%")
1715 (format #t "load ${maven.conf}/logging~%")
1716 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1717 ;; Reference every jar so plexus-classworlds can find them.
1718 (for-each
1719 (lambda (dependency)
1720 (for-each
1721 (lambda (file)
1722 (format #t "load ~a~%" file))
1723 (find-files (assoc-ref inputs dependency) ".*.jar$")))
1724 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1725 "maven-builder-support" "maven-model" "maven-model-builder"
1726 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1727 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1728 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1729 "maven-resolver-connector-basic" "maven-resolver-provider"
1730 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1731 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1732 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1733 "maven-wagon-http-shared" "maven-wagon-tck-http"
1734 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1735 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1736 "java-javax-inject" "java-plexus-component-annotations"
1737 "java-plexus-utils" "java-plexus-interpolation"
1738 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1739 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1740 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1741 "java-slf4j-simple"))))
1742 (substitute* "apache-maven/src/bin/mvn"
1743 (("cygwin=false;")
1744 (string-append
1745 "CLASSPATH="
1746 (car (find-files
1747 (assoc-ref inputs "java-plexus-classworlds")
1748 ".*.jar"))
1749 "\ncygwin=false;"))
1750 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
1751 #t))
1752 (delete 'check)
1753 (replace 'install
1754 (lambda* (#:key outputs #:allow-other-keys)
1755 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
1756 (conf (string-append (assoc-ref outputs "out") "/conf/")))
1757 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
1758 (for-each (lambda (file)
1759 (install-file (string-append "apache-maven/src/bin/" file)
1760 bin)
1761 (chmod (string-append bin file) #o755))
1762 '("mvn" "mvnDebug" "mvnyjp"))
1763 (install-file "apache-maven/src/bin/m2.conf" bin)
1764 (copy-recursively "apache-maven/src/conf" conf))
1765 #t)))))
1766 (inputs
1767 `(("java-plexus-classworlds" ,java-plexus-classworlds)
1768 ("maven-artifact" ,maven-artifact)
1769 ("maven-embedder" ,maven-embedder)
1770 ("maven-core" ,maven-core)
1771 ("maven-compat" ,maven-compat)
1772 ("maven-builder-support" ,maven-builder-support)
1773 ("maven-model" ,maven-model)
1774 ("maven-model-builder" ,maven-model-builder)
1775 ("maven-settings" ,maven-settings)
1776 ("maven-settings-builder" ,maven-settings-builder)
1777 ("maven-plugin-api" ,maven-plugin-api)
1778 ("maven-repository-metadata" ,maven-repository-metadata)
1779 ("maven-shared-utils" ,maven-shared-utils)
1780 ("maven-resolver-api" ,maven-resolver-api)
1781 ("maven-resolver-spi" ,maven-resolver-spi)
1782 ("maven-resolver-util" ,maven-resolver-util)
1783 ("maven-resolver-impl" ,maven-resolver-impl)
1784 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1785 ("maven-resolver-provider" ,maven-resolver-provider)
1786 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1787 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1788 ("maven-wagon-file" ,maven-wagon-file)
1789 ("maven-wagon-http" ,maven-wagon-http)
1790 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1791 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
1792 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
1793 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
1794 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
1795 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1796 ("java-guice" ,java-guice)
1797 ("java-aopalliance" ,java-aopalliance)
1798 ("java-cglib" ,java-cglib)
1799 ("java-asm" ,java-asm)
1800 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1801 ("java-javax-inject" ,java-javax-inject)
1802 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1803 ("java-plexus-utils" ,java-plexus-utils)
1804 ("java-plexus-interpolation" ,java-plexus-interpolation)
1805 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1806 ("java-plexus-cipher" ,java-plexus-cipher)
1807 ("java-guava" ,java-guava)
1808 ("java-jansi" ,java-jansi)
1809 ("java-jsr250" ,java-jsr250)
1810 ("java-cdi-api" ,java-cdi-api)
1811 ("java-commons-cli" ,java-commons-cli)
1812 ("java-commons-io" ,java-commons-io)
1813 ("java-commons-lang3" ,java-commons-lang3)
1814 ("java-slf4j-api" ,java-slf4j-api)
1815 ;; TODO: replace with maven-slf4j-provider
1816 ("java-slf4j-simple" ,java-slf4j-simple)))
1817 (propagated-inputs
1818 `(("coreutils" ,coreutils)
1819 ("which" ,which)))
1820 (description "Apache Maven is a software project management and comprehension
1821 tool. Based on the concept of a project object model: builds, dependency
1822 management, documentation creation, site publication, and distribution
1823 publication are all controlled from the @file{pom.xml} declarative file. Maven
1824 can be extended by plugins to utilise a number of other development tools for
1825 reporting or the build process.")))