Hi Herve, Thank you very much for taking a look at this. Unfortunately running "versions:display-plugin-updates" says all plugins have a version specified. My pom file is practically empty - it's a tiny spring boot app ( https://github.com/adam-sandor/memoryhog/blob/master/pom.xml). Any other ideas?
Here is the output of the version plugin, and here you can see the output of "mvn package" after "mvn dependency:go-offline" has already ran: https://gist.github.com/adam-sandor/9296560d8bdae3f77f6b1160c0635e55 [INFO] [INFO] All plugins with a version specified are using the latest versions. [INFO] [INFO] All plugins have a version specified. [INFO] On Mon, Feb 19, 2018 at 5:46 PM Hervé BOUTEMY <[email protected]> wrote: > Le lundi 19 février 2018, 09:25:13 CET Adam Sandor a écrit : > > Hello Maven people, > > > > Can someone at least give me some feedback on why this one is not > > getting any answers? Asked the question in a wrong way? Is it not > > clear? Not interesting? > I suppose this is a mix that not many people are fluent with > I'll try to help. > > > > > I think supporting Docker-based builds is very important today. I'm > > thinking of contributing code to solve this issue, but I first want to > > confirm I didn't miss some solution that is already available. > > > > Adam > > > > On Sun, Feb 4, 2018 at 12:57 PM, Adam Sandor > > > > <[email protected]> wrote: > > > I’m trying to figure out how to create a two-stage Docker build using > > > Maven > > > that would properly utilise Docker layer caching. Containing the whole > > > build in a Docker container without external dependencies on volume > > > mounts (for .m2 cache) has a lot of advantages. > > > The only missing piece of the puzzle I can’t figure out is how to force > > > Maven to download ALL dependencies just by using the pom file and not > > > executing any compilation. The idea behind is to: > > > 1. copy the pom file into the image > > > 2. use maven to download all dependencies > > > 3. copy the sources to the image > > > 4. use maven to build the final artifact > > > This way Docker will reuse the layer containing the dependencies if the > > > pom > > > file didn’t change. So dependency caching would be implemented in a > > > Docker-ish way that works anywhere the Docker daemon is present as > opposed > > > to relying on Maven being installed and artifacts getting stored in a > > > shared .m2/repository directory. > > > > > > Now the problem - Maven’s lazy downloading of dependencies. Even if I > try > > > to execute “mvn dependency:go-offline” Maven still doesn’t download > > > plugins and other dependencies, which would only be required during the > > > packaging phase. > Maven Dependency Plugin is supposed to download plugins: that's surprising > you > don't get one plugin downloaded. > There is one classical cause I imagine: did you define a version for every > plugin used? > You should be able to have a diagnostic through "mvn > versions:display-plugin- > updates" > > Regards, > > Hervé > > > > > So the following Docker file doesn’t work as intended: > > > > > > FROM maven AS build > > > WORKDIR /build > > > ADD pom.xml /build > > > RUN mvn dependency:go-offline > > > ADD src /build/src > > > RUN mvn -o package > > > FROM openjdk:8-jdk > > > WORKDIR /app > > > COPY --from=build /build/target/app.jar /app > > > CMD java -jar /app/app.jar > > > > > > Maven will still start downloading more dependencies on line 6. > > > > > > I found a workaround for this - execute “mvn package” with a single > fake > > > main class on line 4, but this is not a nice solution. Can anyone give > me > > > some option I’m missing or confirm that this is the way things are? In > > > that > > > case I can go ahead write a blog post showing my workaround to help > other > > > struggling with the same problem. Thank you! > > > > > > Adam Sandor from Container Solutions > > > > > > > > > -- > > > > > > Ádám Sándor > > > > > > Senior Engineer / Consultant > > > > > > Container Solutions > > > > > > 0680126174 > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [email protected] > > For additional commands, e-mail: [email protected] > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > >
