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