WIP: build some maven dependencies, and some maven subprojects

Julien LepillerSat Sep 09 22:47:16+0200 2017

0bb7e92

WIP: build some maven dependencies, and some maven subprojects

maven-generate-component-xml.patch unknown status 1

1+
From 676c4e33be256e4af2e028088dd28ae7be511df3 Mon Sep 17 00:00:00 2001
2+
From: Julien Lepiller <julien@lepiller.eu>
3+
Date: Sat, 9 Sep 2017 20:34:38 +0200
4+
Subject: [PATCH] Add a script to generate component.xml files.
5+
6+
plexus-component-metadata is normally used for this task, but it
7+
depends on maven-core, which depends on maven-model-builder, which needs
8+
plexus-component-metadata. This script is meant to break this dependency
9+
cycle.
10+
---
11+
 components.sh | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12+
 1 file changed, 124 insertions(+)
13+
 create mode 100755 components.sh
14+
15+
diff --git a/components.sh b/components.sh
16+
new file mode 100755
17+
index 0000000..a00b25b
18+
--- /dev/null
19+
+++ b/components.sh
20+
@@ -0,0 +1,124 @@
21+
+## This script generates a rough plexus/components.xml file. It is meant to
22+
+## replace plexus-component-metadata as it eventually has a recursive dependency
23+
+## on itself.
24+
+##
25+
+## This script must be run in the source directory (usually src/main/java).
26+
+
27+
+# Finds the complete name from a class name.
28+
+function find_role() {
29+
+    role=$1
30+
+    # Find role
31+
+    case $role in
32+
+      "ModelBuilder" | "ModelProcessor")
33+
+        role=org.apache.maven.model.building.$role
34+
+        ;;
35+
+      "ModelValidator")
36+
+        role=org.apache.maven.model.validation.$role
37+
+        ;;
38+
+      "ProfileInjector" | "ProfileSelector")
39+
+        role=org.apache.maven.model.profile.$role
40+
+        ;;
41+
+      "ProfileActivator")
42+
+        role=org.apache.maven.model.profile.activation.$role
43+
+        ;;
44+
+      "SuperPomProvider")
45+
+        role=org.apache.maven.model.superpom.$role
46+
+        ;;
47+
+      "ReportConfigurationExpander" | "PluginConfigurationExpander" \
48+
+      | "ReportingConverter" | "LifecycleBindingsInjector")
49+
+        role=org.apache.maven.model.plugin.$role
50+
+        ;;
51+
+      "ModelLocator")
52+
+        role=org.apache.maven.model.locator.$role
53+
+        ;;
54+
+      "ModelPathTranslator" | "PathTranslator" | "UrlNormalizer" | "ModelUrlNormalizer")
55+
+        role=org.apache.maven.model.path.$role
56+
+        ;;
57+
+      "DependencyManagementInjector" | "PluginManagementInjector")
58+
+        role=org.apache.maven.model.management.$role
59+
+        ;;
60+
+      "ModelWriter" | "ModelReader")
61+
+        role=org.apache.maven.model.io.$role
62+
+        ;;
63+
+      "DependencyManagementImporter")
64+
+        role=org.apache.maven.model.composition.$role
65+
+        ;;
66+
+      "ModelNormalizer")
67+
+        role=org.apache.maven.model.normalization.$role
68+
+        ;;
69+
+      "ModelInterpolator")
70+
+        role=org.apache.maven.model.interpolation.$role
71+
+        ;;
72+
+      "InheritanceAssembler")
73+
+        role=org.apache.maven.model.inheritance.$role
74+
+        ;;
75+
+      *)
76+
+        role=$role
77+
+        ;;
78+
+    esac
79+
+    echo $role
80+
+}
81+
+
82+
+function generate_xml() {
83+
+echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
84+
+echo "<component-set>"
85+
+echo "<components>"
86+
+
87+
+for file in `find -name '*.java'`; do
88+
+  annot=`grep "@Component" $file`
89+
+  if [ "$?" == "0" ]; then
90+
+    # We have a component!
91+
+    role=$(echo $annot | sed 's|.*role = \(.*\).class.*|\1|')
92+
+    role_hint=$(echo $annot | sed 's|.*hint = "\(.*\)" .*|\1|')
93+
+    if [ "$role_hint" = "$annot" ]; then
94+
+      role_hint=default
95+
+    fi
96+
+    implem=$(echo $file | sed -e 's|^\./||' -e 's|\.java||' -e 's|/|.|g')
97+
+    role=$(find_role $role)
98+
+
99+
+    echo "<component>"
100+
+    echo "  <role>$role</role>"
101+
+    echo "  <role-hint>$role_hint</role-hint>"
102+
+    echo "  <implementation>$implem</implementation>"
103+
+    echo "  <description />"
104+
+    echo "  <isolated-realm>false</isolated-realm>"
105+
+    echo "  <requirements>"
106+
+    reqn=1
107+
+    cont=true
108+
+    while [ "$cont" = "true" ]; do
109+
+      requirement=$(grep "@Requirement" $file -A1 | head -n ${reqn} | tail -1)
110+
+      ((reqn++))
111+
+      property=$(grep "@Requirement" $file -A1 | head -n ${reqn} | tail -1)
112+
+      if (echo $requirement | grep "@Requirement" >/dev/null); then
113+
+        ((reqn++))
114+
+        ((reqn++))
115+
+        optional=$(echo $requirement | sed 's|.*optional = \(.*\) .*|\1|')
116+
+        req_role=$(echo $requirement | sed 's|.*role = \(.*\).class .*|\1|')
117+
+        if (echo $req_role | grep "@Requirement" >/dev/null); then
118+
+          req_role=$(echo $property | sed 's|.*private \(.*\) .*|\1|')
119+
+        fi
120+
+        req_role=$(find_role $req_role)
121+
+        req_name=$(echo $property | sed 's|[^ ]* [^ ]* \([^ ;]*\).*|\1|')
122+
+        echo "    <requirement>"
123+
+        echo "      <role>$req_role</role>"
124+
+        echo "      <field-name>$req_name</field-name>"
125+
+        if (echo $optional | grep "@Requirement" >/dev/null); then
126+
+          :
127+
+        else
128+
+          echo "      <optional>$optional</optional>"
129+
+        fi
130+
+        echo "    </requirement>"
131+
+      else
132+
+        cont=false
133+
+      fi
134+
+    done
135+
+    echo "  </requirements>"
136+
+    echo "</component>"
137+
+  fi
138+
+done
139+
+
140+
+echo "</components>"
141+
+echo "</component-set>"
142+
+}
143+
+
144+
+(cd $1; generate_xml) > $2
145+
-- 
146+
2.14.1
147+

more/packages/java.scm

51495149
       ("xmlgraphics" ,java-xmlgraphics-commons)
51505150
       ("logging" ,java-commons-logging-minimal)
51515151
       ("fop-util" ,java-fop-util)))))
5152+
5153+
;;
5154+
;;
5155+
;;
5156+
;; let's try to build maven :)
5157+
;; This was mostly adapted from https://gitlab.com/htgoebel/guix/blob/WIP-maven/gnu/packages/java.scm
5158+
;;
5159+
;;
5160+
;;
5161+
5162+
(define* (codehaus-plexus-origin projname version hash
5163+
                                 #:optional (prefix "plexus-"))
5164+
  (let* ((projname (string-append prefix projname))
5165+
         (url (string-append "https://github.com/codehaus-plexus/" projname
5166+
                             "/archive/" projname "-" version ".tar.gz")))
5167+
    (origin
5168+
      (method url-fetch)
5169+
      (uri url)
5170+
      (sha256 (base32 hash)))))
5171+
5172+
(define-public java-geronimo-xbean-reflect
5173+
  (package
5174+
    (name "java-geronimo-xbean-reflect")
5175+
    (version "1807386")
5176+
    (source (origin
5177+
              (method svn-fetch)
5178+
              (uri (svn-reference
5179+
                     ;(url "https://svn.apache.org/repos/asf/geronimo/xbean/trunk/")
5180+
                     (url "https://svn.apache.org/repos/asf/geronimo/xbean/tags/xbean-4.5/")
5181+
                     (revision 1807396)))
5182+
              (sha256
5183+
               (base32
5184+
                "18q3i6jgm6rkw8aysfgihgywrdc5nvijrwnslmi3ww497jvri6ja"))))
5185+
    (build-system ant-build-system)
5186+
    (arguments
5187+
     `(#:jar-name "geronimo-xbean-reflect.jar"
5188+
       #:source-dir "xbean-reflect/src/main/java"
5189+
       #:test-dir "xbean-reflect/src/test"
5190+
       #:jdk ,icedtea-8
5191+
       #:test-exclude (list "**/Abstract*.java" "**/AsmParameterNameLoaderTest.java"
5192+
                            "**/ObjectRecipeTest.java" "**/ParameterNameLoaderTest.java"
5193+
                            "**/RecipeHelperTest.java" "**/XbeanAsmParameterNameLoaderTest.java")
5194+
       #:phases
5195+
       (modify-phases %standard-phases
5196+
         (add-before 'build 'fix-source
5197+
           (lambda _
5198+
             ;; org.apache.xbean.asm6 is actually repackaged java-asm
5199+
             (substitute* "xbean-reflect/src/main/java/org/apache/xbean/recipe/XbeanAsmParameterNameLoader.java"
5200+
               (("org.apache.xbean.asm5") "org.objectweb.asm")))))))
5201+
    (inputs
5202+
     `(("asm" ,java-asm)
5203+
       ("log4j" ,java-log4j-api)
5204+
       ("log4j-1.2" ,java-log4j-1.2-api)
5205+
       ("log4j-core" ,java-log4j-core)
5206+
       ("logging" ,java-commons-logging-minimal)))
5207+
    (native-inputs
5208+
     `(("junit" ,java-junit)))
5209+
    (home-page "")
5210+
    (synopsis "")
5211+
    (description "")
5212+
    (license license:asl2.0)))
5213+
5214+
(define-public java-plexus-io
5215+
  (package
5216+
    (name "java-plexus-io")
5217+
    (version "3.0.0")
5218+
    (source (codehaus-plexus-origin
5219+
             "plexus-io" version
5220+
             "0f2j41kihaymxkpbm55smpxjja235vad8cgz94frfy3ppcp021dw"
5221+
             ""))
5222+
    (build-system ant-build-system)
5223+
    (arguments
5224+
     `(#:jar-name "plexus-io.jar"
5225+
       #:source-dir "src/main/java"
5226+
       #:test-dir "src/test"
5227+
       #:jdk ,icedtea-8
5228+
       #:phases
5229+
       (modify-phases %standard-phases
5230+
         (add-before 'build 'copy-resources
5231+
           (lambda _
5232+
             (mkdir-p "build/classes/META-INF/plexus")
5233+
             (copy-file "src/main/resources/META-INF/plexus/components.xml"
5234+
                        "build/classes/META-INF/plexus/components.xml")
5235+
             #t)))))
5236+
    (inputs
5237+
     `(("utils" ,java-plexus-utils)
5238+
       ("commons-io" ,java-commons-io)
5239+
       ("java-jsr305" ,java-jsr305)))
5240+
    (native-inputs
5241+
     `(("junit" ,java-junit)
5242+
       ("hamcrest" ,java-hamcrest-core)
5243+
       ("guava" ,java-guava)
5244+
       ("classworlds" ,java-plexus-classworlds)
5245+
       ("xbean" ,java-geronimo-xbean-reflect)
5246+
       ("container-default" ,java-plexus-container-default-bootstrap)))
5247+
    (home-page "")
5248+
    (synopsis "")
5249+
    (description "")
5250+
    (license license:asl2.0)))
5251+
5252+
(define-public java-iq80-snappy
5253+
  (package
5254+
    (name "java-iq80-snappy")
5255+
    (version "0.4")
5256+
    (source (origin
5257+
              (method url-fetch)
5258+
              (uri (string-append "https://github.com/dain/snappy/archive/snappy-"
5259+
                                  version ".tar.gz"))
5260+
              (sha256
5261+
               (base32
5262+
                "0rb3zhci7w9wzd65lfnk7p3ip0n6gb58a9qpx8n7r0231gahyamf"))))
5263+
    (build-system ant-build-system)
5264+
    (arguments
5265+
     `(#:jar-name "container-default.jar"
5266+
       #:source-dir "src/main/java"
5267+
       #:test-dir "src/test"
5268+
       #:jdk ,icedtea-8
5269+
       #:test-exclude (list "**/Abstract*.java"
5270+
                            "**/SnappyFramedStreamTest.java"); No runnable method
5271+
       #:phases
5272+
       (modify-phases %standard-phases
5273+
         (replace 'check
5274+
           (lambda _
5275+
             (define (test class)
5276+
               (zero? (system* "java" "-cp" (string-append (getenv "CLASSPATH")
5277+
                                                           ":build/classes"
5278+
                                                           ":build/test-classes")
5279+
                               "-Dtest.resources.dir=src/test/resources"
5280+
                               "org.testng.TestNG" "-testclass"
5281+
                               class)))
5282+
             (system* "ant" "compile-tests")
5283+
             (and
5284+
               (test "org.iq80.snappy.SnappyFramedStreamTest")
5285+
               (test "org.iq80.snappy.SnappyStreamTest"))))
5286+
               ;(test "org.iq80.snappy.SnappyTest"))))
5287+
         (add-before 'build 'remove-dep
5288+
           (lambda _
5289+
             ;; We don't have hadoop
5290+
             (delete-file "src/main/java/org/iq80/snappy/HadoopSnappyCodec.java")
5291+
             (delete-file "src/test/java/org/iq80/snappy/TestHadoopSnappyCodec.java")
5292+
             #t)))))
5293+
    (home-page "https://github.com/dain/snappy")
5294+
    (native-inputs
5295+
     `(("guava" ,java-guava)
5296+
       ("java-snappy" ,java-snappy)
5297+
       ("hamcrest" ,java-hamcrest-core)
5298+
       ("testng" ,java-testng)))
5299+
    (synopsis "")
5300+
    (description "")
5301+
    (license license:asl2.0)))
5302+
5303+
(define-public java-tukaani-xz
5304+
  (package
5305+
    (name "java-tukaani-xz")
5306+
    (version "1.6")
5307+
    (source (origin
5308+
              (method url-fetch)
5309+
              (uri (string-append "https://tukaani.org/xz/xz-java-" version ".zip"))
5310+
              (sha256
5311+
               (base32
5312+
                "1z3p1ri1gvl07inxn0agx44ck8n7wrzfmvkz8nbq3njn8r9wba8x"))))
5313+
    (build-system ant-build-system)
5314+
    (arguments
5315+
     `(#:tests? #f; no tests
5316+
       #:phases
5317+
       (modify-phases %standard-phases
5318+
         (add-after 'unpack 'chdir
5319+
           (lambda _
5320+
             ; The package is not unzipped in a subdirectory
5321+
             (chdir "..")))
5322+
         (replace 'install
5323+
           (lambda* (#:key outputs #:allow-other-keys)
5324+
             ;; Do we want to install *Demo.jar?
5325+
             (install-file "build/jar/xz.jar"
5326+
                           (string-append
5327+
                             (assoc-ref outputs "out")
5328+
                             "/share/java/xz.jar")))))))
5329+
    (native-inputs
5330+
     `(("unzip" ,unzip)))
5331+
    (home-page "https://tukaani.org")
5332+
    (synopsis "")
5333+
    (description "")
5334+
    (license license:public-domain)))
5335+
5336+
(define-public java-plexus-archiver
5337+
  (package
5338+
    (name "java-plexus-archiver")
5339+
    (version "3.5")
5340+
    (source (codehaus-plexus-origin
5341+
             "plexus-archiver" version
5342+
             "0iv1j7khra6icqh3jndng3iipfmkc7l5jq2y802cm8r575v75pyv"
5343+
             ""))
5344+
    (build-system ant-build-system)
5345+
    (arguments
5346+
     `(#:jar-name "container-default.jar"
5347+
       #:source-dir "src/main/java"
5348+
       #:jdk ,icedtea-8
5349+
       #:test-dir "src/test"
5350+
       #:test-exclude (list "**/Abstract*.java" "**/Base*.java")
5351+
       #:phases
5352+
       (modify-phases %standard-phases
5353+
         (add-before 'check 'remove-failing
5354+
           (lambda _
5355+
             ;; Requires an older version of plexus container
5356+
             (delete-file "src/test/java/org/codehaus/plexus/archiver/DuplicateFilesTest.java")))
5357+
         (add-before 'build 'copy-resources
5358+
           (lambda _
5359+
             (mkdir-p "build/classes/META-INF/plexus")
5360+
             (copy-file "src/main/resources/META-INF/plexus/components.xml"
5361+
                        "build/classes/META-INF/plexus/components.xml")
5362+
             #t)))))
5363+
    (inputs
5364+
     `(("utils" ,java-plexus-utils)
5365+
       ("commons-io" ,java-commons-io)
5366+
       ("snappy" ,java-iq80-snappy)
5367+
       ("io" ,java-plexus-io)
5368+
       ("compress" ,java-commons-compress)
5369+
       ("container-default" ,java-plexus-container-default-bootstrap)
5370+
       ("snappy" ,java-snappy)
5371+
       ("java-jsr305" ,java-jsr305)))
5372+
    (native-inputs
5373+
     `(("junit" ,java-junit)
5374+
       ("classworld" ,java-plexus-classworlds)
5375+
       ("xbean" ,java-geronimo-xbean-reflect)
5376+
       ("xz" ,java-tukaani-xz)
5377+
       ("guava" ,java-guava)))
5378+
    (home-page "")
5379+
    (synopsis "")
5380+
    (description "")
5381+
    (license license:asl2.0)))
5382+
5383+
(define-public java-plexus-container-default-bootstrap
5384+
  (package
5385+
    (name "java-plexus-container-default-bootstrap")
5386+
    (version "1.7.1")
5387+
    (source (codehaus-plexus-origin
5388+
             "plexus-containers" version
5389+
             "07l7wfi0kxnabd175yvbkilb26mndnba0a1g0ac1rpfagv3qpnzw"
5390+
             ""))
5391+
    (build-system ant-build-system)
5392+
    (arguments
5393+
     `(#:jar-name "container-default.jar"
5394+
       #:source-dir "plexus-container-default/src/main/java"
5395+
       #:test-dir "plexus-container-default/src/test"
5396+
       #:jdk ,icedtea-8
5397+
       #:tests? #f; requires plexus-archiver, which depends on this package
5398+
       #:phases
5399+
       (modify-phases %standard-phases
5400+
         (add-before 'build 'copy-resources
5401+
           (lambda _
5402+
             (mkdir-p "build/classes/META-INF/plexus")
5403+
             (copy-file "plexus-container-default/src/main/resources/META-INF/plexus/components.xml"
5404+
                        "build/classes/META-INF/plexus/components.xml")
5405+
             #t)))))
5406+
    (inputs
5407+
     `(("worldclass" ,java-plexus-classworlds)
5408+
       ("xbean" ,java-geronimo-xbean-reflect)
5409+
       ("utils" ,java-plexus-utils)
5410+
       ("junit" ,java-junit)
5411+
       ("guava" ,java-guava)))
5412+
    (home-page "")
5413+
    (synopsis "")
5414+
    (description "")
5415+
    (license license:asl2.0)))
5416+
5417+
(define-public java-plexus-container-default
5418+
  (package
5419+
    (inherit java-plexus-container-default-bootstrap)
5420+
    (name "java-plexus-container-default")
5421+
    (arguments
5422+
     `(#:jar-name "container-default.jar"
5423+
       #:source-dir "plexus-container-default/src/main/java"
5424+
       #:test-dir "plexus-container-default/src/test"
5425+
       #:test-exclude (list "**/*Test.java"
5426+
                            "**/ComponentRealmCompositionTest.java")
5427+
       #:jdk ,icedtea-8
5428+
       #:phases
5429+
       (modify-phases %standard-phases
5430+
         (add-before 'build 'copy-resources
5431+
           (lambda _
5432+
             (mkdir-p "build/classes/META-INF/plexus")
5433+
             (copy-file "plexus-container-default/src/main/resources/META-INF/plexus/components.xml"
5434+
                        "build/classes/META-INF/plexus/components.xml")
5435+
             #t))
5436+
         (add-before 'check 'fix-paths
5437+
           (lambda _
5438+
             (substitute* "plexus-container-default/src/test/java/org/codehaus/plexus/component/composition/ComponentRealmCompositionTest.java"
5439+
               (("src/test") "plexus-container-default/src/test")))))))
5440+
    (inputs
5441+
     `(("worldclass" ,java-plexus-classworlds)
5442+
       ("xbean" ,java-geronimo-xbean-reflect)
5443+
       ("utils" ,java-plexus-utils)
5444+
       ("junit" ,java-junit)
5445+
       ("guava" ,java-guava)))
5446+
    (native-inputs
5447+
     `(("archiver" ,java-plexus-archiver)
5448+
       ("hamcrest" ,java-hamcrest-core)))))
5449+
5450+
(define-public java-plexus-component-annotations
5451+
  (package
5452+
    (inherit java-plexus-container-default)
5453+
    (name "java-plexus-component-annotations")
5454+
    (arguments
5455+
     `(#:jar-name "plexus-component-annotations.jar"
5456+
       #:source-dir "plexus-component-annotations/src/main/java"
5457+
       #:tests? #f)); no tests
5458+
    (inputs '())
5459+
    (native-inputs '())))
5460+
5461+
(define-public java-plexus-component-metadata
5462+
  (package
5463+
    (inherit java-plexus-container-default)
5464+
    (name "java-plexus-component-metadata")
5465+
    (arguments
5466+
     `(#:jar-name "plexus-component-metadata.jar"
5467+
       #:source-dir "plexus-component-metadata/src/main/java"
5468+
       #:test-dir "plexus-component-metadata/src/test"
5469+
       #:jdk ,icedtea-8))
5470+
    (inputs
5471+
     `(("container" ,java-plexus-container-default)
5472+
       ("annotations" ,java-plexus-component-annotations)
5473+
       ("utils" ,java-plexus-utils)
5474+
       ("classworlds" ,java-plexus-classworlds)
5475+
       ("cli" ,java-commons-cli)
5476+
       ("qdox" ,java-qdox-1.12); TODO: package latest version
5477+
       ("jdom2" ,java-jdom2)
5478+
       ("asm" ,java-asm)))
5479+
    (native-inputs '())))
5480+
5481+
(define-public java-sisu-build-api
5482+
  (package
5483+
    (name "java-sisu-build-api")
5484+
    (version "0.0.7")
5485+
    (source (origin
5486+
              (method url-fetch)
5487+
              (uri (string-append "https://github.com/sonatype/sisu-build-api/"
5488+
                                  "archive/plexus-build-api-" version ".tar.gz"))
5489+
              (sha256
5490+
               (base32
5491+
                "1c3rrpma3x634xp2rm2p5iskfhzdyc7qfbhjzr70agrl1jwghgy2"))))
5492+
    (build-system ant-build-system)
5493+
    (arguments
5494+
     `(#:jar-name "sisu-build-api.jar"
5495+
       #:source-dir "src/main/java"
5496+
       #:jdk ,icedtea-8
5497+
       #:tests? #f; I??don't know how to run these tests
5498+
       #:phases
5499+
       (modify-phases %standard-phases
5500+
         (add-before 'build 'copy-resources
5501+
           (lambda _
5502+
             (mkdir-p "build/classes/org/sonatype/plexus/build/incremental")
5503+
             (copy-file "src/main/resources/org/sonatype/plexus/build/incremental/version.properties"
5504+
                        "build/classes/org/sonatype/plexus/build/incremental/version.properties")
5505+
             #t))
5506+
         (add-before 'build 'generate-plexus-compontent
5507+
           (lambda _
5508+
             (mkdir-p "build/classes/META-INF/plexus")
5509+
             ;; This file is required for plexus to inject this package.
5510+
             ;; It is absent from the source code, so maybe it is generated?
5511+
             (with-output-to-file "build/classes/META-INF/plexus/components.xml"
5512+
               (lambda _
5513+
                 (display
5514+
                   (string-append
5515+
                     "<component-set>\n"
5516+
                     "  <components>\n"
5517+
                     "    <component>\n"
5518+
                     "      <role>org.sonatype.plexus.build.incremental.BuildContext</role>\n"
5519+
                     "      <role-hint>default</role-hint>\n"
5520+
                     "      <implementation>org.sonatype.plexus.build.incremental.DefaultBuildContext</implementation>\n"
5521+
                     "      <description>Filesystem based non-incremental build context implementation which behaves as if all files\n"
5522+
                     "were just created.</description>\n"
5523+
                     "    </component>\n"
5524+
                     "  </components>\n"
5525+
                     "</component-set>\n")))))))))
5526+
    (inputs
5527+
     `(("plexus-utils" ,java-plexus-utils)
5528+
       ("plexus-container-default" ,java-plexus-container-default)))
5529+
    (home-page "")
5530+
    (synopsis "")
5531+
    (description "")
5532+
    (license license:asl2.0)))
5533+
5534+
(define-public java-plexus-compiler-api
5535+
  (package
5536+
    (name "java-plexus-compiler-api")
5537+
    (version "2.8.2")
5538+
    (source (codehaus-plexus-origin
5539+
             "plexus-compiler" version
5540+
             "13lxk1yg8fzv4ihby1jmfjda60dkxx4rg89k9i6glddd78q1xl4h"
5541+
             ""))
5542+
    (build-system ant-build-system)
5543+
    (arguments
5544+
     `(#:jar-name "plexus-compiler-api.jar"
5545+
       #:source-dir "plexus-compiler-api/src/main/java"
5546+
       #:jdk ,icedtea-8
5547+
       #:test-dir "plexus-compiler-api/src/test"))
5548+
    (inputs
5549+
     `(("container" ,java-plexus-container-default)
5550+
       ("util" ,java-plexus-utils)))
5551+
    (native-inputs
5552+
     `(("junit" ,java-junit)))
5553+
    (home-page "")
5554+
    (synopsis "")
5555+
    (description "")
5556+
    (license license:asl2.0)))
5557+
5558+
(define-public java-plexus-compiler-javac
5559+
  (package
5560+
    (inherit java-plexus-compiler-api)
5561+
    (name "java-plexus-compiler-javac")
5562+
    (arguments
5563+
     `(#:jar-name "plexus-compiler-javac.jar"
5564+
       #:source-dir "plexus-compilers/plexus-compiler-javac/src/main/java"
5565+
       #:jdk ,icedtea-8
5566+
       #:tests? #f; depends on compiler-test -> maven-core -> ... -> this package.
5567+
       #:test-dir "plexus-compilers/plexus-compiler-javac/src/test"))
5568+
    (inputs
5569+
     `(("api" ,java-plexus-compiler-api)
5570+
       ("utils" ,java-plexus-utils)
5571+
       ("logging" ,java-plexus-container-default)))
5572+
    (native-inputs
5573+
     `(("junit" ,java-junit)))))
5574+
5575+
(define-public java-modello-core
5576+
  (package
5577+
    (name "java-modello-core")
5578+
    (version "1.9.1")
5579+
    (source (codehaus-plexus-origin
5580+
             "modello" version
5581+
             "1nqa1arvyc84i8wn3vk08k46vf8bpqqnf5a6szdj2lc3s1yamlv8"
5582+
             "")) ;; no prefix
5583+
    (build-system ant-build-system)
5584+
    (arguments
5585+
     `(#:jar-name "modello-core.jar"
5586+
       #:source-dir "modello-core/src/main/java"
5587+
       #:test-dir "modello-core/src/test"
5588+
       #:main-class "org.codehaus.modello.ModelloCli"
5589+
       #:jdk ,icedtea-8
5590+
       #:phases
5591+
       (modify-phases %standard-phases
5592+
         (add-before 'build 'copy-resources
5593+
           (lambda _
5594+
             (mkdir-p "build/classes/META-INF/plexus")
5595+
             (copy-file "modello-core/src/main/resources/META-INF/plexus/components.xml"
5596+
                        "build/classes/META-INF/plexus/components.xml")
5597+
             #t))
5598+
         (add-before 'check 'fix-tests
5599+
           (lambda _
5600+
             (substitute* '("modello-core/src/test/java/org/codehaus/modello/core/DefaultModelloCoreTest.java"
5601+
                            "modello-core/src/test/java/org/codehaus/modello/core/io/ModelReaderTest.java")
5602+
               (("src/test") "modello-core/src/test")))))))
5603+
    (inputs
5604+
     `(("plexus-utils" ,java-plexus-utils)
5605+
       ("container" ,java-plexus-container-default-bootstrap)
5606+
       ("sisu" ,java-sisu-build-api)))
5607+
    (native-inputs
5608+
     `(("junit" ,java-junit)
5609+
       ("classworlds" ,java-plexus-classworlds)
5610+
       ("xbean" ,java-geronimo-xbean-reflect)
5611+
       ("guava" ,java-guava)))
5612+
    (home-page "http://codehaus-plexus.github.io/modello/")
5613+
    (synopsis "")
5614+
    (description "")
5615+
    (license license:asl2.0)))
5616+
5617+
(define-public java-modello-plugins-java
5618+
  (package
5619+
    (inherit java-modello-core)
5620+
    (name "java-modello-plugins-java")
5621+
    (arguments
5622+
     `(#:jar-name "modello-plugins-java.jar"
5623+
       #:source-dir "modello-plugins/modello-plugin-java/src/main/java"
5624+
       #:test-dir "modello-plugins/modello-plugin-java/src/test"
5625+
       #:jdk ,icedtea-8
5626+
       #:tests? #f; requires maven-model, which depends on this package
5627+
       #:phases
5628+
       (modify-phases %standard-phases
5629+
         (add-before 'build 'copy-resources
5630+
           (lambda _
5631+
             (mkdir-p "build/classes")
5632+
             (copy-recursively "modello-plugins/modello-plugin-java/src/main/resources"
5633+
                               "build/classes")
5634+
             #t)))))
5635+
    (inputs
5636+
     `(("core" ,java-modello-core)
5637+
       ,@(package-inputs java-modello-core)))))
5638+
5639+
(define-public java-modello-plugins-xml
5640+
  (package
5641+
    (inherit java-modello-core)
5642+
    (name "java-modello-plugins-xml")
5643+
    (arguments
5644+
     `(#:jar-name "modello-plugins-xml.jar"
5645+
       #:source-dir "modello-plugins/modello-plugin-xml/src/main/java"
5646+
       #:test-dir "modello-plugins/modello-plugin-xml/src/test"
5647+
       #:jdk ,icedtea-8
5648+
       #:phases
5649+
       (modify-phases %standard-phases
5650+
         (add-before 'build 'copy-resources
5651+
           (lambda _
5652+
             (mkdir-p "build/classes")
5653+
             (copy-recursively "modello-plugins/modello-plugin-xml/src/main/resources"
5654+
                               "build/classes")
5655+
             #t))
5656+
         (add-before 'check 'fix-paths
5657+
           (lambda _
5658+
             (substitute* "modello-plugins/modello-plugin-xml/src/test/java/org/codehaus/modello/plugins/xml/XmlModelloPluginTest.java"
5659+
               (("src/test") "modello-plugins/modello-plugin-xml/src/test")))))))
5660+
    (inputs
5661+
     `(("core" ,java-modello-core)
5662+
       ("java" ,java-modello-plugins-java)
5663+
       ,@(package-inputs java-modello-core)))))
5664+
5665+
(define-public java-modello-test
5666+
  (package
5667+
    (inherit java-modello-core)
5668+
    (name "java-modello-test")
5669+
    (arguments
5670+
     `(#:jar-name "modello-test.jar"
5671+
       #:source-dir "modello-test/src/main/java"
5672+
       #:tests? #f; no tests
5673+
       #:jdk ,icedtea-8))
5674+
    (inputs
5675+
     `(("utils" ,java-plexus-utils)
5676+
       ("compiler-api" ,java-plexus-compiler-api)
5677+
       ("compiler-javac" ,java-plexus-compiler-javac)
5678+
       ("container" ,java-plexus-container-default)))))
5679+
5680+
(define-public java-modello-plugins-xpp3
5681+
  (package
5682+
    (inherit java-modello-core)
5683+
    (name "java-modello-plugins-xpp3")
5684+
    (arguments
5685+
     `(#:jar-name "modello-plugins-xpp3.jar"
5686+
       #:source-dir "modello-plugins/modello-plugin-xpp3/src/main/java"
5687+
       #:test-dir "modello-plugins/modello-plugin-xpp3/src/test"
5688+
       #:tests? #f; I can find some of its dependencies, for instance org.codehaus.modello.test.features.io.xpp3.ModelloFeaturesTestXpp3Reader
5689+
       #:jdk ,icedtea-8
5690+
       #:phases
5691+
       (modify-phases %standard-phases
5692+
         (add-before 'build 'copy-resources
5693+
           (lambda _
5694+
             (mkdir-p "build/classes")
5695+
             (copy-recursively "modello-plugins/modello-plugin-xpp3/src/main/resources"
5696+
                               "build/classes")
5697+
             #t)))))
5698+
    (inputs
5699+
     `(("core" ,java-modello-core)
5700+
       ("java" ,java-modello-plugins-java)
5701+
       ("xml" ,java-modello-plugins-xml)
5702+
       ,@(package-inputs java-modello-core)))
5703+
    (native-inputs
5704+
     `(("xmlunit" ,java-xmlunit)
5705+
       ("test" ,java-modello-test)
5706+
       ,@(package-native-inputs java-modello-core)))))
5707+
5708+
(define-public java-plexus-cipher
5709+
  (package
5710+
    (name "java-plexus-cipher")
5711+
    (version "1.7")
5712+
    (source (codehaus-plexus-origin
5713+
              "cipher" version
5714+
              "1j3r8xzlxlk340snkjp6lk2ilkxlkn8qavsfiq01f43xmvv8ymk3"))
5715+
    (build-system ant-build-system)
5716+
    (arguments
5717+
     `(#:jar-name "plexus-cipher.jar"
5718+
       #:source-dir "src/main/java"
5719+
       #:jdk ,icedtea-8
5720+
       #:tests? #f; TODO: org.sonatype.guice.bean.containers.InjectedTestCase
5721+
       #:phases
5722+
       (modify-phases %standard-phases
5723+
         (add-before 'build 'copy-resources
5724+
           (lambda _
5725+
             (copy-recursively "src/main/resources" "build/classes"))))))
5726+
    (inputs
5727+
     `(("cdi-api" ,java-cdi-api)
5728+
       ("inject" ,java-javax-inject)))
5729+
    (home-page "http://codehaus-plexus.github.io/plexus-cipher/")
5730+
    (synopsis "Encryption/decryption Component")
5731+
    (description "")
5732+
    (license license:asl2.0)))
5733+
5734+
(define-public java-plexus-sec-dispatcher
5735+
  (package
5736+
    (name "java-plexus-sec-dispatcher")
5737+
    (version "1.4") ;; Newest release listed at the Maven Central Repository.
5738+
    (source (origin
5739+
              ;; This project doesn't tag releases or publish tarballs, so we take
5740+
              ;; the "prepare release plexus-sec-dispatcher-1.4" git commit.
5741+
        (method url-fetch)
5742+
        (uri (string-append "https://github.com/sonatype/plexus-sec-dispatcher/"
5743+
                            "archive/" "7db8f88048" ".tar.gz"))
5744+
        (sha256
5745+
         (base32
5746+
          "1nvlwj2090nn7f0144pyamp3lfygahlcp09dx0faqgla57lr11hj"))
5747+
        (file-name (string-append name "-" version ".tar.gz"))))
5748+
    (arguments
5749+
     `(#:jar-name "plexus-sec-dispatcher.jar"
5750+
       #:source-dir "src/main/java"
5751+
       #:jdk ,icedtea-8
5752+
       #:phases
5753+
       (modify-phases %standard-phases
5754+
         (add-before 'build 'generate-models
5755+
           (lambda* (#:key inputs #:allow-other-keys)
5756+
             (define (modello-single-mode file version mode)
5757+
               (zero? (system* "java"
5758+
                               "org.codehaus.modello.ModelloCli"
5759+
                               file mode "src/main/java" version
5760+
                               "false" "true")))
5761+
             (let ((file "src/main/mdo/settings-security.mdo"))
5762+
               (and
5763+
               (modello-single-mode file "1.0.0" "java")
5764+
               (modello-single-mode file "1.0.0" "xpp3-reader")
5765+
               (modello-single-mode file "1.0.0" "xpp3-writer")))))
5766+
         (add-before 'check 'fix-paths
5767+
           (lambda _
5768+
             (mkdir-p "target")
5769+
             (copy-file "src/test/resources/test-sec.xml"
5770+
                        "target/sec.xml"))))))
5771+
    (inputs
5772+
     `(("cipher" ,java-plexus-cipher)))
5773+
    (native-inputs
5774+
     `(("modello" ,java-modello-core)
5775+
       ;; for modello:
5776+
       ("container" ,java-plexus-container-default)
5777+
       ("classworlds" ,java-plexus-classworlds)
5778+
       ("utils" ,java-plexus-utils)
5779+
       ("guava" ,java-guava)
5780+
       ("xbean" ,java-geronimo-xbean-reflect)
5781+
       ("build-api" ,java-sisu-build-api)
5782+
       ;; modello plugins:
5783+
       ("java" ,java-modello-plugins-java)
5784+
       ("xml" ,java-modello-plugins-xml)
5785+
       ("xpp3" ,java-modello-plugins-xpp3)
5786+
       ;; for tests
5787+
       ("junit" ,java-junit)))
5788+
    (build-system ant-build-system)
5789+
    (home-page "http://spice.sonatype.org/plexus-sec-dispatcher/")
5790+
    (synopsis "Plexus Security Dispatcher Component")
5791+
    (description "")
5792+
    (license license:asl2.0)))
5793+
5794+
(define-public java-eclipse-aether-api
5795+
  (package
5796+
    (name "java-eclipse-aether-api")
5797+
    (version "1.0.2")
5798+
    (source (origin
5799+
              (method url-fetch)
5800+
              (uri (string-append "https://github.com/eclipse/aether-core/"
5801+
                                  "archive/aether-1.0.2.v20150114.tar.gz"))
5802+
              (sha256
5803+
               (base32
5804+
                "192x32hlyxs4p6xzaz1r1jrsqqr56akcl0lncq3av1zpbil6kqhh"))))
5805+
    (build-system ant-build-system)
5806+
    (arguments
5807+
     `(#:jar-name "eclipse-aether-api.jar"
5808+
       #:source-dir "aether-api/src/main/java"
5809+
       #:test-dir "aether-api/src/test"))
5810+
    (native-inputs
5811+
     `(("junit" ,java-junit)
5812+
       ("hamcrest" ,java-hamcrest-core)))
5813+
    (home-page "https://projects.eclipse.org/projects/technology.aether")
5814+
    (synopsis "")
5815+
    (description "")
5816+
    (license license:asl2.0)))
5817+
5818+
(define-public maven
5819+
  (package
5820+
    (name "maven")
5821+
    (version "3.3.9")
5822+
    (source (origin 
5823+
              (method url-fetch)
5824+
              (uri (string-append "https://archive.apache.org/dist/maven/"
5825+
                                  "maven-3/" version "/source/"
5826+
                                  "apache-maven-" version "-src.tar.gz"))
5827+
              (sha256 (base32 "1g0iavyb34kvs3jfrx2hfnr8lr11m39sj852cy7528wva1glfl4i"))
5828+
              (patches
5829+
                (search-patches "maven-generate-component-xml.patch"))))
5830+
    (build-system ant-build-system)
5831+
    (arguments
5832+
     `(#:jar-name "maven.jar"
5833+
       #:source-dir "apache-maven"))
5834+
    (home-page "")
5835+
    (synopsis "")
5836+
    (description "")
5837+
    (license license:asl2.0)))
5838+
5839+
(define-public maven-artifact
5840+
  (package
5841+
    (inherit maven)
5842+
    (name "maven-artifact")
5843+
    (arguments
5844+
     `(#:jar-name "maven-artifact.jar"
5845+
       #:source-dir "maven-artifact/src/main/java"
5846+
       #:test-dir "maven-artifact/src/test"
5847+
       #:main-class "org.apache.maven.artifact.versioning.ComparableVersion"))
5848+
    (inputs
5849+
     `(("java-plexus-utils" ,java-plexus-utils)
5850+
       ("java-commons-lang3" ,java-commons-lang3)))
5851+
    (native-inputs
5852+
     `(("junit" ,java-junit)))))
5853+
5854+
(define-public maven-model
5855+
  (package
5856+
    (inherit maven)
5857+
    (name "maven-model")
5858+
    (arguments
5859+
     `(#:jar-name "maven-model.jar"
5860+
       #:source-dir "maven-model/src/main/java"
5861+
       #:test-dir "maven-model/src/test"
5862+
       #:jdk ,icedtea-8
5863+
       #:phases
5864+
       (modify-phases %standard-phases
5865+
         (add-before 'build 'generate-models
5866+
           (lambda* (#:key inputs #:allow-other-keys)
5867+
             (define (modello-single-mode file version mode)
5868+
               (zero? (system* "java"
5869+
                               "org.codehaus.modello.ModelloCli"
5870+
                               file mode "maven-model/src/main/java" version
5871+
                               "false" "true")))
5872+
             (let ((file "maven-model/src/main/mdo/maven.mdo"))
5873+
               (and
5874+
               (modello-single-mode file "4.0.0" "java")
5875+
               (modello-single-mode file "4.0.0" "xpp3-reader")
5876+
               (modello-single-mode file "4.0.0" "xpp3-writer")
5877+
               (modello-single-mode file "4.0.0" "xpp3-extended-reader"))))))))
5878+
    (inputs
5879+
     `(("lang3" ,java-commons-lang3)
5880+
       ("utils" ,java-plexus-utils)))
5881+
    (native-inputs
5882+
     `(("modello" ,java-modello-core)
5883+
       ;; for modello:
5884+
       ("container" ,java-plexus-container-default)
5885+
       ("classworlds" ,java-plexus-classworlds)
5886+
       ("guava" ,java-guava)
5887+
       ("xbean" ,java-geronimo-xbean-reflect)
5888+
       ("build-api" ,java-sisu-build-api)
5889+
       ;; modello plugins:
5890+
       ("java" ,java-modello-plugins-java)
5891+
       ("xml" ,java-modello-plugins-xml)
5892+
       ("xpp3" ,java-modello-plugins-xpp3)
5893+
       ;; for tests
5894+
       ("junit" ,java-junit)))))
5895+
5896+
(define-public maven-settings
5897+
  (package
5898+
    (inherit maven)
5899+
    (name "maven-settings")
5900+
    (arguments
5901+
     `(#:jar-name "maven-settings.jar"
5902+
       #:source-dir "maven-settings/src/main/java"
5903+
       #:jdk ,icedtea-8
5904+
       #:tests? #f; no tests
5905+
       #:phases
5906+
       (modify-phases %standard-phases
5907+
         (add-before 'build 'generate-models
5908+
           (lambda* (#:key inputs #:allow-other-keys)
5909+
             (define (modello-single-mode file version mode)
5910+
               (zero? (system* "java"
5911+
                               "org.codehaus.modello.ModelloCli"
5912+
                               file mode "maven-settings/src/main/java" version
5913+
                               "false" "true")))
5914+
             (let ((file "maven-settings/src/main/mdo/settings.mdo"))
5915+
               (and
5916+
                 (modello-single-mode file "1.1.0" "java")
5917+
                 (modello-single-mode file "1.1.0" "xpp3-reader")
5918+
                 (modello-single-mode file "1.1.0" "xpp3-writer"))))))))
5919+
    (native-inputs
5920+
     `(("modello" ,java-modello-core)
5921+
       ;; for modello:
5922+
       ("container" ,java-plexus-container-default)
5923+
       ("classworlds" ,java-plexus-classworlds)
5924+
       ("utils" ,java-plexus-utils)
5925+
       ("guava" ,java-guava)
5926+
       ("xbean" ,java-geronimo-xbean-reflect)
5927+
       ("build-api" ,java-sisu-build-api)
5928+
       ;; modello plugins:
5929+
       ("java" ,java-modello-plugins-java)
5930+
       ("xml" ,java-modello-plugins-xml)
5931+
       ("xpp3" ,java-modello-plugins-xpp3)))))
5932+
5933+
(define-public maven-builder-support
5934+
  (package
5935+
    (inherit maven)
5936+
    (name "maven-builder-support")
5937+
    (arguments
5938+
     `(#:jar-name "maven-builder-support.jar"
5939+
       #:source-dir "maven-builder-support/src/main/java"
5940+
       #:jdk ,icedtea-8
5941+
       #:test-dir "maven-builder-support/src/test"
5942+
       #:phases
5943+
       (modify-phases %standard-phases
5944+
         (add-before 'check 'fix-paths
5945+
           (lambda _
5946+
             (substitute* '("maven-builder-support/src/test/java/org/apache/maven/building/FileSourceTest.java"
5947+
                            "maven-builder-support/src/test/java/org/apache/maven/building/UrlSourceTest.java")
5948+
               (("target/test-classes") "maven-builder-support/src/test/resources"))
5949+
             #t)))))
5950+
    (inputs
5951+
     `(("utils" ,java-plexus-utils)
5952+
       ("lang3" ,java-commons-lang3)))
5953+
    (native-inputs
5954+
     `(("junit" ,java-junit)
5955+
       ("hamcrest" ,java-hamcrest-core)))))
5956+
5957+
(define-public maven-settings-builder
5958+
  (package
5959+
    (inherit maven)
5960+
    (name "maven-settings-builder")
5961+
    (arguments
5962+
     `(#:jar-name "maven-settings-builder.jar"
5963+
       #:source-dir "maven-settings-builder/src/main/java"
5964+
       #:jdk ,icedtea-8
5965+
       #:test-dir "maven-settings-builder/src/test"))
5966+
    (inputs
5967+
     `(("utils" ,java-plexus-utils)
5968+
       ("annotations" ,java-plexus-component-annotations)
5969+
       ("interpolation" ,java-plexus-interpolation)
5970+
       ("sec-dispatcher" ,java-plexus-sec-dispatcher)
5971+
       ("support" ,maven-builder-support)
5972+
       ("settings" ,maven-settings)
5973+
       ("lang3" ,java-commons-lang3)))
5974+
    (native-inputs
5975+
     `(("junit" ,java-junit)))))
5976+
5977+
(define-public maven-plugin-lifecycle
5978+
  (package
5979+
    (inherit maven)
5980+
    (name "maven-plugin-api")
5981+
    (arguments
5982+
     `(#:jar-name "maven-plugin-api.jar"
5983+
       #:source-dir "maven-plugin-api/src/main/java"
5984+
       #:jdk ,icedtea-8
5985+
       #:test-dir "maven-plugin-api/test"))
5986+
    (inputs
5987+
     `(("artifact" ,maven-artifact)
5988+
       ("container" ,java-plexus-container-default)
5989+
       ("utils" ,java-plexus-utils)
5990+
       ("classworlds" ,java-plexus-classworlds)))
5991+
    (native-inputs '())))
5992+
5993+
(define-public maven-plugin-api
5994+
  (package
5995+
    (inherit maven)
5996+
    (name "maven-plugin-api")
5997+
    (arguments
5998+
     `(#:jar-name "maven-plugin-api.jar"
5999+
       #:source-dir "maven-plugin-api/src/main/java"
6000+
       #:jdk ,icedtea-8
6001+
       #:test-dir "maven-plugin-api/test"))
6002+
    (inputs
6003+
     `(("artifact" ,maven-artifact)
6004+
       ("container" ,java-plexus-container-default)
6005+
       ("utils" ,java-plexus-utils)))
6006+
    (native-inputs '())))
6007+
6008+
(define-public maven-model-builder
6009+
  (package
6010+
    (inherit maven)
6011+
    (name "maven-model-builder")
6012+
    (arguments
6013+
     `(#:jar-name "maven-model-builder.jar"
6014+
       #:source-dir "maven-model-builder/src/main/java"
6015+
       #:jdk ,icedtea-8
6016+
       #:test-dir "maven-model-builder/src/test"
6017+
       #:phases
6018+
       (modify-phases %standard-phases
6019+
         (add-before 'build 'copy-resources
6020+
           (lambda _
6021+
             (copy-recursively "maven-model-builder/src/main/resources"
6022+
                               "build/classes")))
6023+
         (add-before 'build 'generate-components.xml
6024+
           (lambda _
6025+
             (mkdir-p "build/classes/META-INF/plexus")
6026+
             (chmod "components.sh" #o755)
6027+
             (zero? (system* "./components.sh" "maven-model-builder/src/main/java"
6028+
                             "build/classes/META-INF/plexus/components.xml"))))
6029+
         (add-before 'check 'fix-paths
6030+
           (lambda _
6031+
             (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
6032+
               (("src/test") "maven-model-builder/src/test"))
6033+
             #t)))))
6034+
    (inputs
6035+
     `(("model" ,maven-model)
6036+
       ("artifact" ,maven-artifact)
6037+
       ("support" ,maven-builder-support)
6038+
       ("annotations" ,java-plexus-component-annotations)
6039+
       ("utils" ,java-plexus-utils)
6040+
       ("interpolation" ,java-plexus-interpolation)
6041+
       ("lang3" ,java-commons-lang3)
6042+
       ("guava" ,java-guava)))
6043+
    (native-inputs
6044+
     `(("junit" ,java-junit)
6045+
       ("hamcrest" ,java-hamcrest-core)
6046+
       ("container" ,java-plexus-container-default)
6047+
       ("xmlunit" ,java-xmlunit)
6048+
       ("xmlunit" ,java-xmlunit-legacy)
6049+
       ("xbean" ,java-geronimo-xbean-reflect)
6050+
       ("classworlds" ,java-plexus-classworlds)))))
6051+
6052+
(define-public maven-core
6053+
  (package
6054+
    (inherit maven)
6055+
    (name "maven-core")
6056+
    (arguments
6057+
     `(#:jar-name "maven-core.jar"
6058+
       #:source-dir "maven-core/src/main/java"
6059+
       #:jdk ,icedtea-8
6060+
       #:test-dir "maven-core/src/test"
6061+
       #:phases
6062+
       (modify-phases %standard-phases
6063+
         (add-before 'build 'generate-models
6064+
           (lambda* (#:key inputs #:allow-other-keys)
6065+
             (define (modello-single-mode file version mode)
6066+
               (zero? (system* "java"
6067+
                               "org.codehaus.modello.ModelloCli"
6068+
                               file mode "maven-core/src/main/java" version
6069+
                               "false" "true")))
6070+
             (let ((file "maven-core/src/main/mdo/toolchains.mdo"))
6071+
               (and
6072+
                 (modello-single-mode file "1.1.0" "java")
6073+
                 (modello-single-mode file "1.1.0" "xpp3-reader")
6074+
                 (modello-single-mode file "1.1.0" "xpp3-writer"))))))))
6075+
    (inputs
6076+
     `(("artifact" ,maven-artifact)
6077+
       ("model" ,maven-model)
6078+
       ("model-builder" ,maven-model-builder)
6079+
       ("settings" ,maven-settings)
6080+
       ("settings-builder" ,maven-settings-builder)
6081+
       ("container" ,java-plexus-container-default)
6082+
       ("annotations" ,java-plexus-component-annotations)
6083+
       ("utils" ,java-plexus-utils)
6084+
       ("lang3" ,java-commons-lang3)
6085+
       ("guava" ,java-guava)
6086+
       ("aether" ,java-eclipse-aether-api)
6087+
       ("java-javax-inject" ,java-javax-inject)
6088+
       ("classworld" ,java-plexus-classworlds)))
6089+
    (native-inputs
6090+
     `(("modello" ,java-modello-core)
6091+
       ("classworlds" ,java-plexus-classworlds)
6092+
       ("xbean" ,java-geronimo-xbean-reflect)
6093+
       ("build-api" ,java-sisu-build-api)
6094+
       ("java" ,java-modello-plugins-java)
6095+
       ("xml" ,java-modello-plugins-xml)
6096+
       ("xpp3" ,java-modello-plugins-xpp3)))))