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