我正在尝试在构建服务器上设置共享身份验证系统。我们有几个 maven 项目,它们声明了应该如何针对我们拥有的不同团队进行部署(每个团队都有自己的身份验证用户/密码):
<profile>
<id>release-profile</id>
<distributionManagement>
<repository>
<id>rep-releases</id>
<name>rep-releases</name>
<url>http://somewhere-releases</url>
</repository>
<snapshotRepository>
<id>rep-snapshots</id>
<name>rep-snapshots</name>
<url>http://somewhere-snapshots</url>
</snapshotRepository>
</distributionManagement>
</profile>
然后我在 settings.xml 中声明对声明的服务器的身份验证如下:
<servers>
<server>
<id>rep-releases</id>
<username>${release.user.name}</username>
<password>${release.user.password}</password>
</server>
<server>
<id>rep-snapshots</id>
<username>${release.user.name}</username>
<password>${release.user.password}</password>
</server>
</servers>
最后,根据我要部署的项目,我在构建服务器的 settings.xml 中定义了几个配置文件:
<profile>
<id>dep-team1</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<properties>
<release.user.name>team1-user</release.user.name>
<release.user.password>team1-password</release.user.password>
</properties>
</profile>
问题是,在部署项目时,我遇到了如下的身份验证错误(HTTP 401):
Error deploying artifact: Failed to transfer file: http://......./my-project-0.2-20090423.123247-3.pom. Return code is: 401
如果我通过将属性替换为团队的用户/密码来修改服务器身份验证,则一切正常。
标签 <servers><server> 不接受值作为属性吗?
其他人如何设置他们的构建系统以实现相同的目标?
谢谢你的帮助。
编辑:我正在使用 hudson,我的解决方案可以是安装多次 maven2 并为每个团队设置重复的设置(用户/密码除外),并将每个项目与良好的 maven 安装联系起来。我必须承认这个解决方案不会让我着迷......