12 ответов:
Вы можете запустить Maven в автономном режиме
mvn -o install. Конечно, любые артефакты, недоступные в локальном репозитории, не будут работать. Maven не основан на распределенных репозиториях, но они, безусловно, делают вещи более бесшовными. Именно по этой причине многие магазины используют внутренние зеркала, которые постепенно синхронизируются с центральными репозиториями.кроме того,
mvn dependency:go-offlineможно использовать, чтобы убедиться, что все ваши зависимости установлены локально, прежде чем вы начнете работать в автономном режиме.
Если у вас есть компьютер с доступом в интернет в локальной сети, необходимо установить локальный репозиторий Maven.
рекомендую Artifactory Open Source. Это то, что мы используем в нашей организации, это действительно легко установить.
Artifactory действует как прокси между вашим инструментом сборки (Maven, Ant, Ivy, Gradle и т. д.) и внешний мир.
Он кэширует удаленные артефакты, так что вам не придется загружать их снова и снова.
он блокирует нежелательные (и иногда чувствительные к безопасности) внешние запросы для внутренних артефактов и контролирует, как и где артефакты развертываются и кем.
после настройки Artifactory вам просто нужно изменить Maven's
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.) внести изменения в настройки.xml добавить в первый тег
<localRepository>C:/Users/admin/.m2/repository</localRepository>2.) используйте тег-o для автономной команды.
mvn -o clean install -DskipTests=true mvn -o jetty:run
Maven нуждается в зависимостях в вашем локальном репозитории. Самый простой способ получить их - это доступ в интернет (или сложнее использовать другие решения, представленные здесь).
таким образом, предполагается, что вы можете получить временный доступ в интернет вы можете подготовиться к работе в автономном режиме с помощью Maven-dependency-plugin С зависимость: go-offline цель. Это загрузит все ваши зависимости проекта в локальный репозиторий (конечно, изменения в зависимостях / плагинах потребуется новый доступ к интернету / центральному репозиторию).
к сожалению
dependency:go-offlineне работает для меня, так как он не кэшируется все, т. е. Файлы POMs и другие неявно упоминают зависимости.обходной путь состоял в том, чтобы указать local repository location внутри С
<localRepository>...</localRepository>илиmvnС
это работает для вас?
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, на ваших машинах.
или
просто используйте серверы репозитория Maven, такие как Sonatype Nexushttp://www.sonatype.org/nexus/ или JFrog Artifactory https://www.jfrog.com/artifactory/.
после того, как один разработчик построит проект, сборка следующими разработчиками или Jenkins CI не потребует доступа в интернет.
сервер репозитория Maven также может иметь прокси-серверы, настроенные для доступа к Maven Central (или более необходимым общедоступным репозитории), и они могут иметь cynch'Ed список артефактов в удаленных репозиториях.
перед переходом в автономный режим вы должны убедиться, что все находится в вашем локальном РЕПО, которое требуется при работе в автономном режиме. Запуск "mvn dependency: go-offline" для проекта(ов)/pom(ов), над которым вы собираетесь работать, сократит усилия по достижению этой цели.
но обычно это не вся история, потому что dependency: go-offline будет загружать только Плагины" голой сборки" (go-offline / resolve-плагины не разрешают все зависимости плагинов). Так что вы должны найти способ загрузки плагинов deploy / test / site (и, возможно, других) и их зависимостей в ваше РЕПО.
кроме того, зависимость: go-offline не загружает сам артефакт poms, поэтому вам нужно зависимость:скопируйте его, если требуется.
иногда - как писал МАДА-вы не знаете, что вам понадобится, находясь в автономном режиме, что делает довольно невозможным иметь "достаточное" РЕПО.
в любом случае, имея правильно заполненное РЕПО, вам нужно только добавить "правдаоффлайн>" настройки знатоки.xml для перехода в автономный режим.
Не изменяйте профиль Maven (id), который вы использовали для заполнения своего РЕПО, находясь в автономном режиме. Maven распознает загруженные артефакты в своих метаданных с помощью "идентификатора", который привязан к идентификатору профиля.
Если вы используете IntelliJ, вы можете просто перейти к предпочтения ->Сборка, Выполнение, Развертывание -> Build Tools ->Maven и установите / снимите флажок работа в автономном режиме.
отвечая на ваш вопрос напрямую: для этого не требуется подключение к интернету, но доступ к репозиторию, по локальной сети или локальному диску (используйте подсказки от других людей, которые размещены здесь).
Если ваш проект не находится в зрелой фазе, это означает, что когда POMs меняются довольно часто, автономный режим будет очень непрактичным, так как вам придется часто обновлять свой репозиторий. Если вы не можете получить копию репозитория, в котором есть все, что вам нужно, но как вы узнаете? Обычно ты запустите репозиторий с нуля, и он постепенно клонируется во время разработки (на компьютере, подключенном к другому репозиторию). Копия документа repo1.maven.org публичный репозиторий весит сотни гигабайт, поэтому я бы тоже не рекомендовал грубую силу.
мой опыт показывает, что опция-o не работает должным образом и что цель go-offline далека от достаточной, чтобы позволить полную автономную сборку:
решение, которое я мог бы проверить, включает в себя использование
--legacy-local-repositoryопция maven, а не-o(offline) один и использование локальный репозиторий вместо репозитория дистрибутивакроме того, я должен был скопировать каждый
maven-metadata-maven2_central.xmlфайлы локального РЕПО вmaven-metadata.xmlформа, ожидаемая maven.смотрите решение, которое я нашел здесь.
Comments