我正在使用nexus为这个场景生成maven settings.xml:
两者都进入了我的小组,我有一个角色,允许用户对我的小组进行讨论。
因此,在settings.xml中定义了服务器,id为my-group,它是相应的user和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中提供的服务器身份验证仅适用于为存储库组定义的读取,视图方法?
当然,如果我添加指向每个存储库id的服务器(不在配置文件中添加这些存储库,只保留my-group),则部署可以正常工作。
我的想法是使用存储库组身份验证提供更简单的settings.xml,避免为每个服务器(repo)设置密码,因为它是同一个用户。
答案 0 :(得分:0)
听起来你错过了pom.xml或settings.xml文件中的<distributionManagement>
节。如果要将工件部署到repo,则需要这样做。
请注意,您在<servers>
节中的settings.xml文件中定义的凭据适用于存储库,pluginRepositories和配置。你只需要添加额外的东西 - 例如,这里是我们用作所有Maven项目的父级的标准pom:
<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>
答案 1 :(得分:0)
只要处于不同的上下文中,您就可以对所有服务器使用相同的ID。我建议使用distributionManagement进行发布和快照部署,并使用相同的id。
为了阅读jars,我只会引用您添加发行版和快照存储库的公共组。然后,settings.xml将与“使用Nexus进行存储库管理”一书中的内容完成:
http://books.sonatype.com/nexus-book/reference/maven-sect-single-group.html