gnu: msmtp: Update to 1.8.10.
[jackhill/guix/guix.git] / gnu / packages / maven.scm
index f63fcee..c18850b 100644 (file)
@@ -1,5 +1,7 @@
 ;;; GNU Guix --- Functional package management for GNU
 ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -20,6 +22,7 @@
   #:use-module ((guix licenses) #:prefix license:)
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix git-download)
   #:use-module (guix utils)
   #:use-module (guix build-system ant)
   #:use-module (gnu packages)
@@ -77,22 +80,28 @@ provides the Maven plugin generating the component metadata.")))
 (define-public maven-resolver-api
   (package
     (name "maven-resolver-api")
-    (version "1.1.1")
+    (version "1.3.1")
     (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/apache/maven-resolver/"
-                                  "archive/maven-resolver-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/apache/maven-resolver.git")
+                    (commit (string-append "maven-resolver-" version))))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "0rpvdg3qr1j88gw0ankf0wnwfyq6238mdlm7s39vf5jrcvhdgwcl"))))
+                "1x1gll8nkfl6zgnab78fxxvvhg42b2grxgdh1wp2h4qxsjkxg93d"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "maven-resolver-api.jar"
        #:source-dir "maven-resolver-api/src/main/java"
        #:test-dir "maven-resolver-api/src/test"))
     (native-inputs
-     `(("java-junit" ,java-junit)
-       ("java-hamcrest-core" ,java-hamcrest-core)))
+     `(("java-asm" ,java-asm)
+       ("java-cglib" ,java-cglib)
+       ("java-hamcrest-core" ,java-hamcrest-core)
+       ("java-junit" ,java-junit)
+       ("java-mockito-1" ,java-mockito-1)
+       ("java-objenesis" ,java-objenesis)))
     (home-page "https://github.com/apache/maven-resolver")
     (synopsis "Maven repository system API")
     (description "This package contains the API for the maven repository system.")
@@ -164,12 +173,14 @@ ease usage of the repository system.")))
              (mkdir-p "build/classes/META-INF/sisu")
              (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
                (lambda _
-                 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n"))))))))
+                 (display "org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory\n")))
+             #t)))))
     (inputs
      `(("maven-resolver-api" ,maven-resolver-api)
        ("maven-resolver-spi" ,maven-resolver-spi)
        ("maven-resolver-util" ,maven-resolver-util)
-       ("java-javax-inject" ,java-javax-inject)))
+       ("java-javax-inject" ,java-javax-inject)
+       ("java-slf4j-api" ,java-slf4j-api)))
     (native-inputs
      `(("java-junit" ,java-junit)
        ("java-hamcrest-core" ,java-hamcrest-core)
@@ -198,28 +209,28 @@ for repositories using URI-based layouts.")))
                    (string-append
                      ;; Build this list by looking for files containing "@Named"
                      "org.eclipse.aether.internal.impl.DefaultArtifactResolver\n"
-                     "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
-                     "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
-                     "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory\n"
-                     "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
-                     "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
+                     "org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector\n"
+                     "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
+                     "org.eclipse.aether.internal.impl.DefaultDeployer\n"
                      "org.eclipse.aether.internal.impl.DefaultFileProcessor\n"
+                     "org.eclipse.aether.internal.impl.DefaultInstaller\n"
                      "org.eclipse.aether.internal.impl.DefaultLocalRepositoryProvider\n"
-                     "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
-                     "org.eclipse.aether.internal.impl.DefaultDeployer\n"
                      "org.eclipse.aether.internal.impl.DefaultMetadataResolver\n"
-                     "org.eclipse.aether.internal.impl.DefaultInstaller\n"
-                     "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
-                     "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
                      "org.eclipse.aether.internal.impl.DefaultOfflineController\n"
-                     "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
-                     "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
                      "org.eclipse.aether.internal.impl.DefaultRemoteRepositoryManager\n"
-                     "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
                      "org.eclipse.aether.internal.impl.DefaultRepositoryConnectorProvider\n"
+                     "org.eclipse.aether.internal.impl.DefaultRepositoryEventDispatcher\n"
+                     "org.eclipse.aether.internal.impl.DefaultRepositoryLayoutProvider\n"
+                     "org.eclipse.aether.internal.impl.DefaultRepositorySystem\n"
+                     "org.eclipse.aether.internal.impl.DefaultSyncContextFactory\n"
+                     "org.eclipse.aether.internal.impl.DefaultTransporterProvider\n"
                      "org.eclipse.aether.internal.impl.DefaultUpdateCheckManager\n"
-                     "org.eclipse.aether.internal.impl.DefaultChecksumPolicyProvider\n"
-                     "org.eclipse.aether.internal.impl.DefaultDependencyCollector\n"))))
+                     "org.eclipse.aether.internal.impl.DefaultUpdatePolicyAnalyzer\n"
+                     "org.eclipse.aether.internal.impl.EnhancedLocalRepositoryManagerFactory\n"
+                     "org.eclipse.aether.internal.impl.LoggerFactoryProvider\n"
+                     "org.eclipse.aether.internal.impl.Maven2RepositoryLayoutFactory\n"
+                     "org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory\n"
+                     "org.eclipse.aether.internal.impl.slf4j.Slf4jLoggerFactory"))))
              #t)))))
     (inputs
      `(("maven-resolver-api" ,maven-resolver-api)
@@ -306,6 +317,7 @@ for repositories using URI-based layouts.")))
        ("java-plexus-component-annotation" ,java-plexus-component-annotations)
        ("java-plexus-classworld" ,java-plexus-classworlds)
        ("java-plexus-plexus-util" ,java-plexus-utils)
+       ("java-slf4j-api" ,java-slf4j-api)
        ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
        ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)))
     (native-inputs
@@ -388,12 +400,12 @@ replacement with improvements.")
 (define-public maven-wagon-provider-api
   (package
     (name "maven-wagon-provider-api")
-    (version "3.0.0")
+    (version "3.1.0")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.apache.org/dist/maven/wagon/"
                                   "wagon-" version "-source-release.zip"))
-              (sha256 (base32 "1qb0q4m7vmf290xp3fnfdi3pwl3hkskia5g3z2v82q1ch3y2knqv"))))
+              (sha256 (base32 "0r07j6xdzdnrvqnv8ida7dx1m05pznh5qgmcfcfpyvg9nxbj3l1n"))))
     (build-system ant-build-system)
     (arguments
      `(#:jar-name "maven-wagon-provider-api.jar"
@@ -428,7 +440,7 @@ artifact and repository handling code.")
        ("java-eclipse-jetty-server-9.2" ,java-eclipse-jetty-server-9.2)
        ("java-eclipse-jetty-servlet-9.2" ,java-eclipse-jetty-servlet-9.2)
        ("java-slf4j-api" ,java-slf4j-api)
-       ("java-tomcat" ,java-tomcat)
+       ("java-javaee-servletapi" ,java-javaee-servletapi)
        ("maven-wagon-provider-api" ,maven-wagon-provider-api)))
     (synopsis "Test classes from maven-wagon")
     (description "Maven Wagon is a transport abstraction that is used in Maven's
@@ -512,7 +524,7 @@ gets and puts artifacts using the file system.")))
     (inputs
      `(("java-plexus-util" ,java-plexus-utils)
        ("maven-wagon-provider-api" ,maven-wagon-provider-api)
-       ("java-tomcat" ,java-tomcat)
+       ("java-javaee-servletapi" ,java-javaee-servletapi)
        ("java-slf4j-api" ,java-slf4j-api)
        ("java-commons-codec" ,java-commons-codec)
        ("java-eclipse-sisu-plexus" ,java-eclipse-sisu-plexus)
@@ -652,7 +664,7 @@ wagon providers supporting HTTP.")))
        ("java-jdom2" ,java-jdom2)
        ("java-asm" ,java-asm)
        ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
-       ("java-tomcat" ,java-tomcat)
+       ("java-javaee-servletapi" ,java-javaee-servletapi)
        ("java-eclipse-jetty-util-9.2" ,java-eclipse-jetty-util-9.2)
        ("java-eclipse-jetty-io-9.2" ,java-eclipse-jetty-io-9.2)
        ("java-eclipse-jetty-http-9.2" ,java-eclipse-jetty-http-9.2)
@@ -675,13 +687,13 @@ gets and puts artifacts through HTTP(S) using Apache HttpClient-4.x.")))
 (define-public maven-artifact
   (package
     (name "maven-artifact")
-    (version "3.5.3")
+    (version "3.6.1")
     (source (origin
               (method url-fetch)
               (uri (string-append "https://archive.apache.org/dist/maven/"
                                   "maven-3/" version "/source/"
                                   "apache-maven-" version "-src.tar.gz"))
-              (sha256 (base32 "06by23fz207lkvsndq883irfcf4p77jzkgf7n2q7hzyw1hs4h5s7"))
+              (sha256 (base32 "0grw9zp166ci53rd7qkyy2qmwmik37xhiz1z84jpm0msyvzj2n82"))
               (modules '((guix build utils)))
               (snippet
                '(begin
@@ -915,8 +927,8 @@ inheritance, interpolation, @dots{}")))
        ("java-asm" ,java-asm)
        ("sisu-inject" ,java-eclipse-sisu-inject)
        ("javax-inject" ,java-javax-inject)
-       ("xmlunit" ,java-xmlunit)
-       ("xmlunit" ,java-xmlunit-legacy)
+       ("java-xmlunit" ,java-xmlunit)
+       ("java-xmlunit-matchers" ,java-xmlunit-matchers)
        ("xbean" ,java-geronimo-xbean-reflect)
        ("classworlds" ,java-plexus-classworlds)))
     (description "Apache Maven is a software project management and comprehension
@@ -1162,7 +1174,7 @@ process.")))
             (add-before 'build 'modify-metainf
               (lambda _
                 (substitute* "build.xml"
-                  (("message=\"\"") "message=\"Implementation-Version: 3.5.3\n\""))
+                  (("message=\"\"") "message=\"Implementation-Version: 3.5.4\n\""))
                 #t))
             (add-before 'build 'add-maven-files
               (lambda _
@@ -1333,6 +1345,96 @@ logging support.")))
            (lambda _
              (chdir "maven-compat")
              #t))
+         (add-before 'build 'recreate-removed-jar
+           (lambda _
+             (with-output-to-file "src/test/repository-system/maven-core-2.1.0.jar"
+               (const #t))
+             (with-directory-excursion "src/test/resources"
+               (with-output-to-file "artifact-install/artifact-1.0.jar"
+                 (lambda _
+                   (format #t "dummy~%")))
+               (for-each
+                 (lambda (file)
+                   (with-output-to-file file
+                     (lambda _
+                       (format #t "foo~%"))))
+                 '("local-repo/maven-test/jars/maven-test-a-1.0.jar"
+                   "local-repo/maven-test/jars/maven-test-c-1.0.jar"
+                   "local-repo/maven-test/jars/maven-test-d-1.0.jar"
+                   "inheritance-repo/t04/maven-test/jars/t04-a-1.0.jar"
+                   "inheritance-repo/t04/maven-test/jars/t04-b-1.0.jar"
+                   "inheritance-repo/t04/maven-test/jars/t04-b-2.0.jar"
+                   "inheritance-repo/t04/maven-test/jars/t04-c-1.0.jar"
+                   "inheritance-repo/t04/maven-test/jars/t04-c-2.0.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-a-1.0.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-a-2.0.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-b-1.0.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-b-1.1.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-b-2.0.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-c-1.0.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-d-1.0.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-d-1.1.jar"
+                   "inheritance-repo/t05/maven-test/jars/t05-d-1.2.jar"
+                   "inheritance-repo/t06/maven-test/jars/t06-a-1.0.jar"
+                   "inheritance-repo/t06/maven-test/jars/t06-b-1.0.jar"
+                   "inheritance-repo/t06/maven-test/jars/t06-b-1.1.jar"
+                   "inheritance-repo/t06/maven-test/jars/t06-c-1.0.jar"
+                   "inheritance-repo/t06/maven-test/jars/t06-d-1.0.jar"
+                   "inheritance-repo/t06/maven-test/jars/t06-d-1.1.jar"
+                   "inheritance-repo/t06/maven-test/jars/t06-d-1.2.jar"
+                   "inheritance-repo/t07/maven-test/jars/t07-a-1.0.jar"
+                   "inheritance-repo/t07/maven-test/jars/t07-b-1.0.jar"
+                   "inheritance-repo/t07/maven-test/jars/t07-b-1.1.jar"
+                   "inheritance-repo/t07/maven-test/jars/t07-c-1.0.jar"
+                   "inheritance-repo/t07/maven-test/jars/t07-d-1.0.jar"
+                   "inheritance-repo/t07/maven-test/jars/t07-d-1.1.jar"
+                   "inheritance-repo/t07/maven-test/jars/t07-d-1.2.jar"
+                   "inheritance-repo/t08/maven-test/jars/t08-a-1.0.jar"
+                   "inheritance-repo/t08/maven-test/jars/t08-b-1.0.jar"
+                   "inheritance-repo/t08/maven-test/jars/t08-b-1.1.jar"
+                   "inheritance-repo/t08/maven-test/jars/t08-c-1.0.jar"
+                   "inheritance-repo/t08/maven-test/jars/t08-d-1.0.jar"
+                   "inheritance-repo/t08/maven-test/jars/t08-d-1.1.jar"
+                   "inheritance-repo/t08/maven-test/jars/t08-d-1.2.jar"
+                   "inheritance-repo/t09/maven-test/jars/t09-a-1.0.jar"
+                   "inheritance-repo/t09/maven-test/jars/t09-b-1.0.jar"
+                   "inheritance-repo/t09/maven-test/jars/t09-c-1.0.jar"
+                   "inheritance-repo/t09/maven-test/jars/t09-d-1.0.jar"
+                   "inheritance-repo/t10/maven-test/jars/t10-a-1.0.jar"
+                   "inheritance-repo/t10/maven-test/jars/t10-b-1.0.jar"
+                   "inheritance-repo/t10/maven-test/jars/t10-c-1.0.jar"))
+               (with-directory-excursion "local-repo/snapshot-test/jars"
+                 (for-each
+                   (lambda (file)
+                     (with-output-to-file file
+                       (lambda _
+                         ;; No end-of-line
+                         (format #t "local"))))
+                   '("maven-snapshot-e-1.0-SNAPSHOT.jar"
+                     "maven-snapshot-b-1.0-SNAPSHOT.jar"
+                     "maven-snapshot-a-1.0-SNAPSHOT.jar"))))
+             (for-each
+               (lambda (letter)
+                 (with-directory-excursion
+                   (string-append "src/test/remote-repo/org/apache/maven/its/"
+                                  letter "/0.1")
+                   (let ((dir (string-append "META-INF/maven/org.apache.maven.its/"
+                                             letter)))
+                     (mkdir-p dir)
+                     (copy-file (string-append letter "-0.1.pom")
+                                (string-append dir "/pom.xml"))
+                     (with-output-to-file (string-append dir "/pom.properties")
+                       (lambda _
+                         (format #t "version=0.1~%")
+                         (format #t "groupId=org.apache.maven.its")
+                         (format #t (string-append "artifactId=" letter))))
+                     (with-output-to-file "META-INF/MANIFEST.MF"
+                       (lambda _
+                         (format #t "Manifest-Version: 1.0~%"))))
+                     (invoke "jar" "cmf" "META-INF/MANIFEST.MF"
+                             (string-append letter "-0.1.jar") "META-INF")))
+               '("a" "b"))
+             #t))
          (add-before 'build 'generate-models
            (lambda* (#:key inputs #:allow-other-keys)
              (define (modello-single-mode file version mode)
@@ -1442,12 +1544,48 @@ layer for plugins that need to keep Maven2 compatibility.")))
      `(#:phases
        (modify-phases %standard-phases
          (replace 'build
-           (lambda _
+           (lambda* (#:key inputs #:allow-other-keys)
+             ;; Recreate the configuration for the loader
+             (with-output-to-file "apache-maven/src/bin/m2.conf"
+               (lambda _
+                 (format #t "main is org.apache.maven.cli.MavenCli from plexus.core~%")
+                 (format #t "~%")
+                 (format #t "set maven.conf default ${maven.home}/conf~%")
+                 (format #t "~%")
+                 (format #t "[plexus.core]~%")
+                 (format #t "load       ${maven.conf}/logging~%")
+                 (format #t "optionally ${maven.home}/lib/ext/*.jar~%")
+                 ;; Reference every jar so plexus-classworlds can find them.
+                 (for-each
+                   (lambda (dependency)
+                     (format #t "load       ~a/share/java/*.jar~%"
+                             (assoc-ref inputs dependency)))
+                   '("maven-artifact" "maven-embedder" "maven-core" "maven-compat"
+                     "maven-builder-support" "maven-model" "maven-model-builder"
+                     "maven-settings" "maven-settings-builder" "maven-plugin-api"
+                     "maven-repository-metadata" "maven-shared-utils" "maven-resolver-api"
+                     "maven-resolver-spi" "maven-resolver-util" "maven-resolver-impl"
+                     "maven-resolver-connector-basic" "maven-resolver-provider"
+                     "maven-resolver-transport-wagon" "maven-wagon-provider-api"
+                     "maven-wagon-file" "maven-wagon-http" "java-commons-logging-minimal"
+                     "java-httpcomponents-httpclient" "java-httpcomponents-httpcore"
+                     "maven-wagon-http-shared" "maven-wagon-tck-http"
+                     "java-eclipse-sisu-plexus" "java-guice" "java-aopalliance"
+                     "java-cglib" "java-asm" "java-eclipse-sisu-inject"
+                     "java-javax-inject" "java-plexus-component-annotations"
+                     "java-plexus-utils" "java-plexus-interpolation"
+                     "java-plexus-sec-dispatcher" "java-plexus-cipher" "java-guava"
+                     "java-jansi" "java-jsr250" "java-cdi-api" "java-commons-cli"
+                     "java-commons-io" "java-commons-lang3" "java-slf4j-api"
+                     "java-slf4j-simple"))))
              (substitute* "apache-maven/src/bin/mvn"
                (("cygwin=false;")
                 (string-append
-                  "CLASSPATH=" (getenv "CLASSPATH") "\n"
-                  "cygwin=false;"))
+                  "CLASSPATH="
+                  (car (find-files
+                         (assoc-ref inputs "java-plexus-classworlds")
+                         ".*.jar"))
+                  "\ncygwin=false;"))
                (("-classpath.*") "-classpath ${CLASSPATH} \\\n"))
              #t))
          (delete 'check)