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