Как скачать все зависимости в мавене?
От: vsb Казахстан  
Дата: 08.12.22 22:19
Оценка: +1
В докерфайле. Есть pom.xml надо чтобы скачалось всё. Думаю кто писал тот поймёт.

Вроде есть специальная команда mvn dependency:go-offline но она тупо не работает как надо — плагины не скачиваются.

Сейчас я пользуюсь таким костылём:

FROM docker.io/library/maven:3-eclipse-temurin-19-alpine as build

RUN adduser -D build
USER build
RUN mkdir /home/build/app
WORKDIR /home/build/app

COPY pom.xml ./
RUN mkdir -p src/test/java \
    && echo "public class Test { @org.junit.jupiter.api.Test public void t() {} }" > src/test/java/Test.java \
    && mvn clean verify \
    && rm src/test/java/Test.java

COPY src src
RUN mvn verify


Нет ли решения поадекватней?
Re: Как скачать все зависимости в мавене?
От: · Великобритания  
Дата: 09.12.22 00:26
Оценка:
Здравствуйте, vsb, Вы писали:

vsb> Вроде есть специальная команда mvn dependency:go-offline но она тупо не работает как надо — плагины не скачиваются.

Сам так не делал, но попробую подкинуть идеи...
А ты точно последнюю версию используешь? Если версия maven-dependency-plugin явно не указана в pom.xml, то оно может что-то очень старое использовать.
Добавь <requirePluginVersions/> в enforcer и убедись, что всё прописано.
Если у тебя в pom.xml плагин не прописан, но ты добавляешь его вызов в командную строку (mvn ... exec:exec например), то он тоже будет вытягиваться позже.

Глупый вопрос — а оно точно надо? Может лучше докер volume как кеш m2_repo подключать, чтобы быстрее было? Иначе после каждого апдейта кода тебе опять надо всё вытаскивать всё равно.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 09.12.2022 0:27 · . Предыдущая версия .
Re[2]: Как скачать все зависимости в мавене?
От: vsb Казахстан  
Дата: 09.12.22 01:02
Оценка:
Здравствуйте, ·, Вы писали:

vsb>> Вроде есть специальная команда mvn dependency:go-offline но она тупо не работает как надо — плагины не скачиваются.

·>Сам так не делал, но попробую подкинуть идеи...
·>А ты точно последнюю версию используешь? Если версия maven-dependency-plugin явно не указана в pom.xml, то оно может что-то очень старое использовать.

По дефолту из спринг бута тянется предпоследняя версия, пробовал последнюю, разницы не увидел.

·>Глупый вопрос — а оно точно надо? Может лучше докер volume как кеш m2_repo подключать, чтобы быстрее было? Иначе после каждого апдейта кода тебе опять надо всё вытаскивать всё равно.


Я не думаю, что docker build умеет монтировать вольюмы. Хотя сейчас почитал, вроде что-то подобное есть, RUN --mount, надо поэкспериментировать, спасибо за наводку.

Всё вытаскивать надо не после каждого апдейта кода, а после каждого апдейта pom.xml, что случается реже.

Наверное отказываться от этой техники я не буду, оно у меня всё же работает, просто хотелось бы заменить эту странную конструкцию на какую-то простую и адекватную команду, если таковая существует.
Отредактировано 09.12.2022 1:15 vsb . Предыдущая версия . Еще …
Отредактировано 09.12.2022 1:11 vsb . Предыдущая версия .
Re[3]: Как скачать все зависимости в мавене?
От: · Великобритания  
Дата: 09.12.22 07:46
Оценка:
Здравствуйте, vsb, Вы писали:

vsb> ·>Сам так не делал, но попробую подкинуть идеи...

vsb> ·>А ты точно последнюю версию используешь? Если версия maven-dependency-plugin явно не указана в pom.xml, то оно может что-то очень старое использовать.
vsb> По дефолту из спринг бута тянется предпоследняя версия, пробовал последнюю, разницы не увидел.
А что не дотягивается-то?
Дока говорит, что:
dependency:go-offline tells Maven to resolve everything this project is dependent on (dependencies, plugins, reports) in preparation for going offline.

vsb> ·>Глупый вопрос — а оно точно надо? Может лучше докер volume как кеш m2_repo подключать, чтобы быстрее было? Иначе после каждого апдейта кода тебе опять надо всё вытаскивать всё равно.

vsb> Я не думаю, что docker build умеет монтировать вольюмы. Хотя сейчас почитал, вроде что-то подобное есть, RUN --mount, надо поэкспериментировать, спасибо за наводку.
Тут вроде куча ещё идей:
https://stackoverflow.com/questions/42208442/maven-docker-cache-dependencies

vsb> Всё вытаскивать надо не после каждого апдейта кода, а после каждого апдейта pom.xml, что случается реже.

Ну всё равно... И один кеш можно шарить между проектами.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[4]: Как скачать все зависимости в мавене?
От: vsb Казахстан  
Дата: 09.12.22 11:30
Оценка:
Здравствуйте, ·, Вы писали:

·>А что не дотягивается-то?

·>Дока говорит, что:
·>dependency:go-offline tells Maven to resolve everything this project is dependent on (dependencies, plugins, reports) in preparation for going offline.

Тупо все плагины не дотягиваются. Ну может не все, не знаю, но когда реальный билд начинается — оно ещё кучу всего докачивает.
Re[5]: Как скачать все зависимости в мавене?
От: · Великобритания  
Дата: 09.12.22 11:34
Оценка:
Здравствуйте, vsb, Вы писали:

vsb> ·>А что не дотягивается-то?

vsb> ·>Дока говорит, что:
vsb> ·>dependency:go-offline tells Maven to resolve everything this project is dependent on (dependencies, plugins, reports) in preparation for going offline.
vsb> Тупо все плагины не дотягиваются. Ну может не все, не знаю, но когда реальный билд начинается — оно ещё кучу всего докачивает.
Попробуй поисследовать какой-нибудь конкретный плагин, который докачивается...
Может у тебя там какой-нибудь условный билд или какой-то плагин при выполнении гола что-то тащить начинает.
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[6]: Как скачать все зависимости в мавене?
От: vsb Казахстан  
Дата: 09.12.22 12:04
Оценка:
Здравствуйте, ·, Вы писали:

vsb>> Тупо все плагины не дотягиваются. Ну может не все, не знаю, но когда реальный билд начинается — оно ещё кучу всего докачивает.

·>Попробуй поисследовать какой-нибудь конкретный плагин, который докачивается...
·>Может у тебя там какой-нибудь условный билд или какой-то плагин при выполнении гола что-то тащить начинает.

Да там тупо хелло-ворлд из двух файлов на спринг буте с двумя зависимостями, чего там исследовать. Он базовые плагины не вытаскивает типа clean-plugin, surefire и тд.
Re[7]: Как скачать все зависимости в мавене?
От: · Великобритания  
Дата: 09.12.22 12:26
Оценка:
Здравствуйте, vsb, Вы писали:

vsb> ·>Попробуй поисследовать какой-нибудь конкретный плагин, который докачивается...

vsb> ·>Может у тебя там какой-нибудь условный билд или какой-то плагин при выполнении гола что-то тащить начинает.
vsb> Да там тупо хелло-ворлд из двух файлов на спринг буте с двумя зависимостями, чего там исследовать. Он базовые плагины не вытаскивает типа clean-plugin, surefire и тд.
Может что-то не то с spring boot? У меня вроде что-то такое делает:
$ mvn dependency:go-offline 
[INFO] Scanning for projects...
[INFO] 
[INFO] ---------------------< org.example:record-bulder >----------------------
[INFO] Building record-bulder 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] >>> maven-dependency-plugin:2.8:go-offline (default-cli) > :resolve-plugins @ record-bulder >>>
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:resolve-plugins (resolve-plugins) @ record-bulder ---
[INFO] Plugin Resolved: maven-install-plugin-2.4.jar
[INFO]     Plugin Dependency Resolved: maven-plugin-api-2.0.9.jar
...
[INFO] Plugin Resolved: maven-deploy-plugin-2.7.jar
...
[INFO] Plugin Resolved: maven-jar-plugin-2.4.jar
...
[INFO] Plugin Resolved: maven-compiler-plugin-3.1.jar
...
[INFO] Plugin Resolved: maven-surefire-plugin-2.12.4.jar
[INFO]     Plugin Dependency Resolved: maven-plugin-api-2.0.9.jar
...
avalon/3.0.0
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: Как скачать все зависимости в мавене?
От: hrensgory Россия  
Дата: 12.12.22 16:06
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>В докерфайле. Есть pom.xml надо чтобы скачалось всё. Думаю кто писал тот поймёт.


а чего вы пытаетесь достичь? из прилагаемого докерфайла не вполне понятно
вы хотите собирать билд каждый раз перед запуском приложения вместо того, чтобы положить его в докер репозиторий и запускать уже собранный?

--
WBR,
Serge.
Re[2]: Как скачать все зависимости в мавене?
От: vsb Казахстан  
Дата: 13.12.22 01:11
Оценка:
Здравствуйте, hrensgory, Вы писали:

vsb>>В докерфайле. Есть pom.xml надо чтобы скачалось всё. Думаю кто писал тот поймёт.


H>а чего вы пытаетесь достичь? из прилагаемого докерфайла не вполне понятно

H>вы хотите собирать билд каждый раз перед запуском приложения вместо того, чтобы положить его в докер репозиторий и запускать уже собранный?

Я хочу, чтобы билд собирался в 2 приёма. Сначала собирался слой со всеми зависимостями. Потом собирался слой с приложением. Чтобы, если я меняю исходники, он не скачивал все или часть зависимостей заново. А скачивал зависимости только при изменении pom.xml.
Re: Как скачать все зависимости в мавене?
От: Tourist Россия  
Дата: 03.02.23 19:08
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Вроде есть специальная команда mvn dependency:go-offline но она тупо не работает как надо — плагины не скачиваются.


Это нужно когда ты собираешь свой дистрибутив перед посылкой тому, кто будет уже запускать проект без его сборки. А не для удобства разработки.


vsb>Сейчас я пользуюсь таким костылём:



Это не костыль, так работает мавен. Сделали билд сборку вашего проекта, мавен скачал все что ему нужно и сохранил в .m2.

Чтоб он не лазил за плагинами, зафиксируйте все версии плагинов. Дальше пользуйтесь --offline режимом если тебе так нужно чтоб мавен не куда не лазил.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.