Аутентификация группы репозиториев в файле settings.xml - PullRequest
2 голосов
/ 25 ноября 2011

Я создаю maven settings.xml для этого сценария с помощью nexus:

  • my-release-repo
  • my-snapshots-repo

и в my-group, и у меня есть роль, которая позволяет пользователю заходить в my-group.

Таким образом, в файле settings.xml определяется сервер с идентификатором my-group и соответствующим пользователем.и passwd.Конечно, хранилище также определяется как активный профиль, как это:

<repositories>
   <repository>
      <id>my-group</id>
      <releases>
         <enabled>true</enabled>
         <checksumPolicy>warn</checksumPolicy>
      </releases>
      <snapshots>
         <enabled>true</enabled>
         <updatePolicy>always</updatePolicy>
         <checksumPolicy>warn</checksumPolicy>
      </snapshots>
      <url>http://my.nexus.corp/content/groups/my-group</url>
   </repository>

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

Наконец, вопрос в том, что аутентификация сервера в файле settings.xml применяется только для чтения, просмотра методов, когда она определена для группы репозиториев?

Конечно, если я добавлю серверы, указывающие на каждый идентификатор репозитория (без добавления этих репозиториев в профиль, сохраняя только my-group), развертывание будет работать.

Моя идея состоит в том, чтобы предоставить более простойsettings.xml, используя аутентификацию группы репозиториев, избегая установки пароля для каждого сервера (репо), потому что это один и тот же пользователь.

Ответы [ 2 ]

0 голосов
/ 25 июня 2013

Вы можете использовать один и тот же идентификатор для всех серверов, если они находятся в другом контексте. Я бы предложил использовать distributionManagement для выпуска и развертывания моментальных снимков с одинаковым идентификатором.

А для чтения jar-файлов я бы просто сослался на общедоступную группу, в которую вы добавляете свои репозитории релизов и снимков. Тогда файл settings.xml будет выглядеть так же, как в книге «Управление репозиторием с помощью Nexus»:

http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html

0 голосов
/ 10 февраля 2012

Похоже, вы пропустили раздел <distributionManagement> в файле pom.xml или settings.xml.Это необходимо, если вы хотите развернуть артефакты в своем репо.

Обратите внимание, что учетные данные, которые вы определяете в файле settings.xml в разделе <servers>, предназначены как для репозиториев, так и для pluginRepositories и конфигурации.Вам просто нужно добавить дополнительный материал - например, вот мой стандартный pom, который мы используем в качестве родителя для всех наших проектов Maven:

<repositories>
    <!-- WARNING: If you change the Id of ANY of these repos, you will need to update every settings.xml
        file on every machine including the Hudson CI server. -->
    <!-- NOTE: All of these repositories use externally accessible URLs, but you can override with LAN
        URLs by configuring mirrors in settings.xml -->
    <repository>
        <id>mycorp-release</id>
        <name>Nexus repository for artifact releases</name>
        <url>https://intranet.mycorp.com/nexus/content/repositories/releases</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
    <repository>
        <id>mycorp-snapshot</id>
        <name>Nexus repository for artifact SNAPSHOTs</name>
        <url>https://intranet.mycorp.com/nexus/content/repositories/snapshots</url>
        <releases>
            <enabled>false</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>
<pluginRepositories>
    <pluginRepository>
        <id>mycorp-plugin-release</id>
        <name>Nexus repository for plugin artifact releases</name>
        <url>https://intranet.mycorp.com/nexus/content/repositories/releases</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </pluginRepository>
</pluginRepositories>
<distributionManagement>
    <repository>
        <!-- Where to put released artifacts -->
        <id>mycorp-release</id>
        <name>Nexus release artifact deployment repository</name>
        <url>https://intranet.mycorp.com/nexus/content/repositories/releases</url>
    </repository>
    <snapshotRepository>
        <!-- Where to put snapshot artifacts -->
        <id>mycorp-snapshot</id>
        <name>Nexus snapshot artifact deployment repository</name>
        <url>https://intranet.mycorp.com/nexus/content/repositories/snapshots</url>
    </snapshotRepository>
</distributionManagement>
...