Можно ли сделать первую сборку 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 ...
).