gnu: maven: Install from pom file.
[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"
382 #:jdk ,icedtea-8
383 #:phases
384 (modify-phases %standard-phases
385 (add-before 'check 'remove-cyclic-dep
386 (lambda _
387 (delete-file
388 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
51087d51
JL
389 #t))
390 (replace 'install
391 (install-from-pom "pom.xml")))))
392 (propagated-inputs
b2185040
JL
393 `(("java-jansi" ,java-jansi)
394 ("java-commons-io" ,java-commons-io)
395 ("java-jsr305" ,java-jsr305)
51087d51
JL
396 ("java-plexus-container-default" ,java-plexus-container-default)
397 ("maven-parent-pom-30" ,maven-parent-pom-30)))
b2185040
JL
398 (native-inputs
399 `(("unzip" ,unzip)
400 ("java-junit" ,java-junit)
401 ("java-hamcrest-core" ,java-hamcrest-core)
402 ("java-commons-lang3" ,java-commons-lang3)))
403 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
404 (synopsis "Plexus-util replacement for maven")
405 (description "This project aims to be a functional replacement for
406plexus-utils in Maven. It is not a 100% API compatible replacement but a
407replacement with improvements.")
408 (license license:asl2.0)))
409
a59d5f35
JL
410(define-public maven-plugin-annotations
411 (package
412 (name "maven-plugin-annotations")
413 (version "3.5")
414 (source (origin
415 (method url-fetch)
9a01efa2 416 (uri (string-append "mirror://apache/maven/"
a59d5f35
JL
417 "plugin-tools/maven-plugin-tools-" version
418 "-source-release.zip"))
419 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
420 (build-system ant-build-system)
421 (arguments
422 `(#:jar-name "maven-plugin-annotations.jar"
423 #:source-dir "maven-plugin-annotations/src/main/java"
424 #:tests? #f))
425 (inputs
426 `(("maven-artifact" ,maven-artifact)))
427 (native-inputs
428 `(("unzip" ,unzip)))
429 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
430 (synopsis "Java 5 annotations to use in Mojos")
431 (description "This package contains Java 5 annotations for use in Mojos.")
432 (license license:asl2.0)))
433
ff7a0fcf
JL
434(define-public maven-wagon-provider-api
435 (package
436 (name "maven-wagon-provider-api")
ff0496d0 437 (version "3.3.4")
ff7a0fcf
JL
438 (source (origin
439 (method url-fetch)
51087d51 440 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
ff7a0fcf 441 "wagon-" version "-source-release.zip"))
ff0496d0
JL
442 (sha256
443 (base32
444 "1iq9bilgfklzbxwwhzi3f19mkbaaf9dh9f83h3yz5gbmvypask9a"))))
ff7a0fcf
JL
445 (build-system ant-build-system)
446 (arguments
447 `(#:jar-name "maven-wagon-provider-api.jar"
448 #:source-dir "wagon-provider-api/src/main/java"
ff0496d0
JL
449 #:test-dir "wagon-provider-api/src/test"
450 #:phases
451 (modify-phases %standard-phases
452 (replace 'install
453 (install-from-pom "wagon-provider-api/pom.xml")))))
454 (propagated-inputs
455 `(("java-plexus-utils" ,java-plexus-utils)
456 ("maven-wagon-parent-pom" ,maven-wagon-parent-pom)))
ff7a0fcf
JL
457 (native-inputs
458 `(("unzip" ,unzip)
459 ("java-junit" ,java-junit)
460 ("java-easymock" ,java-easymock)))
461 (home-page "https://maven.apache.org/wagon")
462 (synopsis "Transport abstraction for Maven")
463 (description "Maven Wagon is a transport abstraction that is used in Maven's
464artifact and repository handling code.")
465 (license license:asl2.0)))
466
ff0496d0
JL
467(define maven-wagon-parent-pom
468 (package
469 (inherit maven-wagon-provider-api)
470 (arguments
471 `(#:tests? #f
472 #:phases
473 (modify-phases %standard-phases
474 (delete 'configure)
475 (delete 'build)
476 (replace 'install
477 (install-pom-file "pom.xml")))))
478 (propagated-inputs
479 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
480 (native-inputs
481 `(("unzip" ,unzip)))))
482
f216a9f9
JL
483(define-public maven-wagon-provider-test
484 (package
485 (inherit maven-wagon-provider-api)
486 (name "maven-wagon-provider-test")
487 (arguments
488 `(#:jar-name "maven-wagon-provider-test.jar"
489 #:source-dir "wagon-provider-test/src/main/java"
490 #:tests? #f; no tests
491 #:jdk ,icedtea-8))
492 (inputs
493 `(("java-plexus-utils" ,java-plexus-utils)
494 ("java-plexus-container-default" ,java-plexus-container-default)
ff0496d0 495 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
f216a9f9
JL
496 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
497 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
498 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
499 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
500 ("java-slf4j-api" ,java-slf4j-api)
4b472f6a 501 ("java-javaee-servletapi" ,java-javaee-servletapi)
f216a9f9
JL
502 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
503 (synopsis "Test classes from maven-wagon")
504 (description "Maven Wagon is a transport abstraction that is used in Maven's
505artifact and repository handling code. This package contains common test
506classes used in multiple maven-wagon components.")))
507
0d1b3b39
JL
508(define-public maven-wagon-file
509 (package
510 (inherit maven-wagon-provider-api)
511 (name "maven-wagon-file")
512 (arguments
513 `(#:jar-name "maven-wagon-file.jar"
514 #:source-dir "wagon-providers/wagon-file/src/main/java"
515 #:test-dir "wagon-providers/wagon-file/src/test"
516 #:jdk ,icedtea-8
517 #:phases
518 (modify-phases %standard-phases
519 (add-before 'check 'fix-paths
520 (lambda _
521 ;; Tests assume they are run by maven, which copies test resources
522 ;; to target. Our ant-build-system does the same, but with the
523 ;; build directory.
524 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
525 (("target") "build"))
526 #t))
527 (add-after 'build 'generate-metadata
528 (lambda _
529 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
530 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
531 "--source" "wagon-providers/wagon-file/src/main/java"
532 "--output" "build/classes/META-INF/plexus/components.xml"
533 "--classes" "build/classes"
534 "--descriptors" "build/classes/META-INF")
535 #t))
536 (add-after 'generate-metadata 'rebuild
537 (lambda _
538 (invoke "ant" "jar")
539 #t)))))
540 (inputs
541 `(("java-plexus-utils" ,java-plexus-utils)
542 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
543 (native-inputs
544 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
545 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
546 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
547 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
548 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
549 ("java-plexus-classworlds" ,java-plexus-classworlds)
550 ("java-guava" ,java-guava)
551 ("java-guice" ,java-guice)
552 ("java-javax-inject" ,java-javax-inject)
553 ("java-cglib" ,java-cglib)
554 ("java-slf4j-api" ,java-slf4j-api)
555 ("java-plexus-utils" ,java-plexus-utils)
556 ("java-plexus-cli" ,java-plexus-cli)
557 ("maven-plugin-api" ,maven-plugin-api)
558 ("maven-plugin-annotations" ,maven-plugin-annotations)
559 ("maven-core" ,maven-core)
560 ("maven-model" ,maven-model)
561 ("java-commons-cli" ,java-commons-cli)
562 ("java-qdox" ,java-qdox)
563 ("java-jdom2" ,java-jdom2)
564 ("java-asm" ,java-asm)
565 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
566 ,@(package-native-inputs maven-wagon-provider-api)))
567 (synopsis "Wagon provider that gets and puts artifacts using the file system")
568 (description "Maven Wagon is a transport abstraction that is used in Maven's
569artifact and repository handling code. It uses providers, that are tools to
570manage artifacts and deployment. This package contains the file provider which
571gets and puts artifacts using the file system.")))
572
53360e48
JL
573(define-public maven-wagon-tck-http
574 (package
575 (inherit maven-wagon-provider-api)
576 (name "maven-wagon-tck-http")
577 (arguments
578 `(#:jar-name "maven-wagon-tck-http.jar"
579 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
580 #:tests? #f; no tests
581 #:jdk ,icedtea-8))
582 (inputs
583 `(("java-plexus-util" ,java-plexus-utils)
584 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
53ba191b 585 ("java-javaee-servletapi" ,java-javaee-servletapi)
53360e48
JL
586 ("java-slf4j-api" ,java-slf4j-api)
587 ("java-commons-codec" ,java-commons-codec)
588 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
589 ("java-plexus-classworlds" ,java-plexus-classworlds)
590 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
591 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
592 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
593 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
594 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
595 (synopsis "Wagon HTTP Test Compatibility Kit")
596 (description "Maven Wagon is a transport abstraction that is used in Maven's
597artifact and repository handling code. This package contains the HTTP
598Test Compatibility Kit.")))
599
c3f5ec6e
JL
600(define-public maven-wagon-http-shared
601 (package
602 (inherit maven-wagon-provider-api)
603 (name "maven-wagon-http-shared")
604 (arguments
605 `(#:jar-name "maven-wagon-http-shared.jar"
606 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
607 #:test-dir "wagon-providers/wagon-http-shared/src/test"
608 #:jdk ,icedtea-8
609 #:phases
610 (modify-phases %standard-phases
611 (add-after 'build 'generate-metadata
612 (lambda _
613 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
614 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
615 "--source" "wagon-providers/wagon-http-shared/src/main/java"
616 "--output" "build/classes/META-INF/plexus/components.xml"
617 "--classes" "build/classes"
618 "--descriptors" "build/classes/META-INF")
619 #t))
620 (add-after 'generate-metadata 'rebuild
621 (lambda _
622 (invoke "ant" "jar")
623 #t)))))
624 (inputs
625 `(("java-plexus-utils" ,java-plexus-utils)
626 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
627 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
628 ("java-commons-io" ,java-commons-io)
629 ("java-jsoup" ,java-jsoup)
630 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
631 (native-inputs
632 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
633 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
634 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
635 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
636 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
637 ("java-plexus-classworlds" ,java-plexus-classworlds)
638 ("java-guava" ,java-guava)
639 ("java-guice" ,java-guice)
640 ("java-javax-inject" ,java-javax-inject)
641 ("java-cglib" ,java-cglib)
642 ("java-slf4j-api" ,java-slf4j-api)
643 ("java-plexus-utils" ,java-plexus-utils)
644 ("java-plexus-cli" ,java-plexus-cli)
645 ("maven-plugin-api" ,maven-plugin-api)
646 ("maven-plugin-annotations" ,maven-plugin-annotations)
647 ("maven-core" ,maven-core)
648 ("maven-model" ,maven-model)
649 ("java-commons-cli" ,java-commons-cli)
650 ("java-qdox" ,java-qdox)
651 ("java-jdom2" ,java-jdom2)
652 ("java-asm" ,java-asm)
653 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
654 ,@(package-native-inputs maven-wagon-provider-api)))
655 (synopsis "Shared Library for wagon providers supporting HTTP.")
656 (description "Maven Wagon is a transport abstraction that is used in Maven's
657artifact and repository handling code. It uses providers, that are tools to
658manage artifacts and deployment. This package contains a shared library for
659wagon providers supporting HTTP.")))
660
aa06dd0f
JL
661(define-public maven-wagon-http
662 (package
663 (inherit maven-wagon-provider-api)
664 (name "maven-wagon-http")
665 (arguments
666 `(#:jar-name "maven-wagon-http.jar"
667 #:source-dir "wagon-providers/wagon-http/src/main/java"
668 #:test-dir "wagon-providers/wagon-http/src/test"
669 #:test-exclude (list
670 "**/Abstract*.java"
671 ;; FIXME: javax.net.ssl.SSLHandshakeException:
672 ;; sun.security.validator.ValidatorException:
673 ;; PKIX path building failed:
674 ;; sun.security.provider.certpath.SunCertPathBuilderException:
675 ;; unable to find valid certification path to requested target
676 "**/HttpsWagonPreemptiveTest.java"
677 "**/HttpsWagonTest.java"
678 ;; Injection errors
679 "**/TckTest.java")
680 #:jdk ,icedtea-8
681 #:phases
682 (modify-phases %standard-phases
683 (add-before 'build 'copy-resources
684 (lambda _
685 (install-file "wagon-providers/wagon-http/src/main/resources/META-INF/plexus/components.xml"
686 "build/classes/META-INF/plexus")
687 #t))
688 (add-before 'check 'fix-resource-path
689 (lambda _
690 (substitute* '("wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonPreemptiveTest.java"
691 "wagon-providers/wagon-http/src/test/java/org/apache/maven/wagon/providers/http/HttpsWagonTest.java")
692 (("src/test") "wagon-providers/wagon-http/src/test"))
693 #t)))))
694 (inputs
695 `(("java-plexus-utils" ,java-plexus-utils)
696 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
697 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
698 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
699 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
700 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
701 (native-inputs
702 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
703 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
704 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
705 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
706 ("java-plexus-container-default" ,java-plexus-container-default)
707 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
708 ("java-plexus-classworlds" ,java-plexus-classworlds)
709 ("java-guava" ,java-guava)
710 ("java-guice" ,java-guice)
711 ("java-inject" ,java-javax-inject)
712 ("java-cglib" ,java-cglib)
713 ("java-slf4j-api" ,java-slf4j-api)
714 ("java-plexus-utils" ,java-plexus-utils)
715 ("java-plexus-cli" ,java-plexus-cli)
716 ("maven-plugin-api" ,maven-plugin-api)
717 ("maven-plugin-annotations" ,maven-plugin-annotations)
718 ("maven-core" ,maven-core)
719 ("maven-model" ,maven-model)
720 ("java-commons-cli" ,java-commons-cli)
721 ("java-qdox" ,java-qdox)
722 ("java-jdom2" ,java-jdom2)
723 ("java-asm" ,java-asm)
724 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
53ba191b 725 ("java-javaee-servletapi" ,java-javaee-servletapi)
aa06dd0f
JL
726 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
727 ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
728 ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
729 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
730 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
731 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
732 ("java-hamcrest-core" ,java-hamcrest-core)
733 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
734 ("java-commons-codec" ,java-commons-codec)
735 ("java-commons-io" ,java-commons-io)
736 ("java-jsoup" ,java-jsoup)
737 ("java-slf4j-simple" ,java-slf4j-simple)
738 ,@(package-native-inputs maven-wagon-provider-api)))
739 (synopsis "Wagon provider that gets and puts artifacts through HTTP(S)")
740 (description "Maven Wagon is a transport abstraction that is used in Maven's
741artifact and repository handling code. It uses providers, that are tools to
742manage artifacts and deployment. This package contains a Wagon provider that
743gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
744
51087d51 745(define maven-pom
458687d5 746 (package
51087d51 747 (name "maven-pom")
b77c8ddb 748 (version "3.6.1")
458687d5
JL
749 (source (origin
750 (method url-fetch)
9a01efa2 751 (uri (string-append "mirror://apache/maven/"
458687d5
JL
752 "maven-3/" version "/source/"
753 "apache-maven-" version "-src.tar.gz"))
b77c8ddb 754 (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
458687d5
JL
755 (modules '((guix build utils)))
756 (snippet
757 '(begin
758 (for-each delete-file (find-files "." "\\.jar$"))
759 #t))
760 (patches
761 (search-patches "maven-generate-component-xml.patch"
762 "maven-generate-javax-inject-named.patch"))))
763 (build-system ant-build-system)
51087d51
JL
764 (arguments
765 `(#:tests? #f
766 #:phases
767 (modify-phases %standard-phases
768 (delete 'configure)
769 (delete 'build)
770 (add-before 'install 'fix-dependencies
771 (lambda _
772 (substitute* "pom.xml"
773 (("classWorldsVersion>.*")
774 (string-append
775 "classWorldsVersion>"
776 ,(package-version java-plexus-classworlds)
777 "</classWorldsVersion>\n"))
778 (("commonsCliVersion>.*")
779 (string-append
780 "commonsCliVersion>"
781 ,(package-version java-commons-cli)
782 "</commonsCliVersion>\n"))
783 (("commonsLangVersion>.*")
784 (string-append
785 "commonsLangVersion>"
786 ,(package-version java-commons-lang3)
787 "</commonsLangVersion>\n"))
788 (("plexusUtilsVersion>.*")
789 (string-append
790 "plexusUtilsVersion>"
791 ,(package-version java-plexus-utils)
792 "</plexusUtilsVersion>\n"))
793 (("plexusInterpolationVersion>.*")
794 (string-append
795 "plexusInterpolationVersion>"
796 ,(package-version java-plexus-interpolation)
797 "</plexusInterpolationVersion>\n"))
798 (("guiceVersion>.*")
799 (string-append
800 "guiceVersion>"
801 ,(package-version java-guice)
802 "</guiceVersion>\n"))
803 (("sisuInjectVersion>.*")
804 (string-append
805 "sisuInjectVersion>"
806 ,(package-version java-eclipse-sisu-inject)
807 "</sisuInjectVersion>\n"))
808 (("securityDispatcherVersion>.*")
809 (string-append
810 "securityDispatcherVersion>"
811 ,(package-version java-plexus-sec-dispatcher)
812 "</securityDispatcherVersion>\n"))
813 (("cipherVersion>.*")
814 (string-append
815 "cipherVersion>"
816 ,(package-version java-plexus-cipher)
817 "</cipherVersion>\n"))
818 (("slf4jVersion>.*")
819 (string-append
820 "slf4jVersion>"
821 ,(package-version java-slf4j-api)
822 "</slf4jVersion>\n"))
823 (("<classifier>no_aop</classifier>") ""))
824 #t))
825 (replace 'install
826 (install-pom-file "pom.xml")))))
827 (propagated-inputs
828 `(("maven-parent-pom-33" ,maven-parent-pom-33)))
829 (home-page "https://maven.apache.org/")
830 (synopsis "Build system")
831 (description "Apache Maven is a software project management and comprehension
832tool. This package contains the Maven pom file, used by all maven components.")
833 (license license:asl2.0)))
834
835(define-public maven-artifact
836 (package
837 (inherit maven-pom)
838 (name "maven-artifact")
458687d5
JL
839 (arguments
840 `(#:jar-name "maven-artifact.jar"
841 #:source-dir "maven-artifact/src/main/java"
842 #:test-dir "maven-artifact/src/test"
51087d51
JL
843 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"
844 #:phases
845 (modify-phases %standard-phases
846 (replace 'install
847 (install-from-pom "maven-artifact/pom.xml")))))
848 (propagated-inputs
458687d5 849 `(("java-plexus-utils" ,java-plexus-utils)
51087d51
JL
850 ("java-commons-lang3" ,java-commons-lang3)
851 ("maven-pom" ,maven-pom)))
458687d5
JL
852 (native-inputs
853 `(("java-junit" ,java-junit)))
458687d5
JL
854 (description "Apache Maven is a software project management and comprehension
855tool. This package contains the Maven Artifact classes, providing the
856@code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
857jar file is executable and provides a little tool to display how Maven parses
51087d51 858and compares versions:")))
d55503a6
JL
859
860(define-public maven-model
861 (package
862 (inherit maven-artifact)
863 (name "maven-model")
864 (arguments
865 `(#:jar-name "maven-model.jar"
866 #:source-dir "maven-model/src/main/java"
867 #:test-dir "maven-model/src/test"
d55503a6
JL
868 #:phases
869 (modify-phases %standard-phases
870 (add-before 'build 'generate-models
871 (lambda* (#:key inputs #:allow-other-keys)
872 (define (modello-single-mode file version mode)
873 (invoke "java" "org.codehaus.modello.ModelloCli"
874 file mode "maven-model/src/main/java" version
875 "false" "true"))
876 (let ((file "maven-model/src/main/mdo/maven.mdo"))
877 (modello-single-mode file "4.0.0" "java")
878 (modello-single-mode file "4.0.0" "xpp3-reader")
879 (modello-single-mode file "4.0.0" "xpp3-writer")
880 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
51087d51
JL
881 #t))
882 (replace 'install (install-from-pom "maven-model/pom.xml")))))
883 (propagated-inputs
d55503a6 884 `(("java-commons-lang3" ,java-commons-lang3)
51087d51
JL
885 ("java-plexus-utils" ,java-plexus-utils)
886 ("maven-pom" ,maven-pom)))
d55503a6
JL
887 (native-inputs
888 `(("java-modello-core" ,java-modello-core)
889 ;; for modello:
890 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
891 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
892 ("java-guice" ,java-guice)
893 ("java-cglib" ,java-cglib)
894 ("java-asm" ,java-asm)
895 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
896 ("java-javax-inject" ,java-javax-inject)
897 ("java-plexus-classworlds" ,java-plexus-classworlds)
898 ("java-guava" ,java-guava)
899 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
900 ("java-sisu-build-api" ,java-sisu-build-api)
901 ;; modello plugins:
902 ("java-modello-plugins-java" ,java-modello-plugins-java)
903 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
904 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
905 ;; for tests
906 ("java-junit" ,java-junit)))
907 (description "Apache Maven is a software project management and comprehension
908tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
909so really just plain Java objects.")))
f084641a
JL
910
911(define-public maven-builder-support
912 (package
913 (inherit maven-artifact)
914 (name "maven-builder-support")
915 (arguments
916 `(#:jar-name "maven-builder-support.jar"
917 #:source-dir "maven-builder-support/src/main/java"
918 #:jdk ,icedtea-8
919 #:test-dir "maven-builder-support/src/test"
920 #:phases
921 (modify-phases %standard-phases
922 (add-before 'check 'fix-paths
923 (lambda _
924 (with-directory-excursion "maven-builder-support/src/test/java"
925 (substitute*
926 '("org/apache/maven/building/FileSourceTest.java"
927 "org/apache/maven/building/UrlSourceTest.java")
928 (("target/test-classes") "maven-builder-support/src/test/resources")))
51087d51
JL
929 #t))
930 (replace 'install (install-from-pom "maven-builder-support/pom.xml")))))
931 (propagated-inputs
932 `(("maven-pom" ,maven-pom)))
f084641a 933 (native-inputs
51087d51 934 `(("java-junit" ,java-junit)))
f084641a
JL
935 (description "Apache Maven is a software project management and comprehension
936tool. This package contains a support library for descriptor builders (model,
937setting, toolchains)")))
18110e45
JL
938
939(define-public maven-settings
940 (package
941 (inherit maven-artifact)
942 (name "maven-settings")
943 (arguments
944 `(#:jar-name "maven-settings.jar"
945 #:source-dir "maven-settings/src/main/java"
18110e45
JL
946 #:tests? #f; no tests
947 #:phases
948 (modify-phases %standard-phases
949 (add-before 'build 'generate-models
950 (lambda* (#:key inputs #:allow-other-keys)
951 (define (modello-single-mode file version mode)
952 (invoke "java" "org.codehaus.modello.ModelloCli"
953 file mode "maven-settings/src/main/java" version
954 "false" "true"))
955 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
956 (modello-single-mode file "1.1.0" "java")
957 (modello-single-mode file "1.1.0" "xpp3-reader")
958 (modello-single-mode file "1.1.0" "xpp3-writer"))
51087d51
JL
959 #t))
960 (replace 'install (install-from-pom "maven-settings/pom.xml")))))
961 (propagated-inputs
962 `(("java-plexus-utils" ,java-plexus-utils)
963 ("maven-pom" ,maven-pom)))
18110e45
JL
964 (native-inputs
965 `(("java-modello-core" ,java-modello-core)
966 ;; for modello:
967 ;("container" ,java-plexus-container-default)
968 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
969 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
970 ("java-guice" ,java-guice)
971 ("java-cglib" ,java-cglib)
972 ("java-asm" ,java-asm)
973 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
974 ("java-javax-inject" ,java-javax-inject)
975 ("java-plexus-classworlds" ,java-plexus-classworlds)
976 ("java-plexus-utils" ,java-plexus-utils)
977 ("java-guava" ,java-guava)
978 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
979 ("java-sisu-build-api" ,java-sisu-build-api)
980 ;; modello plugins:
981 ("java-modello-plugins-java" ,java-modello-plugins-java)
982 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
983 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
984 (description "Apache Maven is a software project management and comprehension
985tool. This package contains strictly the model for Maven settings, that is
986simply plain java objects.")))
3a5572ae
JL
987
988(define-public maven-settings-builder
989 (package
990 (inherit maven-artifact)
991 (name "maven-settings-builder")
992 (arguments
993 `(#:jar-name "maven-settings-builder.jar"
994 #:source-dir "maven-settings-builder/src/main/java"
995 #:jdk ,icedtea-8
996 #:test-dir "maven-settings-builder/src/test"
997 #:phases
998 (modify-phases %standard-phases
999 (add-before 'build 'generate-components.xml
1000 (lambda _
1001 (mkdir-p "build/classes/META-INF/plexus")
1002 (chmod "components.sh" #o755)
1003 (invoke "./components.sh" "maven-settings-builder/src/main/java"
1004 "build/classes/META-INF/plexus/components.xml")
51087d51
JL
1005 #t))
1006 (replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
1007 (propagated-inputs
3a5572ae 1008 `(("java-plexus-utils" ,java-plexus-utils)
3a5572ae
JL
1009 ("java-plexus-interpolation" ,java-plexus-interpolation)
1010 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1011 ("maven-builder-support" ,maven-builder-support)
1012 ("maven-settings" ,maven-settings)
51087d51 1013 ("maven-pom" ,maven-pom)))
3a5572ae 1014 (native-inputs
51087d51
JL
1015 `(("java-junit" ,java-junit)
1016 ("java-plexus-component-annotations" ,java-plexus-component-annotations)))
3a5572ae
JL
1017 (description "Apache Maven is a software project management and comprehension
1018tool. This package contains the effective model builder, with profile activation,
1019inheritance, interpolation, @dots{}")))
516db3b9
JL
1020
1021(define-public maven-model-builder
1022 (package
1023 (inherit maven-artifact)
1024 (name "maven-model-builder")
1025 (arguments
1026 `(#:jar-name "maven-model-builder.jar"
1027 #:source-dir "maven-model-builder/src/main/java"
1028 #:jdk ,icedtea-8
1029 #:test-dir "maven-model-builder/src/test"
1030 #:phases
1031 (modify-phases %standard-phases
1032 (add-before 'build 'copy-resources
1033 (lambda _
1034 (copy-recursively "maven-model-builder/src/main/resources"
1035 "build/classes")
1036 #t))
1037 (add-before 'build 'generate-components.xml
1038 (lambda _
1039 (mkdir-p "build/classes/META-INF/plexus")
1040 (chmod "components.sh" #o755)
1041 (invoke "./components.sh" "maven-model-builder/src/main/java"
1042 "build/classes/META-INF/plexus/components.xml")
1043 #t))
1044 (add-before 'check 'fix-paths
1045 (lambda _
1046 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
1047 (("src/test") "maven-model-builder/src/test"))
51087d51
JL
1048 #t))
1049 (replace 'install
1050 (install-from-pom "maven-model-builder/pom.xml")))))
1051 (propagated-inputs
1052 `(("java-plexus-interpolation" ,java-plexus-interpolation)
1053 ("java-plexus-utils" ,java-plexus-utils)
1054 ("maven-artifact" ,maven-artifact)
1055 ("maven-builder-support" ,maven-builder-support)
1056 ("maven-model" ,maven-model)
1057 ("maven-pom" ,maven-pom)))
516db3b9
JL
1058 (native-inputs
1059 `(("java-junit" ,java-junit)
51087d51 1060 ("java-guava" ,java-guava)
516db3b9
JL
1061 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1062 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1063 ("guice" ,java-guice)
1064 ("java-cglib" ,java-cglib)
1065 ("java-asm" ,java-asm)
1066 ("sisu-inject" ,java-eclipse-sisu-inject)
1067 ("javax-inject" ,java-javax-inject)
c5928211
JL
1068 ("java-xmlunit" ,java-xmlunit)
1069 ("java-xmlunit-matchers" ,java-xmlunit-matchers)
516db3b9
JL
1070 ("xbean" ,java-geronimo-xbean-reflect)
1071 ("classworlds" ,java-plexus-classworlds)))
1072 (description "Apache Maven is a software project management and comprehension
1073tool. This package contains the effective model builder, with profile activation,
1074inheritance, interpolation, @dots{}")))
18736663
JL
1075
1076(define-public maven-repository-metadata
1077 (package
1078 (inherit maven-artifact)
1079 (name "maven-repository-metadata")
1080 (arguments
1081 `(#:jar-name "maven-repository-metadata.jar"
1082 #:source-dir "maven-repository-metadata/src/main/java"
1083 #:jdk ,icedtea-8
1084 #:tests? #f; no tests
1085 #:phases
1086 (modify-phases %standard-phases
1087 (add-before 'build 'generate-models
1088 (lambda* (#:key inputs #:allow-other-keys)
1089 (define (modello-single-mode file version mode)
1090 (invoke "java" "org.codehaus.modello.ModelloCli"
1091 file mode "maven-repository-metadata/src/main/java" version
1092 "false" "true"))
1093 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
1094 (modello-single-mode file "1.1.0" "java")
1095 (modello-single-mode file "1.1.0" "xpp3-reader")
1096 (modello-single-mode file "1.1.0" "xpp3-writer"))
51087d51
JL
1097 #t))
1098 (replace 'install
1099 (install-from-pom "maven-repository-metadata/pom.xml")))))
1100 (propagated-inputs
1101 `(("java-plexus-utils" ,java-plexus-utils)
1102 ("maven-pom" ,maven-pom)))
18736663
JL
1103 (native-inputs
1104 `(("modello" ,java-modello-core)
1105 ;; for modello:
1106 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1107 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1108 ("java-guice" ,java-guice)
1109 ("java-cglib" ,java-cglib)
1110 ("java-asm" ,java-asm)
1111 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1112 ("java-javax-inject" ,java-javax-inject)
1113 ("java-plexus-utils" ,java-plexus-utils)
1114 ("java-plexus-classworlds" ,java-plexus-classworlds)
1115 ("java-guava" ,java-guava)
1116 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1117 ("java-sisu-build-api" ,java-sisu-build-api)
1118 ;; modello plugins:
1119 ("java-modello-plugins-java" ,java-modello-plugins-java)
1120 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1121 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
1122 (description "Apache Maven is a software project management and comprehension
1123tool. This package contains strictly the model for Maven Repository Metadata,
1124so really just plain objects.")))
5aa4ea6a
JL
1125
1126(define-public maven-resolver-provider
1127 (package
1128 (inherit maven-artifact)
1129 (name "maven-resolver-provider")
1130 (arguments
1131 `(#:jar-name "maven-resolver-provider.jar"
1132 #:source-dir "maven-resolver-provider/src/main/java"
1133 #:test-dir "maven-resolver-provider/src/test"
1134 #:jdk ,icedtea-8
1135 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
1136 #:phases
1137 (modify-phases %standard-phases
1138 (add-before 'build 'generate-sisu-named
1139 (lambda _
1140 (mkdir-p "build/classes/META-INF/sisu")
1141 (chmod "./sisu.sh" #o755)
1142 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
1143 "build/classes/META-INF/sisu/javax.inject.Named")
51087d51
JL
1144 #t))
1145 (replace 'install
1146 (install-from-pom "maven-resolver-provider/pom.xml")))))
1147 (propagated-inputs
1148 `(("maven-model" ,maven-model)
1149 ("maven-model-builder" ,maven-model-builder)
1150 ("maven-resolver-spi" ,maven-resolver-spi)
5aa4ea6a
JL
1151 ("maven-resolver-api" ,maven-resolver-api)
1152 ("maven-resolver-impl" ,maven-resolver-impl)
1153 ("maven-resolver-util" ,maven-resolver-util)
5aa4ea6a
JL
1154 ("maven-builder-support" ,maven-builder-support)
1155 ("maven-repository-metadata" ,maven-repository-metadata)
1156 ("java-plexus-utils" ,java-plexus-utils)
1157 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
5aa4ea6a 1158 ("java-guice" ,java-guice)
5aa4ea6a 1159 ("java-javax-inject" ,java-javax-inject)))))
8f5caf93
JL
1160
1161(define-public maven-plugin-api
1162 (package
1163 (inherit maven-artifact)
1164 (name "maven-plugin-api")
1165 (arguments
1166 `(#:jar-name "maven-plugin-api.jar"
1167 #:source-dir "maven-plugin-api/src/main/java"
1168 #:jdk ,icedtea-8
1169 #:test-dir "maven-plugin-api/src/test"
1170 #:phases
1171 (modify-phases %standard-phases
1172 (add-before 'build 'generate-models
1173 (lambda* (#:key inputs #:allow-other-keys)
1174 (define (modello-single-mode file version mode)
1175 (invoke "java" "org.codehaus.modello.ModelloCli"
1176 file mode "maven-plugin-api/src/main/java" version
1177 "false" "true"))
1178 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
1179 (modello-single-mode file "1.0.0" "java")
1180 (modello-single-mode file "1.0.0" "xpp3-reader")
1181 (modello-single-mode file "1.0.0" "xpp3-writer"))
51087d51
JL
1182 #t))
1183 (replace 'install
1184 (install-from-pom "maven-plugin-api/pom.xml")))))
1185 (propagated-inputs
8f5caf93
JL
1186 `(("maven-artifact" ,maven-artifact)
1187 ("maven-model" ,maven-model)
1188 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1189 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1190 ("guice" ,java-guice)
1191 ("java-cglib" ,java-cglib)
1192 ("java-asm" ,java-asm)
1193 ("sisu-inject" ,java-eclipse-sisu-inject)
1194 ("javax-inject" ,java-javax-inject)
1195 ("utils" ,java-plexus-utils)))
1196 (native-inputs
1197 `(("modello" ,java-modello-core)
1198 ;; for modello:
1199 ("classworlds" ,java-plexus-classworlds)
1200 ("guava" ,java-guava)
1201 ("xbean" ,java-geronimo-xbean-reflect)
1202 ("build-api" ,java-sisu-build-api)
1203 ;; modello plugins:
1204 ("java" ,java-modello-plugins-java)
1205 ("xml" ,java-modello-plugins-xml)
1206 ("xpp3" ,java-modello-plugins-xpp3)
1207 ;; for tests
1208 ("java-junit" ,java-junit)))
1209 (description "Apache Maven is a software project management and comprehension
1210tool. This package contains strictly the API for plugins -- composed of goals
1211implemented by Mojos -- development.
1212
1213A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
1214generally generated from plugin sources using maven-plugin-plugin.")))
7a42f058
JL
1215
1216(define maven-core-bootstrap
1217 (package
1218 (inherit maven-artifact)
1219 (name "maven-core")
1220 (arguments
1221 `(#:jar-name "maven-core.jar"
1222 #:source-dir "src/main/java"
1223 #:jdk ,icedtea-8
1224 ;; Tests need maven-compat, which requires maven-core
1225 #:tests? #f
1226 #:phases
1227 (modify-phases %standard-phases
1228 (add-before 'configure 'chdir
1229 (lambda _
1230 ;; Required for generating components.xml in maven-core
1231 (chdir "maven-core")
1232 #t))
1233 (add-before 'build 'copy-resources
1234 (lambda _
1235 (mkdir-p "build/classes/")
1236 (copy-recursively "src/main/resources" "build/classes")
1237 #t))
e27c43d9
JL
1238 (add-after 'copy-resources 'fill-properties
1239 (lambda _
1240 ;; This file controls the output of some mvn subcommands, such as
1241 ;; mvn -version.
1242 (substitute* "build/classes/org/apache/maven/messages/build.properties"
1243 (("\\$\\{buildNumber\\}") "guix_build")
1244 (("\\$\\{timestamp\\}") "0")
1245 (("\\$\\{project.version\\}") ,(package-version maven-artifact))
1246 (("\\$\\{distributionId\\}") "apache-maven")
1247 (("\\$\\{distributionShortName\\}") "Maven")
1248 (("\\$\\{distributionName\\}") "Apache Maven"))
1249 #t))
7a42f058
JL
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" "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 "src/main/java" version
1262 "false" "true"))
1263 (let ((file "src/main/mdo/toolchains.mdo"))
1264 (modello-single-mode file "1.1.0" "java")
1265 (modello-single-mode file "1.1.0" "xpp3-reader")
1266 (modello-single-mode file "1.1.0" "xpp3-writer"))
51087d51
JL
1267 #t))
1268 (add-before 'install 'fix-pom
1269 (lambda _
1270 (substitute* "pom.xml"
1271 (("<classifier>no_aop</classifier>") ""))
1272 #t))
1273 (replace 'install
1274 (install-from-pom "pom.xml")))))
1275 (propagated-inputs
7a42f058
JL
1276 `(("maven-artifact" ,maven-artifact)
1277 ("maven-resolver-provider" ,maven-resolver-provider)
1278 ("maven-builder-support" ,maven-builder-support)
1279 ("maven-model" ,maven-model)
1280 ("maven-model-builder" ,maven-model-builder)
1281 ("maven-settings" ,maven-settings)
1282 ("maven-settings-builder" ,maven-settings-builder)
1283 ("maven-plugin-api" ,maven-plugin-api)
1284 ("maven-repository-metadata" ,maven-repository-metadata)
1285 ("maven-shared-utils" ,maven-shared-utils)
1286 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1287 ("java-plexus-utils" ,java-plexus-utils)
1288 ("java-commons-lang3" ,java-commons-lang3)
1289 ("java-guava" ,java-guava)
1290 ("java-guice" ,java-guice)
1291 ("maven-resolver-api" ,maven-resolver-api)
1292 ("maven-resolver-spi" ,maven-resolver-spi)
1293 ("maven-resolver-util" ,maven-resolver-util)
1294 ("maven-resolver-impl" ,maven-resolver-impl)
1295 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1296 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1297 ("java-javax-inject" ,java-javax-inject)
1298 ("java-plexus-classworld" ,java-plexus-classworlds)))
1299 (native-inputs
1300 `(("java-modello-core" ,java-modello-core)
1301 ("java-cglib" ,java-cglib)
1302 ("java-asm" ,java-asm)
1303 ("java-plexus-classworlds" ,java-plexus-classworlds)
1304 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1305 ("java-sisu-build-api" ,java-sisu-build-api)
1306 ("java-modello-plugins-java" ,java-modello-plugins-java)
1307 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1308 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1309 ;; tests
1310 ("java-junit" ,java-junit)
1311 ("java-mockito-1" ,java-mockito-1)
1312 ("java-commons-jxpath" ,java-commons-jxpath)))
1313 (description "Apache Maven is a software project management and comprehension
1314tool. This package contains the maven core classes managing the whole build
1315process.")))
b822544c
JL
1316
1317(define-public maven-core
1318 (package
1319 (inherit maven-core-bootstrap)
1320 (arguments
1321 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
1322 ((#:phases phases)
1323 `(modify-phases ,phases
1324 (add-before 'build 'modify-metainf
1325 (lambda _
1326 (substitute* "build.xml"
d440df61 1327 (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
b822544c
JL
1328 #t))
1329 (add-before 'build 'add-maven-files
1330 (lambda _
1331 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
1332 (copy-file "pom.xml"
1333 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
1334 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
1335 (lambda _
1336 (format #t "version=~a~%
1337groupId=org.apache.maven~%
1338artifactId=maven-core" ,(package-version maven-core-bootstrap))))
1339 #t))
1340 (add-after 'build 'generate-metadata
1341 (lambda _
1342 (define (components file)
1343 (let ((sxml (with-input-from-file file
1344 (lambda _ (xml->sxml (current-input-port)
1345 #:trim-whitespace? #t)))))
1346 ;; Select the list of <component>s inside the <component-set>
1347 ;; and <components>.
1348 ((@ (ice-9 match) match) sxml
1349 (('*TOP*
1350 ('*PI* foo ...)
1351 ('component-set
1352 ('components x ...))) x))))
1353 (use-modules (sxml simple))
1354 (delete-file "build/classes/META-INF/plexus/components.xml")
1355 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1356 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1357 "--source" "build/classes/META-INF/plexus"
1358 "--output" "build/classes/META-INF/plexus/components.t.xml"
1359 "--classes" "build/classes"
1360 "--descriptors" "build/classes")
1361 ;; Now we merge all other components from hand-written xml
1362 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1363 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1364 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1365 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1366 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1367 (lambda _
1368 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1369 (sxml->xml
1370 `(component-set
1371 (components
1372 ,@(append generated-xml components-xml
1373 default-bindings-xml
1374 artifact-handlers-xml)))))))
1375 #t))
1376 (add-after 'generate-metadata 'rebuild
1377 (lambda _
1378 (invoke "ant" "jar")
1379 #t))))))
1380 (native-inputs
1381 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1382 ("java-commons-cli" ,java-commons-cli)
1383 ("java-plexus-cli" ,java-plexus-cli)
1384 ("java-jdom2" ,java-jdom2)
1385 ("java-qdox" ,java-qdox)
1386 ("maven-core-boot" ,maven-core-bootstrap)
1387 ,@(package-native-inputs maven-core-bootstrap)))))
e2c7d329
JL
1388
1389(define-public maven-embedder
1390 (package
1391 (inherit maven-artifact)
1392 (name "maven-embedder")
1393 (arguments
1394 `(#:jar-name "maven-embedder.jar"
1395 #:source-dir "maven-embedder/src/main/java"
1396 #:test-dir "maven-embedder/src/test"
1397 #:test-exclude (list "**/MavenCliTest.java")
1398 #:jdk ,icedtea-8
1399 #:phases
1400 (modify-phases %standard-phases
1401 (add-before 'build 'generate-sisu-named
1402 (lambda _
1403 (mkdir-p "build/classes/META-INF/sisu")
1404 (chmod "sisu.sh" #o755)
1405 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1406 "build/classes/META-INF/sisu/javax.inject.Named")
1407 #t))
1408 (add-before 'build 'generate-models
1409 (lambda* (#:key inputs #:allow-other-keys)
1410 (define (modello-single-mode file version mode)
1411 (invoke "java" "org.codehaus.modello.ModelloCli"
1412 file mode "maven-embedder/src/main/java" version
1413 "false" "true"))
1414 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1415 (modello-single-mode file "1.0.0" "java")
1416 (modello-single-mode file "1.0.0" "xpp3-reader")
1417 (modello-single-mode file "1.0.0" "xpp3-writer"))
1418 #t))
1419 (add-before 'check 'fix-test-paths
1420 (lambda _
1421 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1422 (("target/test-classes") "build/test-classes"))
1423 #t))
1424 (add-before 'check 'fix-test-compilation
1425 (lambda _
1426 ;; Tests are in the java/ subdir. Other subdirectories contain
1427 ;; additional test plugins, with duplicate classes, so we can't
1428 ;; compile them. Also, they are meant to be built with maven, to
1429 ;; test its build process.
1430 (substitute* "build.xml"
1431 (("srcdir=\"maven-embedder/src/test\"")
1432 "srcdir=\"maven-embedder/src/test/java\""))
51087d51
JL
1433 #t))
1434 (replace 'install
1435 (install-from-pom "maven-embedder/pom.xml")))))
1436 (propagated-inputs
e2c7d329
JL
1437 `(("maven-core" ,maven-core)
1438 ("maven-artifact" ,maven-artifact)
1439 ("maven-plugin-api" ,maven-plugin-api)
1440 ("maven-builder-support" ,maven-builder-support)
1441 ("maven-model" ,maven-model)
1442 ("maven-model-builder" ,maven-model-builder)
1443 ("maven-settings" ,maven-settings)
1444 ("maven-settings-builder" ,maven-settings-builder)
1445 ("maven-shared-utils" ,maven-shared-utils)
1446 ("java-plexus-classworlds" ,java-plexus-classworlds)
1447 ("java-plexus-util" ,java-plexus-utils)
1448 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1449 ("java-plexus-cipher" ,java-plexus-cipher)
1450 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1451 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1452 ("maven-resolevr-util" ,maven-resolver-util)
1453 ("maven-resolevr-api" ,maven-resolver-api)
1454 ("java-logback-core" ,java-logback-core)
1455 ("java-logback-classic" ,java-logback-classic)
1456 ("java-commons-cli" ,java-commons-cli)
1457 ("java-commons-io" ,java-commons-io)
1458 ("java-commons-lang3" ,java-commons-lang3)
1459 ("java-guava" ,java-guava)
1460 ("java-guice" ,java-guice)
1461 ("java-javax-inject" ,java-javax-inject)
1462 ("java-slf4j-api" ,java-slf4j-api)
51087d51
JL
1463 ("java-slf4j-simple" ,java-slf4j-simple)
1464 ("java-jsr250" ,java-jsr250)))
e2c7d329
JL
1465 (native-inputs
1466 `(("java-modello-core" ,java-modello-core)
1467 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1468 ("java-sisu-build-api" ,java-sisu-build-api)
1469 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1470 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1471 ("java-cglib" ,java-cglib)
1472 ("java-asm" ,java-asm)
1473 ("java-modello-plugins-java" ,java-modello-plugins-java)
1474 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1475 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1476 ;; tests
1477 ("java-junit" ,java-junit)
1478 ("java-objenesis" ,java-objenesis)
1479 ("java-mockito-1" ,java-mockito-1)
1480 ("java-hamcrest-core" ,java-hamcrest-core)))
1481 (description "Apache Maven is a software project management and comprehension
1482tool. This package contains a Maven embeddable component, with CLI and
1483logging support.")))
0c1e98eb
JL
1484
1485(define-public maven-compat
1486 (package
1487 (inherit maven-artifact)
1488 (name "maven-compat")
1489 (arguments
1490 `(#:jar-name "maven-compat.jar"
1491 #:source-dir "src/main/java"
1492 #:jdk ,icedtea-8
1493 #:test-dir "src/test"
1494 #:phases
1495 (modify-phases %standard-phases
1496 ;; Tests assume we're in this directory
1497 (add-before 'configure 'chdir
1498 (lambda _
1499 (chdir "maven-compat")
1500 #t))
892a5647
JL
1501 (add-before 'build 'recreate-removed-jar
1502 (lambda _
1503 (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
1504 (const #t))
1505 (with-directory-excursion "src/test/resources"
1506 (with-output-to-file "artifact-install/artifact-1.0.jar"
1507 (lambda _
1508 (format #t "dummy~%")))
1509 (for-each
1510 (lambda (file)
1511 (with-output-to-file file
1512 (lambda _
1513 (format #t "foo~%"))))
1514 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
1515 "local-repo/maven-test/jars/maven-test-c-1.0.jar"
1516 "local-repo/maven-test/jars/maven-test-d-1.0.jar"
1517 "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
1518 "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
1519 "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
1520 "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
1521 "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
1522 "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
1523 "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
1524 "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
1525 "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
1526 "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
1527 "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
1528 "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
1529 "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
1530 "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
1531 "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
1532 "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
1533 "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
1534 "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
1535 "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
1536 "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
1537 "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
1538 "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
1539 "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
1540 "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
1541 "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
1542 "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
1543 "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
1544 "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
1545 "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
1546 "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
1547 "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
1548 "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
1549 "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
1550 "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
1551 "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
1552 "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
1553 "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
1554 "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
1555 "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
1556 "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
1557 "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
1558 "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
1559 (with-directory-excursion "local-repo/snapshot-test/jars"
1560 (for-each
1561 (lambda (file)
1562 (with-output-to-file file
1563 (lambda _
1564 ;; No end-of-line
1565 (format #t "local"))))
1566 '("maven-snapshot-e-1.0-SNAPSHOT.jar"
1567 "maven-snapshot-b-1.0-SNAPSHOT.jar"
1568 "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
1569 (for-each
1570 (lambda (letter)
1571 (with-directory-excursion
1572 (string-append "src/test/remote-repo/org/apache/maven/its/"
1573 letter "/0.1")
1574 (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
1575 letter)))
1576 (mkdir-p dir)
1577 (copy-file (string-append letter "-0.1.pom")
1578 (string-append dir "/pom.xml"))
1579 (with-output-to-file (string-append dir "/pom.properties")
1580 (lambda _
1581 (format #t "version=0.1~%")
1582 (format #t "groupId=org.apache.maven.its")
1583 (format #t (string-append "artifactId=" letter))))
1584 (with-output-to-file "META-INF/MANIFEST.MF"
1585 (lambda _
1586 (format #t "Manifest-Version: 1.0~%"))))
1587 (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
1588 (string-append letter "-0.1.jar") "META-INF")))
1589 '("a" "b"))
1590 #t))
0c1e98eb
JL
1591 (add-before 'build 'generate-models
1592 (lambda* (#:key inputs #:allow-other-keys)
1593 (define (modello-single-mode file version mode)
1594 (invoke "java" "org.codehaus.modello.ModelloCli"
1595 file mode "src/main/java" version
1596 "false" "true"))
1597 (let ((file "src/main/mdo/profiles.mdo"))
1598 (modello-single-mode file "1.0.0" "java")
1599 (modello-single-mode file "1.0.0" "xpp3-reader")
1600 (modello-single-mode file "1.0.0" "xpp3-writer"))
1601 (let ((file "src/main/mdo/paramdoc.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 #t))
1606 (add-after 'build 'generate-metadata
1607 (lambda _
1608 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1609 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1610 "--source" "src/main/java"
1611 "--output" "build/classes/META-INF/plexus/components.xml"
1612 "--classes" "build/classes"
1613 "--descriptors" "build/classes/META-INF")
1614 #t))
1615 (add-before 'check 'build-tests
1616 (lambda _
1617 (invoke "ant" "compile-tests")
1618 #t))
1619 (add-after 'build-tests 'generate-test-metadata
1620 (lambda _
1621 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
1622 ":build/classes"
1623 ":build/test-classes")
1624 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1625 "--source" "src/test/java"
1626 "--output" "build/test-classes/META-INF/plexus/components.xml"
1627 "--classes" "build/test-classes"
1628 "--descriptors" "build/test-classes/META-INF")
1629 #t))
1630 (add-after 'generate-metadata 'rebuild
1631 (lambda _
1632 (invoke "ant" "jar")
51087d51
JL
1633 #t))
1634 (replace 'install
1635 (install-from-pom "pom.xml")))))
1636 (propagated-inputs
0c1e98eb
JL
1637 `(("maven-artifact" ,maven-artifact)
1638 ("maven-repository-metadata" ,maven-repository-metadata)
1639 ("maven-builder-support" ,maven-builder-support)
1640 ("maven-model" ,maven-model)
1641 ("maven-model-builder" ,maven-model-builder)
1642 ("maven-settings" ,maven-settings)
1643 ("maven-settings-builder" ,maven-settings-builder)
1644 ("maven-core" ,maven-core)
1645 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1646 ("maven-wagon-file" ,maven-wagon-file)
1647 ("maven-resolver-api" ,maven-resolver-api)
1648 ("maven-resolver-util" ,maven-resolver-util)
1649 ("maven-resolver-spi" ,maven-resolver-spi)
1650 ("java-plexus-interpolation" ,java-plexus-interpolation)))
1651 (native-inputs
1652 `(("java-modello-core" ,java-modello-core)
1653 ("java-plexus-utils" ,java-plexus-utils)
1654 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1655 ("java-plexus-classworlds" ,java-plexus-classworlds)
1656 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1657 ("java-sisu-build-api" ,java-sisu-build-api)
1658 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1659 ("java-exclispe-sisu-inject" ,java-eclipse-sisu-inject)
1660 ("java-javax-inject" ,java-javax-inject)
1661 ("java-guice" ,java-guice)
1662 ("java-guava" ,java-guava)
1663 ("java-cglib" ,java-cglib)
1664 ("java-asm" ,java-asm)
1665 ("java-modello-plugins-java" ,java-modello-plugins-java)
1666 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1667 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1668 ;; metadata
1669 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
1670 ("java-commons-cli" ,java-commons-cli)
1671 ("java-plexus-cli" ,java-plexus-cli)
1672 ("java-jdom2" ,java-jdom2)
1673 ("maven-plugin-api" ,maven-plugin-api)
1674 ("java-qdox" ,java-qdox)
1675 ;; tests
1676 ("java-plexus-cipher" ,java-plexus-cipher)
1677 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
de99ba7e 1678 ("java-jsr250" ,java-jsr250)
0c1e98eb
JL
1679 ("java-cdi-api" ,java-cdi-api)
1680 ("java-junit" ,java-junit)
1681 ("maven-resolver-impl" ,maven-resolver-impl)
1682 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1683 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1684 ("java-commons-lang3" ,java-commons-lang3)
1685 ("java-aop" ,java-aopalliance)
1686 ("maven-resolver-provider" ,maven-resolver-provider)
1687 ("java-slf4j-api" ,java-slf4j-api)
1688 ("java-slf4j-simple" ,java-slf4j-simple)
1689 ,@(package-inputs java-slf4j-api)))
1690 (description "Apache Maven is a software project management and comprehension
1691tool. This package contains Maven2 classes maintained as compatibility
1692layer for plugins that need to keep Maven2 compatibility.")))
8c2c105c
JL
1693
1694(define-public maven
1695 (package
1696 (inherit maven-artifact)
1697 (name "maven")
1698 (arguments
1699 `(#:phases
1700 (modify-phases %standard-phases
1701 (replace 'build
137bd983
JL
1702 (lambda* (#:key inputs #:allow-other-keys)
1703 ;; Recreate the configuration for the loader
1704 (with-output-to-file "apache-maven/src/bin/m2.conf"
1705 (lambda _
1706 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
1707 (format #t "~%")
1708 (format #t "set maven.conf default ${maven.home}/conf~%")
1709 (format #t "~%")
1710 (format #t "[plexus.core]~%")
1711 (format #t "load ${maven.conf}/logging~%")
1712 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
1713 ;; Reference every jar so plexus-classworlds can find them.
1714 (for-each
1715 (lambda (dependency)
51087d51
JL
1716 (for-each
1717 (lambda (file)
1718 (format #t "load ~a~%" file))
1719 (find-files (assoc-ref inputs dependency) ".*.jar$")))
137bd983
JL
1720 '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
1721 "maven-builder-support" "maven-model" "maven-model-builder"
1722 "maven-settings" "maven-settings-builder" "maven-plugin-api"
1723 "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
1724 "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
1725 "maven-resolver-connector-basic" "maven-resolver-provider"
1726 "maven-resolver-transport-wagon" "maven-wagon-provider-api"
1727 "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
1728 "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
1729 "maven-wagon-http-shared" "maven-wagon-tck-http"
1730 "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
1731 "java-cglib" "java-asm" "java-eclipse-sisu-inject"
1732 "java-javax-inject" "java-plexus-component-annotations"
1733 "java-plexus-utils" "java-plexus-interpolation"
1734 "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
1735 "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
1736 "java-commons-io" "java-commons-lang3" "java-slf4j-api"
1737 "java-slf4j-simple"))))
8c2c105c
JL
1738 (substitute* "apache-maven/src/bin/mvn"
1739 (("cygwin=false;")
1740 (string-append
137bd983
JL
1741 "CLASSPATH="
1742 (car (find-files
1743 (assoc-ref inputs "java-plexus-classworlds")
1744 ".*.jar"))
1745 "\ncygwin=false;"))
8c2c105c
JL
1746 (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
1747 #t))
1748 (delete 'check)
1749 (replace 'install
1750 (lambda* (#:key outputs #:allow-other-keys)
1751 (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))
1752 (conf (string-append (assoc-ref outputs "out") "/conf/")))
1753 (mkdir-p (string-append (assoc-ref outputs "out") "/lib"))
1754 (for-each (lambda (file)
1755 (install-file (string-append "apache-maven/src/bin/" file)
1756 bin)
1757 (chmod (string-append bin file) #o755))
1758 '("mvn" "mvnDebug" "mvnyjp"))
1759 (install-file "apache-maven/src/bin/m2.conf" bin)
1760 (copy-recursively "apache-maven/src/conf" conf))
1761 #t)))))
1762 (inputs
1763 `(("java-plexus-classworlds" ,java-plexus-classworlds)
1764 ("maven-artifact" ,maven-artifact)
1765 ("maven-embedder" ,maven-embedder)
1766 ("maven-core" ,maven-core)
1767 ("maven-compat" ,maven-compat)
1768 ("maven-builder-support" ,maven-builder-support)
1769 ("maven-model" ,maven-model)
1770 ("maven-model-builder" ,maven-model-builder)
1771 ("maven-settings" ,maven-settings)
1772 ("maven-settings-builder" ,maven-settings-builder)
1773 ("maven-plugin-api" ,maven-plugin-api)
de99ba7e 1774 ("maven-repository-metadata" ,maven-repository-metadata)
8c2c105c
JL
1775 ("maven-shared-utils" ,maven-shared-utils)
1776 ("maven-resolver-api" ,maven-resolver-api)
1777 ("maven-resolver-spi" ,maven-resolver-spi)
1778 ("maven-resolver-util" ,maven-resolver-util)
1779 ("maven-resolver-impl" ,maven-resolver-impl)
1780 ("maven-resolver-connector-basic" ,maven-resolver-connector-basic)
1781 ("maven-resolver-provider" ,maven-resolver-provider)
1782 ("maven-resolver-transport-wagon" ,maven-resolver-transport-wagon)
1783 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
1784 ("maven-wagon-file" ,maven-wagon-file)
1785 ("maven-wagon-http" ,maven-wagon-http)
1786 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
1787 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
1788 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
1789 ("maven-wagon-http-shared" ,maven-wagon-http-shared)
1790 ("maven-wagon-tck-http" ,maven-wagon-tck-http)
1791 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1792 ("java-guice" ,java-guice)
1793 ("java-aopalliance" ,java-aopalliance)
1794 ("java-cglib" ,java-cglib)
1795 ("java-asm" ,java-asm)
1796 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1797 ("java-javax-inject" ,java-javax-inject)
1798 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1799 ("java-plexus-utils" ,java-plexus-utils)
1800 ("java-plexus-interpolation" ,java-plexus-interpolation)
1801 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1802 ("java-plexus-cipher" ,java-plexus-cipher)
1803 ("java-guava" ,java-guava)
1804 ("java-jansi" ,java-jansi)
1805 ("java-jsr250" ,java-jsr250)
1806 ("java-cdi-api" ,java-cdi-api)
1807 ("java-commons-cli" ,java-commons-cli)
1808 ("java-commons-io" ,java-commons-io)
1809 ("java-commons-lang3" ,java-commons-lang3)
1810 ("java-slf4j-api" ,java-slf4j-api)
1811 ;; TODO: replace with maven-slf4j-provider
1812 ("java-slf4j-simple" ,java-slf4j-simple)))
7504f3c3
JL
1813 (propagated-inputs
1814 `(("coreutils" ,coreutils)
1815 ("which" ,which)))
8c2c105c
JL
1816 (description "Apache Maven is a software project management and comprehension
1817tool. Based on the concept of a project object model: builds, dependency
1818management, documentation creation, site publication, and distribution
1819publication are all controlled from the @file{pom.xml} declarative file. Maven
1820can be extended by plugins to utilise a number of other development tools for
1821reporting or the build process.")))