From d459a72a474e6b241c864b8c9390f4c9de18d93e Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sat, 17 Mar 2018 16:34:46 +0100 Subject: [PATCH 12/22] gnu: Add maven-core. * gnu/packages/maven.scm (maven-core): New variable. --- gnu/packages/maven.scm | 66 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm index dff5bd3e4..029c68b38 100644 --- a/gnu/packages/maven.scm +++ b/gnu/packages/maven.scm @@ -752,3 +752,69 @@ so really just plain objects."))) ("java-junit" ,java-junit) ("java-mockito-1" ,java-mockito-1) ("java-commons-jxpath" ,java-commons-jxpath))))) + +(define-public maven-core + (package + (inherit maven-core-bootstrap) + (arguments + (substitute-keyword-arguments (package-arguments maven-core-bootstrap) + ((#:phases phases) + `(modify-phases ,phases + (add-before 'build 'modify-metainf + (lambda _ + (substitute* "build.xml" + (("message=\"\"") "message=\"Implementation-Version: 3.5.3\n\"")) + #t)) + (add-before 'build 'add-maven-files + (lambda _ + (mkdir-p "build/classes/META-INF/maven/org.apache.maven/maven-core") + (copy-file "pom.xml" + "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.xml") + (with-output-to-file "build/classes/META-INF/maven/org.apache.maven/maven-core/pom.properties" + (lambda _ + (format #t "version=~a~% +groupId=org.apache.maven~% +artifactId=maven-core" ,(package-version maven-core-bootstrap)))) + #t)) + (add-after 'build 'generate-metadata + (lambda _ + (define (components file) + (let ((sxml (with-input-from-file file + (lambda _ (xml->sxml (current-input-port) #:trim-whitespace? #t))))) + ;; Select the list of s inside the + ;; and . + (cdr (car (cdr (car (cdr (cdr sxml)))))))) + (use-modules (sxml simple)) + (delete-file "build/classes/META-INF/plexus/components.xml") + (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes") + "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli" + "--source" "build/classes/META-INF/plexus" + "--output" "build/classes/META-INF/plexus/components.t.xml" + "--classes" "build/classes" + "--descriptors" "build/classes") + ;; Now we merge all other components from hand-written xml + (let ((generated-xml (components "build/classes/META-INF/plexus/components.t.xml")) + (components-xml (components "src/main/resources/META-INF/plexus/components.xml")) + (default-bindings-xml (components "src/main/resources/META-INF/plexus/default-bindings.xml")) + (artifact-handlers-xml (components "src/main/resources/META-INF/plexus/artifact-handlers.xml"))) + (with-output-to-file "build/classes/META-INF/plexus/components.xml" + (lambda _ + (display (sxml->string + `(component-set + (components + ,@(append generated-xml components-xml + default-bindings-xml + artifact-handlers-xml)))))))) + #t)) + (add-after 'generate-metadata 'rebuild + (lambda _ + (invoke "ant" "jar") + #t)))))) + (native-inputs + `(("java-plexus-component-metadata" ,java-plexus-component-metadata) + ("java-commons-cli" ,java-commons-cli) + ("java-plexus-cli" ,java-plexus-cli) + ("java-jdom2" ,java-jdom2) + ("java-qdox" ,java-qdox) + ("maven-core-boot" ,maven-core-bootstrap) + ,@(package-native-inputs maven-core-bootstrap))))) -- 2.17.1