gnu: Add maven-wagon-http-shared.
[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>
3;;;
4;;; This file is part of GNU Guix.
5;;;
6;;; GNU Guix is free software; you can redistribute it and/or modify it
7;;; under the terms of the GNU General Public License as published by
8;;; the Free Software Foundation; either version 3 of the License, or (at
9;;; your option) any later version.
10;;;
11;;; GNU Guix is distributed in the hope that it will be useful, but
12;;; WITHOUT ANY WARRANTY; without even the implied warranty of
13;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14;;; GNU General Public License for more details.
15;;;
16;;; You should have received a copy of the GNU General Public License
17;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
18
19(define-module (gnu packages maven)
20 #:use-module ((guix licenses) #:prefix license:)
21 #:use-module (guix packages)
22 #:use-module (guix download)
23 #:use-module (guix utils)
24 #:use-module (guix build-system ant)
25 #:use-module (gnu packages)
b2185040 26 #:use-module (gnu packages compression)
9f25cba6 27 #:use-module (gnu packages java)
f216a9f9 28 #:use-module (gnu packages web)
9f25cba6
JL
29 #:use-module (gnu packages xml))
30
31(define-public java-plexus-component-metadata
32 (package
33 (inherit java-plexus-container-default)
34 (name "java-plexus-component-metadata")
35 (arguments
36 `(#:jar-name "plexus-component-metadata.jar"
37 #:source-dir "src/main/java"
38 #:test-dir "src/test"
39 #:jdk ,icedtea-8
40 #:phases
41 (modify-phases %standard-phases
42 (add-before 'configure 'chdir
43 (lambda _
44 (chdir "plexus-component-metadata")
45 #t))
46 (add-before 'build 'copy-resources
47 (lambda _
48 (copy-recursively "src/main/resources"
49 "build/classes/")
50 #t)))))
51 (inputs
52 `(("java-plexus-container-default" ,java-plexus-container-default)
53 ("java-plexu-component-annotations" ,java-plexus-component-annotations)
54 ("java-plexus-utils" ,java-plexus-utils)
55 ("java-plexus-cli" ,java-plexus-cli)
56 ("java-plexus-classworlds" ,java-plexus-classworlds)
57 ("maven-plugin-api" ,maven-plugin-api)
58 ("maven-plugin-annotations" ,maven-plugin-annotations)
59 ("maven-core-bootstrap" ,maven-core-bootstrap)
60 ("maven-model" ,maven-model)
61 ("java-commons-cli" ,java-commons-cli)
62 ("java-qdox" ,java-qdox)
63 ("java-jdom2" ,java-jdom2)
64 ("java-asm" ,java-asm)))
65 (native-inputs
66 `(("java-junit" ,java-junit)
67 ("java-guava" ,java-guava)
68 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
69 (synopsis "Inversion-of-control container for Maven")
70 (description "The Plexus project provides a full software stack for creating
71and executing software projects. Based on the Plexus container, the
72applications can utilise component-oriented programming to build modular,
73reusable components that can easily be assembled and reused. This package
74provides the Maven plugin generating the component metadata.")))
41125eaf
JL
75
76(define-public maven-resolver-api
77 (package
78 (name "maven-resolver-api")
79 (version "1.1.1")
80 (source (origin
81 (method url-fetch)
82 (uri (string-append "https://github.com/apache/maven-resolver/"
83 "archive/maven-resolver-" version ".tar.gz"))
84 (sha256
85 (base32
86 "0rpvdg3qr1j88gw0ankf0wnwfyq6238mdlm7s39vf5jrcvhdgwcl"))))
87 (build-system ant-build-system)
88 (arguments
89 `(#:jar-name "maven-resolver-api.jar"
90 #:source-dir "maven-resolver-api/src/main/java"
91 #:test-dir "maven-resolver-api/src/test"))
92 (native-inputs
93 `(("java-junit" ,java-junit)
94 ("java-hamcrest-core" ,java-hamcrest-core)))
95 (home-page "https://github.com/apache/maven-resolver")
96 (synopsis "Maven repository system API")
97 (description "This package contains the API for the maven repository system.")
98 (license license:asl2.0)))
d85cb539
JL
99
100(define-public maven-resolver-spi
101 (package
102 (inherit maven-resolver-api)
103 (name "maven-resolver-spi")
104 (arguments
105 `(#:jar-name "maven-resolver-spi.jar"
106 #:source-dir "maven-resolver-spi/src/main/java"
107 #:test-dir "maven-resolver-spi/src/test"
108 #:jdk ,icedtea-8))
109 (inputs
110 `(("maven-resolver-api" ,maven-resolver-api)))
111 (synopsis "Maven repository system SPI")
112 (description "This package contains the service provider interface (SPI)
113for repository system implementations and repository connectors.")))
36053783
JL
114
115(define-public maven-resolver-test-util
116 (package
117 (inherit maven-resolver-api)
118 (name "maven-resolver-test-util")
119 (arguments
120 `(#:jar-name "maven-resolver-test-util.jar"
121 #:source-dir "maven-resolver-test-util/src/main/java"
122 #:test-dir "maven-resolver-test-util/src/test"
123 #:jdk ,icedtea-8))
124 (inputs
125 `(("maven-resolver-api" ,maven-resolver-api)
126 ("maven-resolver-spi" ,maven-resolver-spi)))
127 (synopsis "Utility classes for testing the maven repository system")
128 (description "This package contains a collection of utility classes to
129ease testing of the repository system.")))
bca6cf54
JL
130
131(define-public maven-resolver-util
132 (package
133 (inherit maven-resolver-api)
134 (name "maven-resolver-util")
135 (arguments
136 `(#:jar-name "maven-resolver-util.jar"
137 #:source-dir "maven-resolver-util/src/main/java"
138 #:test-dir "maven-resolver-util/src/test"
139 #:jdk ,icedtea-8))
140 (inputs
141 `(("maven-resolver-api" ,maven-resolver-api)))
142 (native-inputs
143 `(("java-junit" ,java-junit)
144 ("java-hamcrest-core" ,java-hamcrest-core)
145 ("maven-resolver-test-util" ,maven-resolver-test-util)))
146 (synopsis "Utility classes for the maven repository system")
147 (description "This package contains a collection of utility classes to
148ease usage of the repository system.")))
f70666c9
JL
149
150(define-public maven-resolver-connector-basic
151 (package
152 (inherit maven-resolver-api)
153 (name "maven-resolver-connector-basic")
154 (arguments
155 `(#:jar-name "maven-resolver-connector-basic.jar"
156 #:source-dir "maven-resolver-connector-basic/src/main/java"
157 #:test-dir "maven-resolver-connector-basic/src/test"
158 #:jdk ,icedtea-8
159 #:phases
160 (modify-phases %standard-phases
161 (add-before 'build 'generate-sisu
162 (lambda _
163 (mkdir-p "build/classes/META-INF/sisu")
164 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
165 (lambda _
166 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n"))))))))
167 (inputs
168 `(("maven-resolver-api" ,maven-resolver-api)
169 ("maven-resolver-spi" ,maven-resolver-spi)
170 ("maven-resolver-util" ,maven-resolver-util)
171 ("java-javax-inject" ,java-javax-inject)))
172 (native-inputs
173 `(("java-junit" ,java-junit)
174 ("java-hamcrest-core" ,java-hamcrest-core)
175 ("maven-resolver-test-util" ,maven-resolver-test-util)))
176 (synopsis "Maven repository connector implementation")
177 (description "This package contains a repository connector implementation
178for repositories using URI-based layouts.")))
458687d5 179
90fe8797
JL
180(define-public maven-resolver-impl
181 (package
182 (inherit maven-resolver-api)
183 (name "maven-resolver-impl")
184 (arguments
185 `(#:jar-name "maven-resolver-impl.jar"
186 #:source-dir "maven-resolver-impl/src/main/java"
187 #:test-dir "maven-resolver-impl/src/test"
188 #:jdk ,icedtea-8
189 #:phases
190 (modify-phases %standard-phases
191 (add-before 'build 'generate-sisu
192 (lambda _
193 (mkdir-p "build/classes/META-INF/sisu")
194 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
195 (lambda _
196 (display
197 (string-append
198 ;; Build this list by looking for files containing "@Named"
199 "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
200 "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
201 "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
202 "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory\n"
203 "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
204 "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
205 "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
206 "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
207 "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
208 "org.eclipse.aether.internal.impl.DefaultDeployer\n"
209 "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
210 "org.eclipse.aether.internal.impl.DefaultInstaller\n"
211 "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
212 "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
213 "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
214 "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
215 "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
216 "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
217 "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
218 "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
219 "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
220 "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
221 "org.eclipse.aether.internal.impl.DefaultDependencyCollector\n"))))
222 #t)))))
223 (inputs
224 `(("maven-resolver-api" ,maven-resolver-api)
225 ("maven-resolver-spi" ,maven-resolver-spi)
226 ("maven-resolver-util" ,maven-resolver-util)
227 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
228 ("java-javax-inject" ,java-javax-inject)
229 ("java-guice" ,java-guice)
230 ("java-guava" ,java-guava)
231 ("java-cglib" ,java-cglib)
232 ("java-asm" ,java-asm)
233 ("jajva-aopalliance" ,java-aopalliance)
234 ("java-slf4j-api" ,java-slf4j-api)))
235 (native-inputs
236 `(("java-junit" ,java-junit)
237 ("java-hamcrest-core" ,java-hamcrest-core)
238 ("maven-resolver-test-util" ,maven-resolver-test-util)))))
239
b2185040
JL
240(define-public maven-shared-utils
241 (package
242 (name "maven-shared-utils")
243 (version "3.2.1")
244 (source (origin
245 (method url-fetch)
246 (uri (string-append "https://archive.apache.org/dist/maven/shared/"
247 "maven-shared-utils-" version "-source-release.zip"))
248 (sha256
249 (base32
250 "1kzmj68wwdcznb36hm6kfz57wbavw7g1rp236pz10znkjljn6rf6"))))
251 (build-system ant-build-system)
252 (arguments
253 `(#:jar-name "maven-shared-utils.jar"
254 #:source-dir "src/main/java"
255 #:jdk ,icedtea-8
256 #:phases
257 (modify-phases %standard-phases
258 (add-before 'check 'remove-cyclic-dep
259 (lambda _
260 (delete-file
261 "src/test/java/org/apache/maven/shared/utils/introspection/ReflectionValueExtractorTest.java")
262 #t)))))
263 (inputs
264 `(("java-jansi" ,java-jansi)
265 ("java-commons-io" ,java-commons-io)
266 ("java-jsr305" ,java-jsr305)
267 ("java-plexus-container-default" ,java-plexus-container-default)))
268 (native-inputs
269 `(("unzip" ,unzip)
270 ("java-junit" ,java-junit)
271 ("java-hamcrest-core" ,java-hamcrest-core)
272 ("java-commons-lang3" ,java-commons-lang3)))
273 (home-page "https://maven.apache.org/shared/maven-shared-utils/")
274 (synopsis "Plexus-util replacement for maven")
275 (description "This project aims to be a functional replacement for
276plexus-utils in Maven. It is not a 100% API compatible replacement but a
277replacement with improvements.")
278 (license license:asl2.0)))
279
a59d5f35
JL
280(define-public maven-plugin-annotations
281 (package
282 (name "maven-plugin-annotations")
283 (version "3.5")
284 (source (origin
285 (method url-fetch)
286 (uri (string-append "https://archive.apache.org/dist/maven/"
287 "plugin-tools/maven-plugin-tools-" version
288 "-source-release.zip"))
289 (sha256 (base32 "1ryqhs62j5pas93brhf5dsnvp99hxbvssf681yj5rk3r9h24hqm2"))))
290 (build-system ant-build-system)
291 (arguments
292 `(#:jar-name "maven-plugin-annotations.jar"
293 #:source-dir "maven-plugin-annotations/src/main/java"
294 #:tests? #f))
295 (inputs
296 `(("maven-artifact" ,maven-artifact)))
297 (native-inputs
298 `(("unzip" ,unzip)))
299 (home-page "https://maven.apache.org/plugin-tools/maven-plugin-annotations/")
300 (synopsis "Java 5 annotations to use in Mojos")
301 (description "This package contains Java 5 annotations for use in Mojos.")
302 (license license:asl2.0)))
303
ff7a0fcf
JL
304(define-public maven-wagon-provider-api
305 (package
306 (name "maven-wagon-provider-api")
307 (version "3.0.0")
308 (source (origin
309 (method url-fetch)
310 (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
311 "wagon-" version "-source-release.zip"))
312 (sha256 (base32 "1qb0q4m7vmf290xp3fnfdi3pwl3hkskia5g3z2v82q1ch3y2knqv"))))
313 (build-system ant-build-system)
314 (arguments
315 `(#:jar-name "maven-wagon-provider-api.jar"
316 #:source-dir "wagon-provider-api/src/main/java"
317 #:test-dir "wagon-provider-api/src/test"))
318 (inputs
319 `(("java-plexus-utils" ,java-plexus-utils)))
320 (native-inputs
321 `(("unzip" ,unzip)
322 ("java-junit" ,java-junit)
323 ("java-easymock" ,java-easymock)))
324 (home-page "https://maven.apache.org/wagon")
325 (synopsis "Transport abstraction for Maven")
326 (description "Maven Wagon is a transport abstraction that is used in Maven's
327artifact and repository handling code.")
328 (license license:asl2.0)))
329
f216a9f9
JL
330(define-public maven-wagon-provider-test
331 (package
332 (inherit maven-wagon-provider-api)
333 (name "maven-wagon-provider-test")
334 (arguments
335 `(#:jar-name "maven-wagon-provider-test.jar"
336 #:source-dir "wagon-provider-test/src/main/java"
337 #:tests? #f; no tests
338 #:jdk ,icedtea-8))
339 (inputs
340 `(("java-plexus-utils" ,java-plexus-utils)
341 ("java-plexus-container-default" ,java-plexus-container-default)
342 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
343 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
344 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
345 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
346 ("java-slf4j-api" ,java-slf4j-api)
347 ("java-tomcat" ,java-tomcat)
348 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
349 (synopsis "Test classes from maven-wagon")
350 (description "Maven Wagon is a transport abstraction that is used in Maven's
351artifact and repository handling code. This package contains common test
352classes used in multiple maven-wagon components.")))
353
0d1b3b39
JL
354(define-public maven-wagon-file
355 (package
356 (inherit maven-wagon-provider-api)
357 (name "maven-wagon-file")
358 (arguments
359 `(#:jar-name "maven-wagon-file.jar"
360 #:source-dir "wagon-providers/wagon-file/src/main/java"
361 #:test-dir "wagon-providers/wagon-file/src/test"
362 #:jdk ,icedtea-8
363 #:phases
364 (modify-phases %standard-phases
365 (add-before 'check 'fix-paths
366 (lambda _
367 ;; Tests assume they are run by maven, which copies test resources
368 ;; to target. Our ant-build-system does the same, but with the
369 ;; build directory.
370 (substitute* "wagon-providers/wagon-file/src/test/java/org/apache/maven/wagon/providers/file/FileWagonTest.java"
371 (("target") "build"))
372 #t))
373 (add-after 'build 'generate-metadata
374 (lambda _
375 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
376 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
377 "--source" "wagon-providers/wagon-file/src/main/java"
378 "--output" "build/classes/META-INF/plexus/components.xml"
379 "--classes" "build/classes"
380 "--descriptors" "build/classes/META-INF")
381 #t))
382 (add-after 'generate-metadata 'rebuild
383 (lambda _
384 (invoke "ant" "jar")
385 #t)))))
386 (inputs
387 `(("java-plexus-utils" ,java-plexus-utils)
388 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
389 (native-inputs
390 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
391 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
392 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
393 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
394 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
395 ("java-plexus-classworlds" ,java-plexus-classworlds)
396 ("java-guava" ,java-guava)
397 ("java-guice" ,java-guice)
398 ("java-javax-inject" ,java-javax-inject)
399 ("java-cglib" ,java-cglib)
400 ("java-slf4j-api" ,java-slf4j-api)
401 ("java-plexus-utils" ,java-plexus-utils)
402 ("java-plexus-cli" ,java-plexus-cli)
403 ("maven-plugin-api" ,maven-plugin-api)
404 ("maven-plugin-annotations" ,maven-plugin-annotations)
405 ("maven-core" ,maven-core)
406 ("maven-model" ,maven-model)
407 ("java-commons-cli" ,java-commons-cli)
408 ("java-qdox" ,java-qdox)
409 ("java-jdom2" ,java-jdom2)
410 ("java-asm" ,java-asm)
411 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
412 ,@(package-native-inputs maven-wagon-provider-api)))
413 (synopsis "Wagon provider that gets and puts artifacts using the file system")
414 (description "Maven Wagon is a transport abstraction that is used in Maven's
415artifact and repository handling code. It uses providers, that are tools to
416manage artifacts and deployment. This package contains the file provider which
417gets and puts artifacts using the file system.")))
418
53360e48
JL
419(define-public maven-wagon-tck-http
420 (package
421 (inherit maven-wagon-provider-api)
422 (name "maven-wagon-tck-http")
423 (arguments
424 `(#:jar-name "maven-wagon-tck-http.jar"
425 #:source-dir "wagon-tcks/wagon-tck-http/src/main/java"
426 #:tests? #f; no tests
427 #:jdk ,icedtea-8))
428 (inputs
429 `(("java-plexus-util" ,java-plexus-utils)
430 ("maven-wagon-provider-api" ,maven-wagon-provider-api)
431 ("java-tomcat" ,java-tomcat)
432 ("java-slf4j-api" ,java-slf4j-api)
433 ("java-commons-codec" ,java-commons-codec)
434 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
435 ("java-plexus-classworlds" ,java-plexus-classworlds)
436 ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
437 ("java-eclipse-jetty-webapp-9.2" ,java-eclipse-jetty-webapp-9.2)
438 ("java-eclipse-jetty-security-9.2" ,java-eclipse-jetty-security-9.2)
439 ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
440 ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)))
441 (synopsis "Wagon HTTP Test Compatibility Kit")
442 (description "Maven Wagon is a transport abstraction that is used in Maven's
443artifact and repository handling code. This package contains the HTTP
444Test Compatibility Kit.")))
445
c3f5ec6e
JL
446(define-public maven-wagon-http-shared
447 (package
448 (inherit maven-wagon-provider-api)
449 (name "maven-wagon-http-shared")
450 (arguments
451 `(#:jar-name "maven-wagon-http-shared.jar"
452 #:source-dir "wagon-providers/wagon-http-shared/src/main/java"
453 #:test-dir "wagon-providers/wagon-http-shared/src/test"
454 #:jdk ,icedtea-8
455 #:phases
456 (modify-phases %standard-phases
457 (add-after 'build 'generate-metadata
458 (lambda _
459 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
460 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
461 "--source" "wagon-providers/wagon-http-shared/src/main/java"
462 "--output" "build/classes/META-INF/plexus/components.xml"
463 "--classes" "build/classes"
464 "--descriptors" "build/classes/META-INF")
465 #t))
466 (add-after 'generate-metadata 'rebuild
467 (lambda _
468 (invoke "ant" "jar")
469 #t)))))
470 (inputs
471 `(("java-plexus-utils" ,java-plexus-utils)
472 ("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
473 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
474 ("java-commons-io" ,java-commons-io)
475 ("java-jsoup" ,java-jsoup)
476 ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
477 (native-inputs
478 `(("maven-wagon-provider-test" ,maven-wagon-provider-test)
479 ("java-plexus-component-metadata" ,java-plexus-component-metadata)
480 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
481 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
482 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
483 ("java-plexus-classworlds" ,java-plexus-classworlds)
484 ("java-guava" ,java-guava)
485 ("java-guice" ,java-guice)
486 ("java-javax-inject" ,java-javax-inject)
487 ("java-cglib" ,java-cglib)
488 ("java-slf4j-api" ,java-slf4j-api)
489 ("java-plexus-utils" ,java-plexus-utils)
490 ("java-plexus-cli" ,java-plexus-cli)
491 ("maven-plugin-api" ,maven-plugin-api)
492 ("maven-plugin-annotations" ,maven-plugin-annotations)
493 ("maven-core" ,maven-core)
494 ("maven-model" ,maven-model)
495 ("java-commons-cli" ,java-commons-cli)
496 ("java-qdox" ,java-qdox)
497 ("java-jdom2" ,java-jdom2)
498 ("java-asm" ,java-asm)
499 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
500 ,@(package-native-inputs maven-wagon-provider-api)))
501 (synopsis "Shared Library for wagon providers supporting HTTP.")
502 (description "Maven Wagon is a transport abstraction that is used in Maven's
503artifact and repository handling code. It uses providers, that are tools to
504manage artifacts and deployment. This package contains a shared library for
505wagon providers supporting HTTP.")))
506
458687d5
JL
507(define-public maven-artifact
508 (package
509 (name "maven-artifact")
510 (version "3.5.3")
511 (source (origin
512 (method url-fetch)
513 (uri (string-append "https://archive.apache.org/dist/maven/"
514 "maven-3/" version "/source/"
515 "apache-maven-" version "-src.tar.gz"))
516 (sha256 (base32 "06by23fz207lkvsndq883irfcf4p77jzkgf7n2q7hzyw1hs4h5s7"))
517 (modules '((guix build utils)))
518 (snippet
519 '(begin
520 (for-each delete-file (find-files "." "\\.jar$"))
521 #t))
522 (patches
523 (search-patches "maven-generate-component-xml.patch"
524 "maven-generate-javax-inject-named.patch"))))
525 (build-system ant-build-system)
526 (arguments
527 `(#:jar-name "maven-artifact.jar"
528 #:source-dir "maven-artifact/src/main/java"
529 #:test-dir "maven-artifact/src/test"
530 #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"))
531 (inputs
532 `(("java-plexus-utils" ,java-plexus-utils)
533 ("java-commons-lang3" ,java-commons-lang3)))
534 (native-inputs
535 `(("java-junit" ,java-junit)))
536 (home-page "https://maven.apache.org/")
537 (synopsis "Build system")
538 (description "Apache Maven is a software project management and comprehension
539tool. This package contains the Maven Artifact classes, providing the
540@code{Artifact} interface, with its @code{DefaultArtifact} implementation. The
541jar file is executable and provides a little tool to display how Maven parses
542and compares versions:")
543 (license license:asl2.0)))
d55503a6
JL
544
545(define-public maven-model
546 (package
547 (inherit maven-artifact)
548 (name "maven-model")
549 (arguments
550 `(#:jar-name "maven-model.jar"
551 #:source-dir "maven-model/src/main/java"
552 #:test-dir "maven-model/src/test"
553 #:jdk ,icedtea-8
554 #:phases
555 (modify-phases %standard-phases
556 (add-before 'build 'generate-models
557 (lambda* (#:key inputs #:allow-other-keys)
558 (define (modello-single-mode file version mode)
559 (invoke "java" "org.codehaus.modello.ModelloCli"
560 file mode "maven-model/src/main/java" version
561 "false" "true"))
562 (let ((file "maven-model/src/main/mdo/maven.mdo"))
563 (modello-single-mode file "4.0.0" "java")
564 (modello-single-mode file "4.0.0" "xpp3-reader")
565 (modello-single-mode file "4.0.0" "xpp3-writer")
566 (modello-single-mode file "4.0.0" "xpp3-extended-reader"))
567 #t)))))
568 (inputs
569 `(("java-commons-lang3" ,java-commons-lang3)
570 ("java-plexus-utils" ,java-plexus-utils)))
571 (native-inputs
572 `(("java-modello-core" ,java-modello-core)
573 ;; for modello:
574 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
575 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
576 ("java-guice" ,java-guice)
577 ("java-cglib" ,java-cglib)
578 ("java-asm" ,java-asm)
579 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
580 ("java-javax-inject" ,java-javax-inject)
581 ("java-plexus-classworlds" ,java-plexus-classworlds)
582 ("java-guava" ,java-guava)
583 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
584 ("java-sisu-build-api" ,java-sisu-build-api)
585 ;; modello plugins:
586 ("java-modello-plugins-java" ,java-modello-plugins-java)
587 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
588 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
589 ;; for tests
590 ("java-junit" ,java-junit)))
591 (description "Apache Maven is a software project management and comprehension
592tool. This package contains the model for Maven @dfn{POM} (Project Object Model),
593so really just plain Java objects.")))
f084641a
JL
594
595(define-public maven-builder-support
596 (package
597 (inherit maven-artifact)
598 (name "maven-builder-support")
599 (arguments
600 `(#:jar-name "maven-builder-support.jar"
601 #:source-dir "maven-builder-support/src/main/java"
602 #:jdk ,icedtea-8
603 #:test-dir "maven-builder-support/src/test"
604 #:phases
605 (modify-phases %standard-phases
606 (add-before 'check 'fix-paths
607 (lambda _
608 (with-directory-excursion "maven-builder-support/src/test/java"
609 (substitute*
610 '("org/apache/maven/building/FileSourceTest.java"
611 "org/apache/maven/building/UrlSourceTest.java")
612 (("target/test-classes") "maven-builder-support/src/test/resources")))
613 #t)))))
614 (inputs
615 `(("java-plexus-utils" ,java-plexus-utils)
616 ("java-commons-lang3" ,java-commons-lang3)))
617 (native-inputs
618 `(("java-junit" ,java-junit)
619 ("java-hamcrest-core" ,java-hamcrest-core)))
620 (description "Apache Maven is a software project management and comprehension
621tool. This package contains a support library for descriptor builders (model,
622setting, toolchains)")))
18110e45
JL
623
624(define-public maven-settings
625 (package
626 (inherit maven-artifact)
627 (name "maven-settings")
628 (arguments
629 `(#:jar-name "maven-settings.jar"
630 #:source-dir "maven-settings/src/main/java"
631 #:jdk ,icedtea-8
632 #:tests? #f; no tests
633 #:phases
634 (modify-phases %standard-phases
635 (add-before 'build 'generate-models
636 (lambda* (#:key inputs #:allow-other-keys)
637 (define (modello-single-mode file version mode)
638 (invoke "java" "org.codehaus.modello.ModelloCli"
639 file mode "maven-settings/src/main/java" version
640 "false" "true"))
641 (let ((file "maven-settings/src/main/mdo/settings.mdo"))
642 (modello-single-mode file "1.1.0" "java")
643 (modello-single-mode file "1.1.0" "xpp3-reader")
644 (modello-single-mode file "1.1.0" "xpp3-writer"))
645 #t)))))
646 (inputs '())
647 (native-inputs
648 `(("java-modello-core" ,java-modello-core)
649 ;; for modello:
650 ;("container" ,java-plexus-container-default)
651 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
652 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
653 ("java-guice" ,java-guice)
654 ("java-cglib" ,java-cglib)
655 ("java-asm" ,java-asm)
656 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
657 ("java-javax-inject" ,java-javax-inject)
658 ("java-plexus-classworlds" ,java-plexus-classworlds)
659 ("java-plexus-utils" ,java-plexus-utils)
660 ("java-guava" ,java-guava)
661 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
662 ("java-sisu-build-api" ,java-sisu-build-api)
663 ;; modello plugins:
664 ("java-modello-plugins-java" ,java-modello-plugins-java)
665 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
666 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
667 (description "Apache Maven is a software project management and comprehension
668tool. This package contains strictly the model for Maven settings, that is
669simply plain java objects.")))
3a5572ae
JL
670
671(define-public maven-settings-builder
672 (package
673 (inherit maven-artifact)
674 (name "maven-settings-builder")
675 (arguments
676 `(#:jar-name "maven-settings-builder.jar"
677 #:source-dir "maven-settings-builder/src/main/java"
678 #:jdk ,icedtea-8
679 #:test-dir "maven-settings-builder/src/test"
680 #:phases
681 (modify-phases %standard-phases
682 (add-before 'build 'generate-components.xml
683 (lambda _
684 (mkdir-p "build/classes/META-INF/plexus")
685 (chmod "components.sh" #o755)
686 (invoke "./components.sh" "maven-settings-builder/src/main/java"
687 "build/classes/META-INF/plexus/components.xml")
688 #t)))))
689 (inputs
690 `(("java-plexus-utils" ,java-plexus-utils)
691 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
692 ("java-plexus-interpolation" ,java-plexus-interpolation)
693 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
694 ("maven-builder-support" ,maven-builder-support)
695 ("maven-settings" ,maven-settings)
696 ("java-commons-lang3" ,java-commons-lang3)))
697 (native-inputs
698 `(("java-junit" ,java-junit)))
699 (description "Apache Maven is a software project management and comprehension
700tool. This package contains the effective model builder, with profile activation,
701inheritance, interpolation, @dots{}")))
516db3b9
JL
702
703(define-public maven-model-builder
704 (package
705 (inherit maven-artifact)
706 (name "maven-model-builder")
707 (arguments
708 `(#:jar-name "maven-model-builder.jar"
709 #:source-dir "maven-model-builder/src/main/java"
710 #:jdk ,icedtea-8
711 #:test-dir "maven-model-builder/src/test"
712 #:phases
713 (modify-phases %standard-phases
714 (add-before 'build 'copy-resources
715 (lambda _
716 (copy-recursively "maven-model-builder/src/main/resources"
717 "build/classes")
718 #t))
719 (add-before 'build 'generate-components.xml
720 (lambda _
721 (mkdir-p "build/classes/META-INF/plexus")
722 (chmod "components.sh" #o755)
723 (invoke "./components.sh" "maven-model-builder/src/main/java"
724 "build/classes/META-INF/plexus/components.xml")
725 #t))
726 (add-before 'check 'fix-paths
727 (lambda _
728 (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
729 (("src/test") "maven-model-builder/src/test"))
730 #t)))))
731 (inputs
732 `(("model" ,maven-model)
733 ("artifact" ,maven-artifact)
734 ("support" ,maven-builder-support)
735 ("annotations" ,java-plexus-component-annotations)
736 ("utils" ,java-plexus-utils)
737 ("interpolation" ,java-plexus-interpolation)
738 ("lang3" ,java-commons-lang3)
739 ("guava" ,java-guava)))
740 (native-inputs
741 `(("java-junit" ,java-junit)
742 ("java-hamcrest-core" ,java-hamcrest-core)
743 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
744 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
745 ("guice" ,java-guice)
746 ("java-cglib" ,java-cglib)
747 ("java-asm" ,java-asm)
748 ("sisu-inject" ,java-eclipse-sisu-inject)
749 ("javax-inject" ,java-javax-inject)
750 ("xmlunit" ,java-xmlunit)
751 ("xmlunit" ,java-xmlunit-legacy)
752 ("xbean" ,java-geronimo-xbean-reflect)
753 ("classworlds" ,java-plexus-classworlds)))
754 (description "Apache Maven is a software project management and comprehension
755tool. This package contains the effective model builder, with profile activation,
756inheritance, interpolation, @dots{}")))
18736663
JL
757
758(define-public maven-repository-metadata
759 (package
760 (inherit maven-artifact)
761 (name "maven-repository-metadata")
762 (arguments
763 `(#:jar-name "maven-repository-metadata.jar"
764 #:source-dir "maven-repository-metadata/src/main/java"
765 #:jdk ,icedtea-8
766 #:tests? #f; no tests
767 #:phases
768 (modify-phases %standard-phases
769 (add-before 'build 'generate-models
770 (lambda* (#:key inputs #:allow-other-keys)
771 (define (modello-single-mode file version mode)
772 (invoke "java" "org.codehaus.modello.ModelloCli"
773 file mode "maven-repository-metadata/src/main/java" version
774 "false" "true"))
775 (let ((file "maven-repository-metadata/src/main/mdo/metadata.mdo"))
776 (modello-single-mode file "1.1.0" "java")
777 (modello-single-mode file "1.1.0" "xpp3-reader")
778 (modello-single-mode file "1.1.0" "xpp3-writer"))
779 #t)))))
780 (inputs '())
781 (native-inputs
782 `(("modello" ,java-modello-core)
783 ;; for modello:
784 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
785 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
786 ("java-guice" ,java-guice)
787 ("java-cglib" ,java-cglib)
788 ("java-asm" ,java-asm)
789 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
790 ("java-javax-inject" ,java-javax-inject)
791 ("java-plexus-utils" ,java-plexus-utils)
792 ("java-plexus-classworlds" ,java-plexus-classworlds)
793 ("java-guava" ,java-guava)
794 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
795 ("java-sisu-build-api" ,java-sisu-build-api)
796 ;; modello plugins:
797 ("java-modello-plugins-java" ,java-modello-plugins-java)
798 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
799 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)))
800 (description "Apache Maven is a software project management and comprehension
801tool. This package contains strictly the model for Maven Repository Metadata,
802so really just plain objects.")))
5aa4ea6a
JL
803
804(define-public maven-resolver-provider
805 (package
806 (inherit maven-artifact)
807 (name "maven-resolver-provider")
808 (arguments
809 `(#:jar-name "maven-resolver-provider.jar"
810 #:source-dir "maven-resolver-provider/src/main/java"
811 #:test-dir "maven-resolver-provider/src/test"
812 #:jdk ,icedtea-8
813 #:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
814 #:phases
815 (modify-phases %standard-phases
816 (add-before 'build 'generate-sisu-named
817 (lambda _
818 (mkdir-p "build/classes/META-INF/sisu")
819 (chmod "./sisu.sh" #o755)
820 (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
821 "build/classes/META-INF/sisu/javax.inject.Named")
822 #t)))))
823 (inputs
824 `(("maven-resolver-spi" ,maven-resolver-spi)
825 ("maven-resolver-api" ,maven-resolver-api)
826 ("maven-resolver-impl" ,maven-resolver-impl)
827 ("maven-resolver-util" ,maven-resolver-util)
828 ("maven-model" ,maven-model)
829 ("maven-model-builder" ,maven-model-builder)
830 ("maven-builder-support" ,maven-builder-support)
831 ("maven-repository-metadata" ,maven-repository-metadata)
832 ("java-plexus-utils" ,java-plexus-utils)
833 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
834 ("java-commons-lang3" ,java-commons-lang3)
835 ("java-guice" ,java-guice)
836 ("java-guava" ,java-guava)
837 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
838 ("java-javax-inject" ,java-javax-inject)))))
8f5caf93
JL
839
840(define-public maven-plugin-api
841 (package
842 (inherit maven-artifact)
843 (name "maven-plugin-api")
844 (arguments
845 `(#:jar-name "maven-plugin-api.jar"
846 #:source-dir "maven-plugin-api/src/main/java"
847 #:jdk ,icedtea-8
848 #:test-dir "maven-plugin-api/src/test"
849 #:phases
850 (modify-phases %standard-phases
851 (add-before 'build 'generate-models
852 (lambda* (#:key inputs #:allow-other-keys)
853 (define (modello-single-mode file version mode)
854 (invoke "java" "org.codehaus.modello.ModelloCli"
855 file mode "maven-plugin-api/src/main/java" version
856 "false" "true"))
857 (let ((file "maven-plugin-api/src/main/mdo/lifecycle.mdo"))
858 (modello-single-mode file "1.0.0" "java")
859 (modello-single-mode file "1.0.0" "xpp3-reader")
860 (modello-single-mode file "1.0.0" "xpp3-writer"))
861 #t)))))
862 (inputs
863 `(("maven-artifact" ,maven-artifact)
864 ("maven-model" ,maven-model)
865 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
866 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
867 ("guice" ,java-guice)
868 ("java-cglib" ,java-cglib)
869 ("java-asm" ,java-asm)
870 ("sisu-inject" ,java-eclipse-sisu-inject)
871 ("javax-inject" ,java-javax-inject)
872 ("utils" ,java-plexus-utils)))
873 (native-inputs
874 `(("modello" ,java-modello-core)
875 ;; for modello:
876 ("classworlds" ,java-plexus-classworlds)
877 ("guava" ,java-guava)
878 ("xbean" ,java-geronimo-xbean-reflect)
879 ("build-api" ,java-sisu-build-api)
880 ;; modello plugins:
881 ("java" ,java-modello-plugins-java)
882 ("xml" ,java-modello-plugins-xml)
883 ("xpp3" ,java-modello-plugins-xpp3)
884 ;; for tests
885 ("java-junit" ,java-junit)))
886 (description "Apache Maven is a software project management and comprehension
887tool. This package contains strictly the API for plugins -- composed of goals
888implemented by Mojos -- development.
889
890A plugin is described in a @file{META-INF/maven/plugin.xml} plugin descriptor,
891generally generated from plugin sources using maven-plugin-plugin.")))
7a42f058
JL
892
893(define maven-core-bootstrap
894 (package
895 (inherit maven-artifact)
896 (name "maven-core")
897 (arguments
898 `(#:jar-name "maven-core.jar"
899 #:source-dir "src/main/java"
900 #:jdk ,icedtea-8
901 ;; Tests need maven-compat, which requires maven-core
902 #:tests? #f
903 #:phases
904 (modify-phases %standard-phases
905 (add-before 'configure 'chdir
906 (lambda _
907 ;; Required for generating components.xml in maven-core
908 (chdir "maven-core")
909 #t))
910 (add-before 'build 'copy-resources
911 (lambda _
912 (mkdir-p "build/classes/")
913 (copy-recursively "src/main/resources" "build/classes")
914 #t))
915 (add-before 'build 'generate-sisu-named
916 (lambda _
917 (mkdir-p "build/classes/META-INF/sisu")
918 (chmod "../sisu.sh" #o755)
919 (invoke "../sisu.sh" "src/main/java"
920 "build/classes/META-INF/sisu/javax.inject.Named")
921 #t))
922 (add-before 'build 'generate-models
923 (lambda* (#:key inputs #:allow-other-keys)
924 (define (modello-single-mode file version mode)
925 (invoke "java" "org.codehaus.modello.ModelloCli"
926 file mode "src/main/java" version
927 "false" "true"))
928 (let ((file "src/main/mdo/toolchains.mdo"))
929 (modello-single-mode file "1.1.0" "java")
930 (modello-single-mode file "1.1.0" "xpp3-reader")
931 (modello-single-mode file "1.1.0" "xpp3-writer"))
932 #t)))))
933 (inputs
934 `(("maven-artifact" ,maven-artifact)
935 ("maven-resolver-provider" ,maven-resolver-provider)
936 ("maven-builder-support" ,maven-builder-support)
937 ("maven-model" ,maven-model)
938 ("maven-model-builder" ,maven-model-builder)
939 ("maven-settings" ,maven-settings)
940 ("maven-settings-builder" ,maven-settings-builder)
941 ("maven-plugin-api" ,maven-plugin-api)
942 ("maven-repository-metadata" ,maven-repository-metadata)
943 ("maven-shared-utils" ,maven-shared-utils)
944 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
945 ("java-plexus-utils" ,java-plexus-utils)
946 ("java-commons-lang3" ,java-commons-lang3)
947 ("java-guava" ,java-guava)
948 ("java-guice" ,java-guice)
949 ("maven-resolver-api" ,maven-resolver-api)
950 ("maven-resolver-spi" ,maven-resolver-spi)
951 ("maven-resolver-util" ,maven-resolver-util)
952 ("maven-resolver-impl" ,maven-resolver-impl)
953 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
954 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
955 ("java-javax-inject" ,java-javax-inject)
956 ("java-plexus-classworld" ,java-plexus-classworlds)))
957 (native-inputs
958 `(("java-modello-core" ,java-modello-core)
959 ("java-cglib" ,java-cglib)
960 ("java-asm" ,java-asm)
961 ("java-plexus-classworlds" ,java-plexus-classworlds)
962 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
963 ("java-sisu-build-api" ,java-sisu-build-api)
964 ("java-modello-plugins-java" ,java-modello-plugins-java)
965 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
966 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
967 ;; tests
968 ("java-junit" ,java-junit)
969 ("java-mockito-1" ,java-mockito-1)
970 ("java-commons-jxpath" ,java-commons-jxpath)))
971 (description "Apache Maven is a software project management and comprehension
972tool. This package contains the maven core classes managing the whole build
973process.")))
b822544c
JL
974
975(define-public maven-core
976 (package
977 (inherit maven-core-bootstrap)
978 (arguments
979 (substitute-keyword-arguments (package-arguments maven-core-bootstrap)
980 ((#:phases phases)
981 `(modify-phases ,phases
982 (add-before 'build 'modify-metainf
983 (lambda _
984 (substitute* "build.xml"
985 (("message=\"\"") "message=\"Implementation-Version: 3.5.3\n\""))
986 #t))
987 (add-before 'build 'add-maven-files
988 (lambda _
989 (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core")
990 (copy-file "pom.xml"
991 "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml")
992 (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties"
993 (lambda _
994 (format #t "version=~a~%
995groupId=org.apache.maven~%
996artifactId=maven-core" ,(package-version maven-core-bootstrap))))
997 #t))
998 (add-after 'build 'generate-metadata
999 (lambda _
1000 (define (components file)
1001 (let ((sxml (with-input-from-file file
1002 (lambda _ (xml->sxml (current-input-port)
1003 #:trim-whitespace? #t)))))
1004 ;; Select the list of <component>s inside the <component-set>
1005 ;; and <components>.
1006 ((@ (ice-9 match) match) sxml
1007 (('*TOP*
1008 ('*PI* foo ...)
1009 ('component-set
1010 ('components x ...))) x))))
1011 (use-modules (sxml simple))
1012 (delete-file "build/classes/META-INF/plexus/components.xml")
1013 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
1014 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
1015 "--source" "build/classes/META-INF/plexus"
1016 "--output" "build/classes/META-INF/plexus/components.t.xml"
1017 "--classes" "build/classes"
1018 "--descriptors" "build/classes")
1019 ;; Now we merge all other components from hand-written xml
1020 (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml"))
1021 (components-xml (components "src/main/resources/META-INF/plexus/components.xml"))
1022 (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml"))
1023 (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml")))
1024 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
1025 (lambda _
1026 (display "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n")
1027 (sxml->xml
1028 `(component-set
1029 (components
1030 ,@(append generated-xml components-xml
1031 default-bindings-xml
1032 artifact-handlers-xml)))))))
1033 #t))
1034 (add-after 'generate-metadata 'rebuild
1035 (lambda _
1036 (invoke "ant" "jar")
1037 #t))))))
1038 (native-inputs
1039 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
1040 ("java-commons-cli" ,java-commons-cli)
1041 ("java-plexus-cli" ,java-plexus-cli)
1042 ("java-jdom2" ,java-jdom2)
1043 ("java-qdox" ,java-qdox)
1044 ("maven-core-boot" ,maven-core-bootstrap)
1045 ,@(package-native-inputs maven-core-bootstrap)))))
e2c7d329
JL
1046
1047(define-public maven-embedder
1048 (package
1049 (inherit maven-artifact)
1050 (name "maven-embedder")
1051 (arguments
1052 `(#:jar-name "maven-embedder.jar"
1053 #:source-dir "maven-embedder/src/main/java"
1054 #:test-dir "maven-embedder/src/test"
1055 #:test-exclude (list "**/MavenCliTest.java")
1056 #:jdk ,icedtea-8
1057 #:phases
1058 (modify-phases %standard-phases
1059 (add-before 'build 'generate-sisu-named
1060 (lambda _
1061 (mkdir-p "build/classes/META-INF/sisu")
1062 (chmod "sisu.sh" #o755)
1063 (invoke "./sisu.sh" "maven-embedder/src/main/java"
1064 "build/classes/META-INF/sisu/javax.inject.Named")
1065 #t))
1066 (add-before 'build 'generate-models
1067 (lambda* (#:key inputs #:allow-other-keys)
1068 (define (modello-single-mode file version mode)
1069 (invoke "java" "org.codehaus.modello.ModelloCli"
1070 file mode "maven-embedder/src/main/java" version
1071 "false" "true"))
1072 (let ((file "maven-embedder/src/main/mdo/core-extensions.mdo"))
1073 (modello-single-mode file "1.0.0" "java")
1074 (modello-single-mode file "1.0.0" "xpp3-reader")
1075 (modello-single-mode file "1.0.0" "xpp3-writer"))
1076 #t))
1077 (add-before 'check 'fix-test-paths
1078 (lambda _
1079 (substitute* "maven-embedder/src/test/java/org/apache/maven/cli/CLIManagerDocumentationTest.java"
1080 (("target/test-classes") "build/test-classes"))
1081 #t))
1082 (add-before 'check 'fix-test-compilation
1083 (lambda _
1084 ;; Tests are in the java/ subdir. Other subdirectories contain
1085 ;; additional test plugins, with duplicate classes, so we can't
1086 ;; compile them. Also, they are meant to be built with maven, to
1087 ;; test its build process.
1088 (substitute* "build.xml"
1089 (("srcdir=\"maven-embedder/src/test\"")
1090 "srcdir=\"maven-embedder/src/test/java\""))
1091 #t)))))
1092 (inputs
1093 `(("maven-core" ,maven-core)
1094 ("maven-artifact" ,maven-artifact)
1095 ("maven-plugin-api" ,maven-plugin-api)
1096 ("maven-builder-support" ,maven-builder-support)
1097 ("maven-model" ,maven-model)
1098 ("maven-model-builder" ,maven-model-builder)
1099 ("maven-settings" ,maven-settings)
1100 ("maven-settings-builder" ,maven-settings-builder)
1101 ("maven-shared-utils" ,maven-shared-utils)
1102 ("java-plexus-classworlds" ,java-plexus-classworlds)
1103 ("java-plexus-util" ,java-plexus-utils)
1104 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1105 ("java-plexus-cipher" ,java-plexus-cipher)
1106 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
1107 ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher)
1108 ("maven-resolevr-util" ,maven-resolver-util)
1109 ("maven-resolevr-api" ,maven-resolver-api)
1110 ("java-logback-core" ,java-logback-core)
1111 ("java-logback-classic" ,java-logback-classic)
1112 ("java-commons-cli" ,java-commons-cli)
1113 ("java-commons-io" ,java-commons-io)
1114 ("java-commons-lang3" ,java-commons-lang3)
1115 ("java-guava" ,java-guava)
1116 ("java-guice" ,java-guice)
1117 ("java-javax-inject" ,java-javax-inject)
1118 ("java-slf4j-api" ,java-slf4j-api)
1119 ("java-slf4j-simple" ,java-slf4j-simple)))
1120 (native-inputs
1121 `(("java-modello-core" ,java-modello-core)
1122 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
1123 ("java-sisu-build-api" ,java-sisu-build-api)
1124 ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
1125 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
1126 ("java-cglib" ,java-cglib)
1127 ("java-asm" ,java-asm)
1128 ("java-modello-plugins-java" ,java-modello-plugins-java)
1129 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
1130 ("java-modello-plugins-xpp3" ,java-modello-plugins-xpp3)
1131 ;; tests
1132 ("java-junit" ,java-junit)
1133 ("java-objenesis" ,java-objenesis)
1134 ("java-mockito-1" ,java-mockito-1)
1135 ("java-hamcrest-core" ,java-hamcrest-core)))
1136 (description "Apache Maven is a software project management and comprehension
1137tool. This package contains a Maven embeddable component, with CLI and
1138logging support.")))