I'm baking a Docker image which runs a Maven task at runtime. It looks kind of like this:
ADD pom.xml /srv
ADD src /srv/src
WORKDIR /srv
RUN mvn dependencies:go-offline scala:testCompile
At runtime, I'm running mvn gatling:execute
to run a load testing utility.
My POM looks like this:
<project>
<dependencies>
<dependency>
<groupId>io.gatling</groupId>
<artifactId>gatling-core</artifactId>
<version>${gatling.version}</version>
</dependency>
<dependency>
<groupId>io.gatling</groupId>
<artifactId>gatling-http</artifactId>
<version>${gatling.version}</version>
</dependency>
<dependency>
<groupId>io.gatling</groupId>
<artifactId>gatling-app</artifactId>
<version>${gatling.version}</version>
</dependency>
<dependency>
<groupId>io.gatling.highcharts</groupId>
<artifactId>gatling-charts-highcharts</artifactId>
<version>${gatling.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>${scala-maven-plugin.version}</version>
</plugin>
<plugin>
<groupId>io.gatling</groupId>
<artifactId>gatling-maven-plugin</artifactId>
<version>${gatling-plugin.version}</version>
<executions>
<execution>
<goals>
<goal>execute</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
What I want to have happen is that when I ultimately run mvn gatling:execute
, I don't want to have to download any dependencies, I'd like them all baked into the image at build time.
However, even executing mvn dependencies:go-offline scala:testCompile
doesn't get me all of the way there. Running gatling:execute
still requires downloading more dependencies.
How can I download absolutely everything that Maven requires into my Docker image, so that no downloads at runtime are required?
gatling:execute
without massively pwning an endpoint ;) – Srutimvn gatling:execute
, but I'd like all of the dependencies to be compiled into the image at build-time, not at run-time. Waiting for Maven to download the internet at Docker container start time is something I'd like to avoid. – Srutidependency:go-offline
, right? Normally, maven will check SNAPSHOT dependencies once per day. Do you have any? Also try forcing the offline mode when running execute:mvn -o gatling:execute
. – Netherlands