;;; 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.
;;;
#: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)
(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.")
(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)
(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)
("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
(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"
("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
(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)
("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)
(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
("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
(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 _
(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)
`(#: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)