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