gnu: python-deepmerge: Use pyproject-build-system.
[jackhill/guix/guix.git] / gnu / packages / maven.scm
index 5e99a4a..b7794c4 100644 (file)
@@ -3,6 +3,7 @@
 ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,6 +27,7 @@
   #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system ant)
+  #:use-module (guix gexp)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages compression)
@@ -1117,13 +1119,13 @@ gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
 (define maven-pom
   (package
     (name "maven-pom")
-    (version "3.8.4")
+    (version "3.8.6")
     (source (origin
               (method url-fetch)
               (uri (string-append "mirror://apache/maven/"
                                   "maven-3/" version "/source/"
                                   "apache-maven-" version "-src.tar.gz"))
-              (sha256 (base32 "16xbhkhhp05gskgbhrf1ia8riivvkhpk822n9xgnad61f9hzp2r9"))
+              (sha256 (base32 "0jszmcaxp597a62ajrc478jxix1qmw4pknhiygsbjdy3kccc7gvj"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -1197,7 +1199,7 @@ gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
          (replace 'install
            (install-pom-file "pom.xml")))))
     (propagated-inputs
-     `(("maven-parent-pom-34" ,maven-parent-pom-34)))
+     (list maven-parent-pom-35))
     (home-page "https://maven.apache.org/")
     (synopsis "Build system")
     (description "Apache Maven is a software project management and comprehension
@@ -1389,29 +1391,29 @@ inheritance, interpolation, @dots{}")))
     (name "maven-model-builder")
     (arguments
      `(#:jar-name "maven-model-builder.jar"
-       #:source-dir "maven-model-builder/src/main/java"
+       #:source-dir "src/main/java"
        #:jdk ,icedtea-8
-       #:test-dir "maven-model-builder/src/test"
+       #:test-dir "src/test"
        #:phases
        (modify-phases %standard-phases
+         (add-before 'configure 'chdir
+           (lambda _
+             ;; Required for tests that rely on the package's default
+             ;; locations, that reference ${basedir}/src/test.
+             (chdir "maven-model-builder")))
          (add-before 'build 'copy-resources
            (lambda _
-             (copy-recursively "maven-model-builder/src/main/resources"
+             (copy-recursively "src/main/resources"
                                "build/classes")
              #t))
          (add-before 'build 'generate-sisu-named
            (lambda _
              (mkdir-p "build/classes/META-INF/sisu")
-             (chmod "sisu.sh" #o755)
-             (invoke "./sisu.sh" "maven-model-builder/src/main/java"
+             (chmod "../sisu.sh" #o755)
+             (invoke "../sisu.sh" "src/main/java"
                      "build/classes/META-INF/sisu/javax.inject.Named")))
-         (add-before 'check 'fix-paths
-           (lambda _
-             (substitute* (find-files "maven-model-builder/src/test/java" ".*.java")
-               (("src/test") "maven-model-builder/src/test"))
-             #t))
          (replace 'install
-           (install-from-pom "maven-model-builder/pom.xml")))))
+           (install-from-pom "pom.xml")))))
     (propagated-inputs
      (list java-plexus-interpolation
            java-plexus-utils
@@ -1779,31 +1781,33 @@ artifactId=maven-core" ,(package-version maven-core-bootstrap))))
     (arguments
      `(#:jar-name "maven-slf4j-provider.jar"
        #:source-dir "maven-slf4j-provider/src/main/java"
-       #:tests? #f; no tests
-       #:phases
-       (modify-phases %standard-phases
-         (add-after 'unpack 'unpack-slf4j
-           (lambda* (#:key inputs #:allow-other-keys)
-             (mkdir-p "generated-sources")
-             (with-directory-excursion "generated-sources"
-               (invoke "tar" "xf" (assoc-ref inputs "java-slf4j-simple-source"))
-               (for-each delete-file (find-files "." "StaticLoggerBinder.java")))
-             (for-each
-               (lambda (simple)
-                 (for-each
-                   (lambda (java)
-                     (copy-file java
-                                (string-append
-                                  "maven-slf4j-provider/src/main/java/org/slf4j/impl/"
-                                  (basename java))))
-                   (find-files (string-append simple "/src/main/java/") "\\.java$")))
-               (find-files "generated-sources" "slf4j-simple" #:directories? #t))))
-         (replace 'install
-           (install-from-pom "maven-slf4j-provider/pom.xml")))))
-    (inputs
-     `(("java-slf4j-api" ,java-slf4j-api)
-       ("java-slf4j-simple-source" ,(package-source java-slf4j-simple))
-       ("maven-shared-utils" ,maven-shared-utils)))
+       #:tests? #f ;no tests
+       #:phases (modify-phases %standard-phases
+                  (add-after 'unpack 'unpack-slf4j
+                    (lambda* (#:key inputs #:allow-other-keys)
+                      (mkdir-p "generated-sources")
+                      (copy-recursively (assoc-ref inputs
+                                                   "java-slf4j-simple-source")
+                                        "generated-sources")
+                      (with-directory-excursion "generated-sources"
+                        (for-each delete-file
+                                  (find-files "." "StaticLoggerBinder.java")))
+                      (for-each (lambda (simple)
+                                  (for-each (lambda (java)
+                                              (copy-file java
+                                                         (string-append
+                                                          "maven-slf4j-provider/src/main/java/org/slf4j/impl/"
+                                                          (basename java))))
+                                            (find-files (string-append simple
+                                                         "/src/main/java/")
+                                                        "\\.java$")))
+                                (find-files "generated-sources" "slf4j-simple"
+                                            #:directories? #t))))
+                  (replace 'install
+                    (install-from-pom "maven-slf4j-provider/pom.xml")))))
+    (inputs `(("java-slf4j-api" ,java-slf4j-api)
+              ("java-slf4j-simple-source" ,(package-source java-slf4j-simple))
+              ("maven-shared-utils" ,maven-shared-utils)))
     (native-inputs (list unzip))))
 
 (define-public maven-embedder
@@ -2403,12 +2407,12 @@ reporting or the build process.")))
             (add-before 'build 'generate-components.xml
               (lambda _
                 (mkdir-p "build/classes/META-INF/plexus")
-                (chmod "components.sh" #o755)
-                (invoke "./components.sh" "maven-model-builder/src/main/java"
+                (chmod "../components.sh" #o755)
+                (invoke "../components.sh" "src/main/java"
                         "build/classes/META-INF/plexus/components.xml")))
             (add-before 'check 'remove-failing-test
               (lambda _
-                (delete-file "maven-model-builder/src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
+                (delete-file "src/test/java/org/apache/maven/model/interpolation/StringSearchModelInterpolatorTest.java")))))))
     (propagated-inputs
      `(("java-plexus-component-annotations" ,java-plexus-component-annotations)
        ,@(filter
@@ -3011,6 +3015,50 @@ Maven project dependencies.")
            maven-plugin-annotations
            maven-enforcer-parent-pom))))
 
+(define-public maven-sisu-plugin
+  (package
+    (name "maven-sisu-plugin")
+    (version "0.3.5")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/eclipse/sisu.mojos/")
+                    (commit (string-append "releases/" version))))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "00hb7v6hz8jg0mgkj3cl0nmqz49za4k2a0rbjr4gdhy2m7f34sq3"))))
+    (build-system ant-build-system)
+    (arguments
+     (list #:jar-name "maven-sisu-plugin.jar"
+           #:source-dir "src"
+           #:tests? #f ;no tests
+           #:phases #~(modify-phases %standard-phases
+                        (add-before 'build 'generate-plugin.xml
+                          (generate-plugin.xml "pom.xml" "sisu"
+                           "src/main/java/org/eclipse/sisu/mojos/"
+                           (list (list "IndexMojo.java")
+                                 (list "MainIndexMojo.java")
+                                 (list "TestIndexMojo.java"))))
+                        (replace 'install
+                          (install-from-pom "pom.xml")))))
+    (propagated-inputs (list java-sonatype-oss-parent-pom-9))
+    (inputs (list maven-artifact
+                  maven-plugin-api
+                  maven-plugin-annotations
+                  maven-core
+                  maven-common-artifact-filters
+                  java-slf4j-nop
+                  java-eclipse-sisu-inject
+                  java-plexus-utils
+                  java-plexus-build-api
+                  java-slf4j-api))
+    (home-page "https://www.eclipse.org/sisu/")
+    (synopsis "Maven plugin that generates annotation indexes for Sisu")
+    (description "Maven plugin that generates annotation indexes for Sisu to
+avoid classpath scanning at runtime.")
+    (license license:epl1.0)))
+
 (define-public maven-artifact-transfer
   (package
     (name "maven-artifact-transfer")
@@ -3887,3 +3935,80 @@ reports in two different file formats, plain text and xml.")))
     (description "This plugin provides the capability to build jars.  If you
 would like to sign jars please use the Maven Jarsigner Plugin instead.")
     (license license:asl2.0)))
+
+(define-public maven-doxia-sink-api
+  (package
+    (name "maven-doxia-sink-api")
+    (version "2.0.0-M2")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitbox.apache.org/repos/asf/maven-doxia.git")
+                    (commit (string-append "doxia-" version))))
+              (file-name (git-file-name "doxia" version))
+              (sha256
+               (base32
+                "0jx96lg0hgjsrm8mynhac4hwh2hmgiwjpwpx2k03yr14040zcr48"))))
+    (build-system ant-build-system)
+    (propagated-inputs
+     (list maven-doxia-parent-pom))
+    (arguments
+     `(#:jar-name "doxia-sink-api.jar"
+       #:source-dir "doxia-sink-api/src/main/java"
+       #:tests? #f ; no tests
+       #:phases (modify-phases %standard-phases
+                  (replace 'install
+                    (install-from-pom "doxia-sink-api/pom.xml")))))
+    (home-page "https://maven.apache.org/doxia/index.html")
+    (synopsis "Generic markup language interface")
+    (description
+     "The @code{Sink} interface is a generic markup language
+interface provided as a Java API.  It contains several methods that
+encapsulate common text syntax.  A start tag is denoted by @code{xxxx()}
+method and a end of tag by @code{xxxx_()} method.")
+    (license license:asl2.0)))
+
+(define maven-doxia-parent-pom
+  (package
+    (inherit maven-doxia-sink-api)
+    (name "maven-doxia-parent-pom")
+    (arguments
+     `(#:tests? #f
+       #:phases (modify-phases %standard-phases
+                  (delete 'configure)
+                  (delete 'build)
+                  (replace 'install
+                    (install-pom-file "pom.xml")))))
+    (propagated-inputs
+     (list maven-parent-pom-34))
+    (synopsis "Content generation framework")
+    (description "@samp{Doxia} is a content generation framework that provides
+powerful techniques for generating static and dynamic content, supporting a
+variety of markup languages.")))
+
+(define-public maven-doxia-core
+  (package
+    (inherit maven-doxia-sink-api)
+    (name "maven-doxia-core")
+    (arguments
+     `(#:jar-name "doxia-core.jar"
+       #:source-dir "doxia-core/src/main/java"
+       #:test-dir "doxia-core/src/test/java"
+       #:tests? #f ; tests require JUnit5
+       #:phases (modify-phases %standard-phases
+                  (replace 'install
+                    (install-from-pom "doxia-core/pom.xml")))))
+    (propagated-inputs (list maven-doxia-parent-pom
+                             maven-doxia-sink-api
+                             java-slf4j-api
+                             java-javax-inject
+                             java-plexus-utils
+                             java-eclipse-sisu-plexus
+                             java-commons-text))
+    (synopsis "Doxia core classes and interfaces")
+    (description
+     "Doxia is a content generation framework that provides powerful
+techniques for generating static and dynamic content, supporting a variety of
+markup languages.
+
+This package contains Doxia core classes and interfaces.")))