Authentication Maven服务器身份验证作为配置文件属性

Authentication Maven服务器身份验证作为配置文件属性,authentication,maven-2,settings,profiles,Authentication,Maven 2,Settings,Profiles,我正在尝试在生成服务器上设置共享身份验证系统。 我们有几个maven项目,它们声明了应该如何针对我们拥有的不同团队进行部署(每个团队都有自己的身份验证用户/密码): 如果通过使用团队的用户/密码替换属性来修改服务器身份验证,则一切正常 标签不接受值作为属性吗 其他人如何设置他们的构建系统以实现同样的目标 谢谢你的帮助 编辑:我正在使用hudson,我的一个解决方案是安装多次maven2,为每个团队提供重复设置(用户/密码除外),并将每个项目与良好的maven安装联系起来。我必须承认,这个解决方案

我正在尝试在生成服务器上设置共享身份验证系统。 我们有几个maven项目,它们声明了应该如何针对我们拥有的不同团队进行部署(每个团队都有自己的身份验证用户/密码):

如果通过使用团队的用户/密码替换属性来修改服务器身份验证,则一切正常

标签不接受值作为属性吗

其他人如何设置他们的构建系统以实现同样的目标

谢谢你的帮助


编辑:我正在使用hudson,我的一个解决方案是安装多次maven2,为每个团队提供重复设置(用户/密码除外),并将每个项目与良好的maven安装联系起来。我必须承认,这个解决方案并没有让我着迷……

首先,我不知道dep-team1配置文件是如何连接到distributionManagement标签的——它似乎需要发布配置文件才能激活

其次,我的profile元素的结构有点不同(请参阅,其中没有distributionManagement标记)。不确定这是否有区别

<profile>
  <id>release-profile</id>
  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
    </repository>
  </repositories>
</profile>

发布配置文件
中心的
http://central
真的
真的
以下是分发管理:

<project>
   <distributionManagement>

    <repository>
      <id>releases</id>
      <url>http://myurl/releases</url>
    </repository>

    <snapshotRepository>
      <id>snapshots</id>
      <url>http://myurl/snapshots</url>
    </snapshotRepository>

  </distributionManagement>
</project>

释放
http://myurl/releases
快照
http://myurl/snapshots

如果您有多个团队,因此有多个身份验证方案,最简单、最直接的方法就是在distributionManagement中使用不同的id。因此,您可以使用team1 repo/team2 repo,而不是rep releases/rep Snapshot(在发布和Snapshot之间分离身份验证通常没有价值……特别是如果您使用具有良好安全控制的

然后在构建机器的设置中,只需为构建服务器的每个团队定义一个用户和密码

这种方法确实有一个缺点,即如果您在单个公司pom中定义回购协议,它将破坏继承性……但如果您有一个团队级pom,这将很容易


另一个想法是,为什么同一台构建机器在进行构建时需要以另一个人的身份登录?那台构建机器不应该拥有大部分的完全访问权限吗?

1。如果您不使用maven交付您的项目,那么您当然不需要任何distributionManagement标记。2.当然,在我的交付过程中,所有必需的配置文件都被激活。我确实使用maven交付我的项目,而且它工作正常。起初我也有同样的“错误部署工件”错误,但后来我发现了。我的distributionManagement元素不是概要文件的一部分,而是项目的一部分(顺便说一句,这更符合逻辑)。我们公司有数百个项目,几个研发项目遍布世界各地,因此概要文件中的设置简化了团队之间的共享。但是,所有这些都有助于正确解析服务器登录/传递属性。没错,Brian,实现我们所希望的最简单的方法可能是授予生成机器完全权限,至少可以提供给所有快照repo。每个团队都有自己的证书来发布。我想我们会走这条路。谢谢
<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>
Error deploying artifact: Failed to transfer file: http://......./my-project-0.2-20090423.123247-3.pom. Return code is: 401
<profile>
  <id>release-profile</id>
  <repositories>
    <repository>
      <id>central</id>
      <url>http://central</url>
      <releases><enabled>true</enabled></releases>
      <snapshots><enabled>true</enabled></snapshots>
    </repository>
  </repositories>
</profile>
<project>
   <distributionManagement>

    <repository>
      <id>releases</id>
      <url>http://myurl/releases</url>
    </repository>

    <snapshotRepository>
      <id>snapshots</id>
      <url>http://myurl/snapshots</url>
    </snapshotRepository>

  </distributionManagement>
</project>