Я пытаюсь собрать / развернуть загрузочную пружину в контейнере Docker.
FROM maven:3.5.3-jdk-8-slim AS build COPY ./pom.xml /app/pom.xml RUN cd /app RUN mvn -f /app/pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:go-offline dependency:resolve-plugins -B COPY . /app RUN mvn -f /app/pom.xml -s /usr/share/maven/ref/settings-docker.xml --batch-mode package -DskipTests
Как вы можете видеть, я кэширую все зависимости с помощью первой команды mvn, чтобы каждое изменение в моемКодовое приложение не будет вызывать новую загрузку зависимостей.Это работает для большинства зависимостей, но некоторые все еще загружаются (даже если они кэшируются).Это журнал второй команды mvn (пакета):
[INFO] Scanning for projects... [INFO] [INFO] ----------------------< xxx:xxx >---------------------- [INFO] Building xxxx 0.0.0 [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- apt-maven-plugin:1.1.3:process (default) @ vsol-java --- [INFO] Downloading from spring-releases: https://repo.spring.io/libs-release/org/apache/commons/commons-io/1.3.2/commons-io-1.3.2.pom [INFO] Downloaded from spring-releases: https://repo.spring.io/libs-release/org/apache/commons/commons-io/1.3.2/commons-io-1.3.2.pom (0 B at 0 B/s) [INFO] Downloading from spring-releases: https://repo.spring.io/libs-release/commons-io/commons-io/1.3.2/commons-io-1.3.2.pom [INFO] Downloaded from spring-releases: https://repo.spring.io/libs-release/commons-io/commons-io/1.3.2/commons-io-1.3.2.pom (0 B at 0 B/s) [INFO] Downloading from spring-releases: https://repo.spring.io/libs-release/org/apache/commons/commons-parent/3/commons-parent-3.pom [INFO] Downloaded from spring-releases: https://repo.spring.io/libs-release/org/apache/commons/commons-parent/3/commons-parent-3.pom (0 B at 0 B/s) [INFO] Downloading from spring-releases: https://repo.spring.io/libs-release/org/sonatype/plexus/plexus-build-api/0.0.7/plexus-build-api-0.0.7.jar ...
(Кстати, (0 B при 0 B / s) немного странно ... просто проверка?)
Если я запускаю контейнер на основе шага после первой команды maven (mvn dependency: ...) (которая должна кэшировать все зависимости)
root@3281a837a236:/usr/share/maven/ref/repository# ls -lh org/codehaus/plexus/plexus-utils/1.5.15 total 244K -rw-r--r-- 1 root root 202 Oct 19 12:07 _remote.repositories -rw-r--r-- 1 root root 223K Oct 19 12:07 plexus-utils-1.5.15.jar -rw-r--r-- 1 root root 40 Oct 19 12:07 plexus-utils-1.5.15.jar.sha1 -rw-r--r-- 1 root root 6.7K Oct 19 12:07 plexus-utils-1.5.15.pom -rw-r--r-- 1 root root 40 Oct 19 12:07 plexus-utils-1.5.15.pom.sha1
Кажется, что библиотека тамно я могу видеть это в журнале из пакета mvn:
[INFO] Загрузка из весенних выпусков: https://repo.spring.io/libs-release/org/codehaus/plexus/plexus-utils/1.5.15/plexus-utils-1.5.15.jar
Если я запускаю пакет mvn в автономном режиме, он не работает, потому что онне может достичь https://repo.spring.io/libs-release.
Похоже, что он кэшируется, но Maven все еще пытается загрузить этот файл.Я пробовал это в моем pom.xml
<pluginRepository> <id>spring-releases</id> <url>https://repo.spring.io/libs-release</url> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> </pluginRepository>
Но безрезультатно.
Есть идеи?Спасибо!
Наконец-то я нашел решение, используя go-offline-maven-plugin.
<plugin> <groupId>de.qaware.maven</groupId> <artifactId>go-offline-maven-plugin</artifactId> <version>1.0.0</version> <configuration> <dynamicDependencies> <DynamicDependency> <groupId>org.apache.maven.surefire</groupId> <artifactId>surefire-junit4</artifactId> <version>2.20.1</version> <repositoryType>PLUGIN</repositoryType> </DynamicDependency> </dynamicDependencies> </configuration> </plugin>
И пытаясь получить все зависимости, используя:
mvn de.qaware.maven:go-offline-maven-plugin:resolve-dependencies