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



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

1433   12  

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 публичный репозиторий весит сотни гигабайт, поэтому я бы тоже не рекомендовал грубую силу.

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

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

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

кроме того, я должен был скопировать каждый maven-metadata-maven2_central.xml файлы локального РЕПО в maven-metadata.xml форма, ожидаемая maven.

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

Comments

    Ничего не найдено.