Подтвердить что ты не робот

Добавление maven nexus repo в мой pom.xml

Я установил связь на своей локальной машине. Я хочу, чтобы мой файл pom указывал на это репо. Как добавить свой собственный репозиторий в файл pom.xml?

4b9b3361

Ответ 1

Из Maven - Справка по настройке

Репозитории для загрузки и развертывания определяются элементами repositories и distributionManagement POM. Однако некоторые параметры, такие как имя пользователя и пароль, не должны распространяться вместе с pom.xml. Этот тип информации должен существовать на сервере сборки в файле settings.xml.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
  ...
  <servers>
    <server>
      <id>server001</id>
      <username>my_login</username>
      <password>my_password</password>
      <privateKey>${user.home}/.ssh/id_dsa</privateKey>
      <passphrase>some_passphrase</passphrase>
      <filePermissions>664</filePermissions>
      <directoryPermissions>775</directoryPermissions>
      <configuration></configuration>
    </server>
  </servers>
  ...
</settings>

id: Это идентификатор сервера (а не пользователя для входа в систему), который соответствует элементу id репозитория/зеркала, к которому пытается подключиться Maven.

имя пользователя, пароль: Эти элементы отображаются в виде пары, обозначающей логин и пароль, необходимые для аутентификации на этом сервере.

privateKey, passphrase: Как и предыдущие два элемента, эта пара указывает путь к закрытому ключу (по умолчанию - ${user.home}/.ssh/id_dsa) и парольная фраза, если требуется. Элементы парольной фразы и пароля могут быть вытеснены в будущем, но на данный момент они должны быть установлены в текстовом файле settings.xml.

filePermissions, directoryPermissions: Когда файл хранилища или каталог создается при развертывании, это разрешения на использование. Юридические значения каждого из них представляют собой трехзначное число, отвечающее требованиям к файлам * nix, т.е. 664 или 775.

Примечание.. Если вы используете закрытый ключ для входа на сервер, убедитесь, что вы опускаете этот элемент. В противном случае ключ будет проигнорирован.

Все, что вам нужно, это id, username и password

id и URL должны быть определены в вашем pom.xml следующим образом:

<repositories>
    ...
    <repository>
        <id>acme-nexus-releases</id>
        <name>acme nexus</name>
        <url>https://nexus.acme.net/content/repositories/releases</url>
    </repository>
    ...
</repositories>

Если вам требуется имя пользователя и пароль для вашего сервера, вы должны зашифровать его. Шифрование паролей Maven

Ответ 2

Прежде всего, я очень рекомендую прочитать книгу Nexus. Он объяснит преимущества использования менеджера хранилища Maven.

Существует раздел о том, как настроить свою сборку Maven для использования Nexus:

Это приводит меня к вопросу, почему вы изменяете свой файл POM? Я подозреваю, что вы действительно хотите настроить Nexus как зеркало удаленного репозитория. Это делается в файле настроек Maven.

Далее говорится, что Maven использует Nexus в качестве вашего репозитория по умолчанию (вместо Maven Central)

<settings>
  ..
  ..
  <mirrors>
    <mirror>
      <id>nexus</id>
      <url>http://localhost:8081/nexus/content/groups/public</url>
      <mirrorOf>central</mirrorOf>
    </mirror>
  </mirrors>

Это желаемое поведение, так как ваш репозиторий Nexus настроен на кеширование артефактов, полученных из центра (что хорошо для производительности сборки).

Примечание:

  • "Публичная" группа репозитория может включать в себя другие репозитории, проксированные вашим экземпляром Nexus (не только Maven Central). Вы, вероятно, хотите этого поведения, так как оно централизует управление всеми репозиториями. Это просто делает вашу сборку менее переносимой для людей за пределами вашей организации.

Ответ 3

Кажется, что ответы здесь не поддерживают корпоративный случай использования, когда сервер Nexus имеет несколько пользователей и имеет изолированную (защиту) на основе проекта на основе идентификатора пользователя ALONG с использованием системы автоматической сборки (CI), такой как Jenkins. Вы не сможете создать файл settings.xml для удовлетворения различных идентификаторов пользователей, необходимых для разных проектов. Я не уверен, как это решить, за исключением того, что вы открываете Nexus до анонимного доступа для чтения репозиториев, если только проекты не могут хранить общий идентификатор пользователя для проекта в своем pom.xml.

Ответ 4

Из сайта Apache Maven

<project>
  ...
  <repositories>
    <repository>
      <id>my-internal-site</id>
      <url>http://myserver/repo</url>
    </repository>
  </repositories>
  ...
</project>

"Репозитории для загрузки и развертывания определяются репозиториями и элементами управления распределением POM. Однако некоторые параметры, такие как имя пользователя и пароль, не должны распространяться вместе с pom.xml. Этот тип информации должен существовать на построить сервер в settings.xml." - Сайт Apache Maven - ссылка на настройки

<servers>
    <server>
        <id>server001</id>
        <username>my_login</username>
        <password>my_password</password>
        <privateKey>${user.home}/.ssh/id_dsa</privateKey>
        <passphrase>some_passphrase</passphrase>
        <filePermissions>664</filePermissions>
        <directoryPermissions>775</directoryPermissions>
        <configuration></configuration>
    </server>
</servers>

Ответ 5

Из ссылка для настройки maven, вы не можете поместить свое имя пользователя/пароль в pom.xml

Репозитории для загрузки и развертывания определяются репозиториями и элементами управления распределением POM. Однако некоторые параметры, такие как имя пользователя и пароль, не должны распространяться вместе с pom.xml. Этот тип информации должен существовать на сервере сборки в файле settings.xml.

Вы можете сначала добавить репозиторий в свой pom, а затем добавить имя пользователя/пароль в $MAVEN_HOME/conf/settings.xml:

  <servers>
    <server>
        <id>my-internal-site</id>
        <username>yourUsername</username>
        <password>yourPassword</password>
    </server>
  </servers>

Ответ 6

Если вы не хотите или вы не можете изменить файл settings.xml, вы можете создать новый в своем корневом проекте и вызвать maven, передавая его как параметр с параметром -s:

$ mvn COMMAND ... -s settings.xml