может ли первая сборка maven быть сделана в автономном режиме - PullRequest
3 голосов
/ 19 января 2012

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

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

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

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

Ответы [ 3 ]

9 голосов
/ 19 января 2012

В 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
1 голос
/ 19 января 2012

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

0 голосов
/ 03 января 2017

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

...