Требуется ли в какой-то момент maven подключение к Интернету, чтобы использовать его? Имеется в виду, что специально получить внутренние плагины maven для компиляции, очистки, упаковки и т. Д.?
Требуется ли в какой-то момент maven подключение к Интернету, чтобы использовать его? Имеется в виду, что специально получить внутренние плагины maven для компиляции, очистки, упаковки и т. Д.?
Ответы:
Вы можете запустить maven в автономном режиме mvn -o install
. Конечно, любые артефакты, недоступные в вашем локальном репозитории, не сработают. Maven не основан на распределенных репозиториях, но они, безусловно, упрощают работу. По этой причине многие магазины используют внутренние зеркала, которые постепенно синхронизируются с центральными репозиториями.
Кроме того, с mvn dependency:go-offline
его помощью можно убедиться, что все ваши зависимости установлены локально, прежде чем вы начнете работать в автономном режиме.
mvn dependency:go-offline
просто все не улавливает. Например, внутри новой виртуальной машины мой проект все еще должен загружать что-то даже после выполнения этой цели. См. Также этот выпуск .
Если у вас есть компьютер с доступом в Интернет в вашей локальной сети, вам следует установить локальный репозиторий Maven.
Я рекомендую Artifactory с открытым исходным кодом . Это то, что мы используем в нашей организации, его действительно легко настроить.
Artifactory действует как посредник между вашим инструментом сборки (Maven, Ant, Ivy, Gradle и т. Д.) И внешним миром.
Он кэширует удаленные артефакты, чтобы вам не приходилось загружать их снова и снова.
Он блокирует нежелательные (а иногда и чувствительные к безопасности) внешние запросы на внутренние артефакты и контролирует, как и где развертываются артефакты и кем.
После настройки Artifactory вам просто нужно изменить Maven settings.xml
на машинах разработки:
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
Мы использовали это решение, потому что у нас были проблемы с доступом в Интернет на наших машинах для разработки, и некоторые артефакты загружали поврежденные файлы или не загружались вообще. С тех пор у нас не было проблем.
Для этого есть два варианта:
1.) внести изменения в settings.xml, добавить это в первый тег
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2.) используйте тег -o для автономной команды.
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Maven нужны зависимости в вашем локальном репозитории. Самый простой способ получить их - использовать доступ в Интернет (или сложнее использовать другие решения, представленные здесь).
Предполагая, что вы можете получить временный доступ в Интернет, вы можете подготовиться к отключению с помощью maven-dependency-plugin с его целью dependency: go-offline . Это загрузит все зависимости вашего проекта в ваш локальный репозиторий (конечно, для изменения зависимостей / плагинов потребуется новый доступ к Интернету / центральному репозиторию).
К сожалению
dependency:go-offline
, у меня не сработало, так как не все кэшировалось, т.е. Файлы POM и другие неявно упоминают зависимости.
Обходной путь был указать локальное расположение хранилища , либо в settings.xml
файл с <localRepository>...</localRepository>
или запустив mvn
с -Dmaven.repo.local=...
параметром. После первоначальной сборки проекта все необходимые артефакты должны быть кэшированы, а затем вы можете ссылаться на местоположение репозитория такими же способами при запуске сборки Maven в автономном режиме ( mvn -o ...
).
Перед тем, как перейти в автономный режим, вы должны убедиться, что все находится в вашем локальном репо, что требуется при работе в автономном режиме. Запуск "mvn dependency: go-offline" для проекта (ов) / pom (ов), над которым вы собираетесь работать, уменьшит усилия для достижения этой цели.
Но обычно это еще не все, потому что dependency: go-offline будет загружать только плагины «голой сборки» ( go-offline / resolve-plugins не разрешает все зависимости плагинов ). Поэтому вам нужно найти способ загрузить плагины развертывания / тестирования / сайта (и, возможно, другие) и их зависимости в свое репо.
Более того, dependency: go-offline не загружает сам артефакт pom, поэтому вы должны использовать зависимость: скопируйте его, если требуется.
Иногда - как писал MaDa - вы не знаете, что вам понадобится, находясь в автономном режиме, что делает практически невозможным наличие «достаточного» репо.
В любом случае, имея правильно заполненное репо, вам нужно только добавить «<offline> true </offline>» в Maven settings.xml, чтобы перейти в автономный режим.
Не меняйте профиль Maven (id), который вы использовали для заполнения репо, находясь в автономном режиме. Maven распознает загруженные артефакты в своих метаданных по «идентификатору», который привязан к идентификатору профиля.
Если вы используете IntelliJ, вы можете просто перейти в « Настройки» -> « Сборка, выполнение, развертывание» -> « Инструменты сборки» -> Maven и установить / снять флажок « Работать в автономном режиме» .
Это работает для вас?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
Не забудьте добавить его в репозиторий плагинов и указать URL-адрес, где бы ни находился ваш репозиторий.
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
В противном случае вам может потребоваться запустить локальный сервер, например apache, на ваших машинах.
(источник: jfrog.com )
или
Просто используйте серверы репозитория Maven, такие как Sonatype Nexus http://www.sonatype.org/nexus/ или JFrog Artifactory https://www.jfrog.com/artifactory/ .
После того, как один разработчик построит проект, для его сборки следующими разработчиками или Jenkins CI не потребуется доступ в Интернет.
Сервер репозитория Maven также может иметь прокси, настроенные для доступа к Maven Central (или другим необходимым общедоступным репозиториям), и у них может быть синхронизированный список артефактов в удаленных репозиториях.
Мой опыт показывает, что опция -o не работает должным образом и что цель перехода в автономный режим далеко не достаточна для обеспечения полной автономной сборки:
Решение, которое я мог проверить, включает использование --legacy-local-repository
опции maven, а не -o
(автономной), и использование локального репозитория вместо репозитория распространения.
Кроме того, мне пришлось скопировать все maven-metadata-maven2_central.xml
файлы локального репо в maven-metadata.xml
форму, ожидаемую maven.
См. Решение, которое я нашел здесь .
Отвечая на ваш вопрос напрямую: для этого не требуется подключение к Интернету, но требуется доступ к репозиторию в локальной сети или на локальном диске (используйте подсказки от других людей, которые разместили здесь).
Если ваш проект не находится на стадии зрелости, это означает, что когда POM меняются довольно часто, автономный режим будет очень непрактичным, так как вам также придется довольно часто обновлять свой репозиторий. Если только вы не можете получить копию репозитория, в котором есть все, что вам нужно, но откуда вы знаете? Обычно вы запускаете репозиторий с нуля, и он постепенно клонируется во время разработки (на компьютере, подключенном к другому репозиторию). Копия публичного репозитория repo1.maven.org весит сотни гигабайт, поэтому я бы также не рекомендовал использовать грубую силу.
Появился новый плагин для исправления недостатков mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
Добавьте его в свой pom, затем бегите mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. После того, как вы настроите все динамические зависимости, maven больше не будет пытаться загружать что-либо (пока вы не обновите версии).
<offline> false </offline>
<localRepository>${user.home}/.m2/repository</localRepository>
в
<offline> true <offline>
<localRepository>${user.home}/.m2/repository</localRepository>
Измените автономный тег с false на true.
скачаю из репо онлайн