diff --git a/Dockerfile b/Dockerfile index d4a9a15b08..9212410a58 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,10 @@ COPY war/pom.xml war/pom.xml COPY daisy-integration/pom.xml daisy-integration/pom.xml # Download dependencies in a separate layer to allow caching for future builds -RUN ./mvnw dependency:go-offline --batch-mode --define includeScope=compile +RUN ./mvnw dependency:go-offline \ + --batch-mode \ + --define includeScope=compile \ + --activate-profiles docker-dependencies COPY api/src/ api/src/ COPY core/src/ core/src/ @@ -23,6 +26,7 @@ COPY war/src/ war/src/ COPY daisy-integration/src/ daisy-integration/src/ RUN ./mvnw package \ + --offline \ --define skipTests \ --activate-profiles branch,DEV \ --define skip.npm \ diff --git a/war/pom.xml b/war/pom.xml index c1dd889587..19e7317b23 100644 --- a/war/pom.xml +++ b/war/pom.xml @@ -140,5 +140,46 @@ <spring.profile.active>branch</spring.profile.active> </properties> </profile> + <profile> + <id>docker-dependencies</id> + <!-- + Some dependencies are not discovered by default when running dependency:go-offline. + They are added here manually to allow Docker build layers to be cached properly. + --> + <dependencies> + <dependency> + <groupId>org.jboss.logging</groupId> + <artifactId>jboss-logging</artifactId> + </dependency> + <dependency> + <groupId>com.fasterxml</groupId> + <artifactId>classmate</artifactId> + </dependency> + <dependency> + <groupId>net.bytebuddy</groupId> + <artifactId>byte-buddy-agent</artifactId> + </dependency> + <dependency> + <groupId>com.querydsl</groupId> + <artifactId>querydsl-apt</artifactId> + <version>${querydsl.version}</version> + <classifier>jakarta</classifier> + </dependency> + <dependency> + <groupId>org.assertj</groupId> + <artifactId>assertj-core</artifactId> + <scope>test</scope> + </dependency> + <dependency> + <groupId>net.minidev</groupId> + <artifactId>json-smart</artifactId> + </dependency> + <dependency> + <groupId>org.hamcrest</groupId> + <artifactId>hamcrest-core</artifactId> + <scope>test</scope> + </dependency> + </dependencies> + </profile> </profiles> </project>