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