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