Sonatype Nexus: как установить учетные данные одного сервера для нескольких репозиториев в настройках maven.в XML?
У нас есть несколько репозиториев в Nexus (т. е. выпуски, моментальный снимок и сайт). Все 3 репозитория находятся в общедоступной группе, и пользователи используют одинаковые учетные данные для доступа ко всем этим репозиториям. Предоставление того же имени пользователя и пароля в настройках.xml для каждого репозитория делает его избыточным и трудно поддерживать их.
Не могли бы вы предложить элегантный способ описания учетных данных одного сервера для всех 3 репозиториев?
любая помощь значительно оцененный.
мы используем maven 2.2.1 и Nexus OSS 2.7.1
вот мои настройки.в XML
<settings>
<servers>
<server>
<id>snapshot</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>release</id>
<username>deployment</username>
<password>deployment123</password>
</server>
<server>
<id>site</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built in central repo to direct -->
<!--all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<!--make the profile active all the time -->
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
3 ответов
просто используйте одну запись в настройках.xml, как это
<server>
<id>nexus</id>
<username>deployment</username>
<password>deployment123</password>
</server>
а затем в distributionManagement в вашем pom.xml вы используете что-то вроде этого
<distributionManagement>
<repository>
<id>nexus</id>
<name>Nexus Releases</name>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>nexus</id>
<name>Nexus Snapshot</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
для полностью рабочей установки с этим взглядом на Nexus книга примеры проекта, которые используются в руководстве судебного разбирательства. Конечно, вы можете добавить сайт с тем же идентификатором. Имейте в виду, что нет никаких проблем, если id;s такие же, как они просто детализируют идентификатор серверного элемента в параметры для поиска и не являются элементом id для репозитория. Имхо это должно называться serverId или что-то более ясное, но это другая история.
Не решение, а обходной путь:
настройки.xml будет обрабатывать системные свойства и переменные среды. Поэтому, если вы не беспокоитесь о том, чтобы поместить данные аутентификации сервера в сценарий или в свою среду, вы можете придерживаться трех учетных данных сервера, но устранить необходимость обновления всех трех из них в пользу обновления вашего сценария или сред (я привел примеры для обоих вариантов в этом фрагменте):
<servers>
<server>
<id>releases</id>
<username>${env.NEXUS_USERNAME}</username> <!-- Env var -->
<password>${nexus.password}</password> <!-- System (-D) var -->
</server>
<server>
<id>snapshots</id>
<username>${env.NEXUS_USERNAME}</username> <!-- Env var -->
<password>${nexus.password}</password> <!-- System (-D) var -->
</server>
<server>
<id>site</id>
<username>${env.NEXUS_USERNAME}</username> <!-- Env var -->
<password>${nexus.password}</password> <!-- System (-D) var -->
</server>
</servers>
к сожалению там нет <properties>
элемент поддерживается в настройках.в XML!
в сторону: maven уже обрабатывает моментальные снимки и выпускает репозитории в nexus, и это лучший способ сделать что-то. Ваши опубликованные настройки.xml даже позволяет их уже. Зачем нужны отдельные записи репозитория для моментальных снимков и выпусков?
похоже, вы ошибаетесь. Данные учетные данные и id предназначены для управления распределением, а не для доступа к Nexus в этом случае. Кроме того, вам нужно три разных имени пользователя, комбинации паролей, потому что у вас есть три возможных вещи выпускает, снимки и сайт. Так что ничего страшного.
Aprt из этого я бы предложил обновить Maven в Maven 3.X линия причина Maven 2.2.1 немного из дата.