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