Получить все зависимости maven, включая зависимости плагиновJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Получить все зависимости maven, включая зависимости плагинов

Сообщение Anonymous »

Я пытаюсь заставить maven загружать все зависимости (компилировать, тестировать, плагины и т. д.), чтобы мои докеризованные сборки не тратили ненужное время на их загрузку снова и снова.

Мы закрепили нашу сборку maven, чтобы мы могли запускать ее из наших jenkins без установки множества зависимостей, специфичных для сборки, на машине jenkins (зависимости Java, redis, maven и т. д.). Наша сборка основана на инкрементальных сборках Docker, которые выполняют только те шаги, которые действительно требуют повторного запуска.

Наша основная сборка — это DockerFile, в котором есть несколько шагов для установки jdk, maven, и т. д. Затем он выполняет

Код: Выделить всё

COPY ./pom.xml /opt/inbot-api/pom.xml
RUN mvn dependency:copy-dependencies clean


Это загрузит зависимости в локальный репозиторий maven, а затем очистит целевой каталог.

Затем копируем дерево исходников в образ и запускаем полную сборку.

Код: Выделить всё

COPY ./src /opt/inbot-api/src
RUN mvn -e clean install
Общая идея заключается в том, что на чистой машине докер выполнит все шаги RUN, но при инкрементных сборках он будет повторно запускать только те вещи, которые требуют повторного запуска. . После каждого шага выполнения он сохраняет промежуточный образ. Таким образом, если файл pom не изменяется, нет необходимости повторно выполнять этап получения зависимостей, поскольку он приведет к точно такому же результату. Поэтому вместо этого он загружает кэшированный промежуточный образ со всеми уже загруженными зависимостями. Это именно то, что мы хотим.

В нашем DockerFile есть еще много чего, что здесь не так важно, но в конечном итоге он создает файл docker с нашими скомпилированными артефактами, конфигурацией nginx. и все наши зависимости времени выполнения, которые мы можем развернуть в ECS.

Это почти работает, за исключением того, что чистая установка mvn по-прежнему загружает дополнительные зависимости плагина при каждой сборке. Итак, это зависимости, которые не рассматриваются на этапе копирования зависимостей.

Мой вопрос: как мне получить RUN mvn Dependency:copy-зависимости очистить для загрузите все зависимости, включая зависимости плагина. Я видел, как люди на самом деле выполняли очистку mvnverify вместо mvn dependency:copy-dependents clean, но в нашем случае это довольно медленно. Мне интересно, есть ли лучший способ сделать это.

Буду признателен за любые отзывы о том, как это улучшить.

Обновление

Сейчас я делаю

Код: Выделить всё

RUN mvn -B -T 4 dependency:copy-dependencies dependency:resolve-plugins dependency:go-offline  clean
И после этого он по-прежнему загружает больше материалов с помощью чистой установки mvn. Чистая установка mvn -o по-прежнему завершается неудачей, несмотря на зависимость:go-offline. Итак, похоже, этот плагин сломан.

Подробнее здесь: https://stackoverflow.com/questions/342 ... pendencies
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»