Как настроить Maven для автономной разработки?

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

Ответ 1

Вы можете запустить maven в автономном режиме mvn -o install. Конечно, любые артефакты, недоступные в вашем локальном репозитории, потерпят неудачу. Maven не основывается на распределенных репозиториях, но они, безусловно, делают вещи более плавными. По этой причине многие магазины используют внутренние зеркала, которые постепенно синхронизируются с центральными репозиториями.

Кроме того, mvn dependency:go-offline можно использовать для обеспечения того, чтобы все ваши зависимости были установлены локально, прежде чем вы начнете работать в автономном режиме.

Ответ 2

Если у вас есть компьютер с доступом в Интернет в вашей локальной сети, вы должны установить локальный репозиторий Maven.

Я рекомендую Artifactory Open Source. Это то, что мы используем в нашей организации, его очень легко настроить.

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>

Мы использовали это решение, потому что у нас были проблемы с доступом в Интернет в наших машинах разработки, а некоторые артефакты загружали поврежденные файлы или вообще не загружались. С тех пор у нас не было проблем.

Ответ 3

У вас есть два варианта:

1.) внести изменения в settings.xml добавить это в первый тег

<localRepository>C:/Users/admin/.m2/repository</localRepository>

2.) используйте тег -o для автономной команды.

mvn -o clean install -DskipTests=true
mvn -o jetty:run

Ответ 4

Maven нуждается в зависимостях в вашем локальном репозитории. Самый простой способ получить их - доступ в Интернет (или более сложное использование других решений, представленных здесь).

Предположим, что вы можете временно получить доступ к Интернету, который вы можете подготовить для выхода в автономный режим, используя maven-dependency-plugin с его зависимость: go-offline. Это загрузит все зависимости вашего проекта к вашему локальному репозиторию (конечно, изменения в зависимостях/плагинах потребуют нового доступа к Интернету/центральному репозиторию).

Ответ 5

К сожалению dependency:go-offline не работал у меня, так как он не кэшировался все, т.е. POMs и другие неявно упоминают зависимости.

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

Ответ 6

Перед выходом в автономный режим вы должны убедиться, что все в вашем локальном репо, которое требуется при работе в автономном режиме. Запуск "mvn dependency: go-offline" для проекта (ов)/pom (s), который вы намереваетесь продолжить, уменьшит усилия для достижения этого.

Но это, как правило, не вся история, потому что зависимость: go-offline будет загружать только плагины "голая сборка" (go-offline/resolve-plugins не разрешает всех зависимостей плагина). Таким образом, вам нужно найти способ загрузки плагинов развертывания/тестирования/сайта (и, возможно, других) и их зависимостей в ваше репо.

Кроме того, зависимость: go-offline не загружает сам артефакт pom'а, поэтому вы должны зависеть: скопируйте его, если потребуется.

Иногда, как писал MaDa, вы не знаете, что вам нужно, находясь в автономном режиме, что делает невозможным "достаточное" репо.

В любом случае, если у вас правильно заполнено репо, вам нужно добавить "<offline> true </offline> " к настройкам Maven's.xml для выхода в автономный режим.

Не меняйте профиль Maven (id), который использовался для заполнения вашего репо, находясь в автономном режиме. Maven распознает загруженные артефакты в своих метаданных с "идентификатором", который связан с идентификатором профиля.

Ответ 7

Это работает для вас?

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, на ваших машинах.

Ответ 8


(источник: jfrog.com)

или

Просто используйте серверы репозитория Maven, такие как Sonatype Nexus http://www.sonatype.org/nexus/ или JFrog Artifactory https://www.jfrog.com/artifactory/.

После того, как один разработчик создаст проект, сборка следующих разработчиков или Jenkins CI не потребует доступа в Интернет.

Сервер репозитория Maven также может иметь прокси-серверы, сконфигурированные для доступа к Maven Central (или более необходимых общедоступных репозиториев), и они могут иметь cynch'-список артефактов в удаленных репозиториях.

Ответ 9

Если вы используете IntelliJ, вы можете просто перейти в Настройки Сборка, выполнение, развертывание Инструменты сборки Maven и установите/снимите флажок Работа в автономном режиме.

Ответ 10

Ответ на ваш вопрос напрямую: для него не требуется подключение к Интернету, но доступ к репозиторию на локальном или локальном диске (используйте подсказки от других людей, которые разместили здесь).

Если ваш проект не в зрелом возрасте, это означает, что когда POM меняются довольно часто, автономный режим будет очень непрактичным, так как вам также придется часто обновлять свой репозиторий. Если вы не можете получить копию репозитория, в котором есть все, что вам нужно, но как вы узнаете? Обычно вы запускаете репозиторий с нуля, и он постепенно клонируется во время разработки (на компьютере, подключенном к другому репозиторию). Копия публичного репозитория repo1.maven.org весит сотни гигабайт, поэтому я бы тоже не рекомендовал грубую силу.

Ответ 11

При подготовке к работе в автономном режиме просто запустите mvn dependency:go-offline

Ответ 12

Мой опыт показывает, что опция -o не работает должным образом и что цель в оффлайне далеко не достаточна для полной автономной сборки:

Решение, которое я могу проверить, включает использование опции --legacy-local-repository maven, а не -o (offline) и использование локального репозитория вместо репозитория

Кроме того, мне пришлось копировать все maven-metadata-maven2_central.xml файлы локального репо в форму maven-metadata.xml, ожидаемую maven.

См. решение, которое я нашел здесь.