Hi Guixers, First let me say I'm a Maven novice, so it's possible I'm doing something dumb on the Maven side of things. I'm unable to make a bare-bones Maven project build in Guix. This looks to be a problem with mismatched dependencies in Guix around java-commons-codec. I suggest what probably needs to be fixed upstream below (assuming my hunch is correct!). However I'm looking for advice on how to workaround this problem today to get a basic Maven package building. *My method:* Following advice here: https://maven.apache.org/guides/getting-started/maven-in-five-minutes.html Using an environment like so: guix environment --ad-hoc maven I create a new git repo and put this in the root (so pom.xml, etc, sit in in the root of the repo) mvn archetype:generate -DgroupId=com.quantile.app -DartifactId=java-test-repo -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false I'm able to package and run everything OK (obviously the dependencies are being pulled from the web in this case): mvn package java -cp target/java-test-repo-1.0-SNAPSHOT.jar com.quantile.app.App Next I try to create a bare-bones Guix package to build this (this time there will be no web access during the build): (define-public java-test-repo-integration (let ((commit-integration "b9e3894aa3629fc2d60ceadea2f655d4cb6a826b")) (package (name "java-test-repo") (version integration-version) (source (git-checkout (url "ssh://git@vcs:1234/ea/java-test-repo.git") (commit commit-integration))) (build-system maven-build-system) (home-page "https://vcs/projects/EA/repos/java-test-repo/browse") (synopsis "Java Test Repo Production") (description "Java/Maven bare-bones framework for testing") (license license-quantile)))) I get the following build failure: [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.136 s [INFO] Finished at: 2022-02-08T14:39:36Z [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4:test (default-test) on project java-test-repo: Execution default-test of goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4:test failed: Plugin org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M4 or one of its dependencies could not be resolved: Failed to collect dependencies at org.apache.maven.plugins:maven-surefire-plugin:jar:3.0.0-M4 -> org.apache.maven.surefire:maven-surefire-common:jar:3.0.0-M4 -> org.apache.maven.surefire:surefire-api:jar:3.0.0-M4 -> *commons-codec:commons-codec:jar:1.15: Failed to read artifact descriptor for commons-codec:commons-codec:jar:1.15: *Cannot access central ( https://repo.maven.apache.org/maven2) in offline mode and the artifact org.apache.commons:commons-parent:pom:52 has not been downloaded from it before. -> [Help 1] After doing some digging I think I know why: $ guix show java-commons-codec name: java-commons-codec version: 1.15 outputs: out systems: x86_64-linux i686-linux dependencies: *apache-commons-parent-pom@50* java-commons-lang3@3.9 java-junit@4.12 So it's packaged with a propagated apache-commons-parent-pom at version 50. See also here for package definition: https://github.com/guix-mirror/guix/blob/9fe48723c8266ffe8e6a639be2ec2e362cf20cb5/gnu/packages/java.scm#L7671here But if I look at the POM in the Gnu Store - it is showing version 52 for the commons-parent which I am assuming (perhaps incorrectly?) should match the version 50 above? /gnu/store/7qgi821xidn9nbb07qw35g7wmgv84jln-java-commons-codec-1.15/lib/m2/./commons-codec/commons-codec/1.15/commons-codec-1.15.pom org.apache.commons commons-parent *52* Likewise if I look at the source code on Apache's website - it's 52 too: https://dlcdn.apache.org//commons/codec/source/commons-codec-1.15-src.tar.gz org.apache.commons commons-parent *52* What I think has happened is that java-commons-codec has been promoted from version 1.14 to version 1.15 without changing the propoagated input? On version 1.14 everything would match: https://archive.apache.org/dist/commons/codec/source/commons-codec-1.14-src.tar.gz org.apache.commons commons-parent 50 *So assuming this isn't going to cause an avalanche of other issues the solution proper seems to be either downgrade java-common-codec to version 1.14, or upgrade the dependency on apache-commons-parent-pom to 52?* What I'm looking for today is any workaround which allows me to use Maven without having to wait to for upstream fix. My first attempt was to try - adding an inherited package and then swapping this in place of 1.15: (define-public java-commons-codec-old (package (inherit java-commons-codec) (version "1.14"))) guix build -L /home/foo/git/guix-packages/packages --with-input=java-commons-codec=java-commons-codec@1.14 java-test-repo This seems to just go round in circles never building and throwing Java exceptions? I also tried manually patching the whole dependency tree, but I think I've introduced the same package more than once attempting this as I get symlink errors: (define-public java-commons-codec-old (package (inherit java-commons-codec) (version "1.14"))) (define-public java-surefire-api-old (package (inherit java-surefire-api) (propagated-inputs `(("java-commons-codec" ,java-commons-codec-old) ,@(alist-delete "java-commons-codec" (package-propagated-inputs java-surefire-api)))))) (define-public maven-surefire-common-old (package (inherit maven-surefire-common) (propagated-inputs `(("java-surefire-api" ,java-surefire-api-old) ,@(alist-delete "java-surefire-api" (package-propagated-inputs maven-surefire-common)))))) (define-public maven-surefire-plugin-old (package (inherit maven-surefire-plugin) (propagated-inputs `(("maven-surefire-common" ,maven-surefire-common-old) ,@(alist-delete "maven-surefire-common" (package-propagated-inputs maven-surefire-plugin)))))) (define-public java-test-repo-integration (let ((commit-integration "b9e3894aa3629fc2d60ceadea2f655d4cb6a826b")) (package (name "java-test-repo") (version integration-version) (source (git-checkout (url "ssh://git@vcs:1234/ea/java-test-repo.git") (commit commit-integration))) (build-system maven-build-system) * (arguments `(#:maven-plugins (("maven-surefire-plugin" ,maven-surefire-plugin-old) ,@(alist-delete "maven-surefire-plugin" (default-maven-plugins)))))* (home-page "https://vcs/projects/EA/repos/java-test-repo/browse") (synopsis "Java Test Repo Production") (description "Java/Maven bare-bones framework for testing") (license license-quantile)))) Any ideas greatfuly received!