Reputation: 91630
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?
Upvotes: 7
Views: 886
Reputation: 818
You can download all dependencies using: mvn dependency:copy-dependencies
After this you all project's dependencies will be available in the ./target/dependency/ folder.
Upvotes: 0
Reputation: 8695
You don't necessarily have to run the simulation with the maven plugin, do you? You can use maven to package a jar with all dependencies and execute the gatling runner from it.
Upvotes: 1