I want to add a separate dependency layer to my dockerfile.
I’m running mvn dependencies:go-offline
but after that mvn install -o
reports that not all deps are found. After inspecting the error message it turned out that no transitive dependencies were downloading. The issue was fixed by explicitly defining all missing packages in pom.xml
, but obviously it’s not ideal.
This is my dockerfile
// copy pom.xml
RUN ./mvnw dependency:go-offline
// copy source code
RUN ./mvnw install -o
Is there an alternative to dependency:go-offline
, or a flag for that command, that will download all dependencies needed to run install -o
, not just direct ones?
UPD:
This are the missing dependencies
[WARNING] The POM for javax.xml.bind:jaxb-api:jar:2.3.1 is missing, no dependency information available
[WARNING] The POM for net.bytebuddy:byte-buddy:jar:1.11.22 is missing, no dependency information available
[WARNING] The POM for org.glassfish.jaxb:jaxb-runtime:jar:2.3.6 is missing, no dependency information available
[WARNING] The POM for org.hamcrest:hamcrest-core:jar:2.2 is missing, no dependency information available
[WARNING] The POM for org.webjars:webjars-locator-core:jar:0.48 is missing, no dependency information available
[WARNING] The POM for org.apache.httpcomponents:httpcore:jar:4.4.15 is missing, no dependency information available
[WARNING] The POM for commons-codec:commons-codec:jar:1.15 is missing, no dependency information available
2
Answers
I faced the same issue. For some reason,
dependency:go-offline
doesn’t add pom files to the local repository.Instead, use
mvn verify
followed bymvn package
:Check out a similar topic here.
According to the comments on issue discussion there were some improvements related to dependency resolution and fetching in newer versions of
maven-dependency-plugin
(starting with 3.0.0). However by default maven uses version 2.8 of dependency plugin. So in order to use recent versions specify version explicitly: