Я пытаюсь разогреть кеш Docker + Maven перед созданием проекта Kotlin. Как было предложено многими потоками Maven/Docker, мой файл докера выглядит следующим образом:
COPY pom.xml .
RUN mvn dependency:go-offline
COPY ./src/ src/
RUN mvn package
Идея состоит в том, что если я изменю файл в каталоге ./src, я хочу, чтобы кэш Docker пропустил длинную страницу загрузки зависимостей maven.
Моя проблема в том, что команда mvn package по-прежнему загружает много файлов.
Я пытался использовать mvn -o package (флаг maven offline), чтобы определить, какие зависимости отсутствуют, но он просто жалуется, что не может загрузить зависимости. Но я ожидал, что зависимости уже будут загружены на предыдущем шаге. Вот ошибки, которые я получаю с флагом "-o":
Step 8/13 : RUN mvn dependency:go-offline
---> Using cache
---> 0334facb9cc9
Step 9/13 : COPY ./src/ src/
---> Using cache
---> 27149a191017
Step 10/13 : RUN mvn -o package
---> Running in 5183eced32ca
Warning: JAVA_HOME environment variable is not set.
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building auth 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ auth ---
[WARNING] The POM for org.apache.maven:maven-core:jar:2.0.6 is missing, no dependency information available
[WARNING] The POM for org.apache.maven:maven-monitor:jar:2.0.6 is missing, no dependency information available
[WARNING] The POM for org.codehaus.plexus:plexus-utils:jar:2.0.5 is missing, no dependency information available
[WARNING] The POM for org.apache.maven.shared:maven-filtering:jar:1.1 is missing, no dependency information available
[WARNING] The POM for org.codehaus.plexus:plexus-interpolation:jar:1.13 is missing, no dependency information available
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.882 s
[INFO] Finished at: 2019-07-12T07:02:23+00:00
[INFO] Final Memory: 13M/174M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources (default-resources) on project auth: Execution default-resources of goal org.apache.maven.plugins:maven-resources-plugin:2.6:resources failed: Plugin org.apache.maven.plugins:maven-resources-plugin:2.6 or one of its dependencies could not be resolved: The following artifacts could not be resolved: org.apache.maven:maven-plugin-api:jar:2.0.6, org.apache.maven:maven-project:jar:2.0.6, org.apache.maven:maven-profile:jar:2.0.6, org.apache.maven:maven-artifact-manager:jar:2.0.6, org.apache.maven:maven-repository-metadata:jar:2.0.6, org.apache.maven:maven-plugin-registry:jar:2.0.6, org.apache.maven:maven-core:jar:2.0.6, org.apache.maven:maven-artifact:jar:2.0.6, org.apache.maven:maven-settings:jar:2.0.6, org.apache.maven:maven-model:jar:2.0.6, org.apache.maven:maven-monitor:jar:2.0.6, classworlds:classworlds:jar:1.1-alpha-2, org.codehaus.plexus:plexus-utils:jar:2.0.5, org.apache.maven.shared:maven-filtering:jar:1.1, org.codehaus.plexus:plexus-interpolation:jar:1.13: Cannot access central (https://repo.maven.apache.org/maven2) in offline mode and the artifact org.apache.maven:maven-plugin-api:jar:2.0.6 has not been downloaded from it before. -> [Help 1


Попробуйте выполнить команды mvn, это спасло меня от ошибки maven.
RUN mvn --batch-mode --errors --strict-checksums --threads 1C \
org.apache.maven.plugins:maven-dependency-plugin:3.0.2:go-offline
RUN mvn --batch-mode --errors --offline package
Я играл с вашим решением. Кажется, что -B - единственный флаг, который имеет значение. Читая документы CLI, я понятия не имею, почему это работает, но это работает :-).
Обратитесь к документ, чтобы узнать о значении каждой опции CLI.
@sarang Что касается моего предыдущего комментария: документ не объясняет, почему -B имеет значение в отношении «офлайн». (Я уже прочитал это, прежде чем опубликовать свой комментарий :-))
Это помогло бы добавить больше деталей к этому ответу
Из того, что я собрал из разных источников go-offline не всегда корректно обрабатывает кеширование пакетов, оставляя часть из них за пределами локального репозитория (см. pull request на Гитхаб).
В моем случае стандарт mvn dependency:go-offline использовал go-offline 2.8 и возвращал ошибки. Затем я попытался запустить mvn org.apache.maven.plugins:maven-dependency-plugin:3.2.0:go-offline, но у меня все еще были проблемы с разными пакетами.
Что сработало для меня, так это использование другого плагина для перехода в автономный режим, доступного на Гитхаб.
С использованием
mvn de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
наконец сделал работу.
Пожалуйста, объясните назначение каждого флага.