Можно ли сделать первую сборку maven в автономном режиме?

Проблема: у вас есть дистрибутив Java-проекта в формате zip, который зависит от нескольких библиотек, таких как spring-core, spring-context, jacskon, testng и slf4j. Задача состоит в том, чтобы сделать эту вещь работоспособной в автономном режиме. Можно создать локальное репо с областью проекта со всеми необходимыми библиотеками.

Я пытался сделать это. Похоже, даже если проект содержит jar-файлы, необходимые для javac и времени выполнения, сборка все равно требует доступа к Интернету. Maven все равно будет скрываться в сети, чтобы получить большинство собственных плагинов, необходимых для сборки. Я предполагаю, что maven запускается с пустым каталогом.m2 (так как это может быть первый запуск сборки, которая может быть автономной сборкой). Нет, я не согласен с тем, чтобы распространять полный снимок репозитория Maven по самому проекту, так как для меня это выглядит полным беспорядком.

Немного отступления: более широкая задача состоит в создании дистрибутива JDK/IntelliJ Idea в стиле Windows для переноса, который идет по проекту и допускает некоторое минимальное кодирование / запуск Java в IDE с минимальной конфигурацией и минимальным доступом в Интернет. Проект ориентирован на учащихся компьютерных классов, практически не контролирующих конфигурацию системы. Желательно сохранить систему сборки консоли в автономном режиме, но я предполагаю, что maven чрезмерно зависит от сети, поэтому я должен отказаться от нее в пользу старого доброго муравья.

Итак, что вы думаете, могли бы мы полностью переместить первую сборку Maven в автономном режиме? У меня такое ощущение, что первоначальный дистрибутив maven просто содержит минимум, необходимый для извлечения основных плагинов из основного репо, и не полностью функционален, хотя бы один раз не увидев основной репо.

3 ответа

Решение

У Maven есть ключ -o, который позволяет вам создавать в автономном режиме:

 -o,--offline                           Work offline

Конечно, вам нужно, чтобы ваши зависимости уже кэшировались в вашем $HOME/.m2/repository для этого строить без ошибок. Вы можете загрузить зависимости с помощью:

mvn dependency:go-offline

Я попробовал этот процесс, и он, кажется, не работает полностью. Я сделал:

rm -rf $HOME/.m2/repository
mvn dependency:go-offline       # lot of stuff downloaded
# unplugged my network
# develop stuff
mvn install                     # errors from missing plugins

Что сработало, однако:

rm -rf $HOME/.m2/repository
mvn install                     # while still online
# unplugged my network
# develop stuff
mvn install

Вы можете запустить maven dependency: go-offline на новом репозитории.m2 для соответствующего проекта. Это должно загрузить все, что Maven должен иметь возможность работать в автономном режиме. Если их затем поместить в локальное хранилище проекта, вы сможете добиться того, чего хотите. Я не пробовал это все же

Укажите местное хранилище, либо в settings.xml файл с <localRepository>...</localRepository> или бегом mvn с -Dmaven.repo.local=... параметр. После первоначальной сборки проекта все необходимые артефакты должны кэшироваться локально, и вы можете ссылаться на это местоположение хранилища такими же способами, пока выполняете другие сборки Maven в автономном режиме (mvn -o ...).

Другие вопросы по тегам