Maven发布插件git凭据

时间:2015-02-02 16:47:46

标签: git maven authentication maven-release-plugin

我们正在使用Jenkins,只是从没有身份验证的基于文件的git repo切换到使用GitBlit通过http进行适当的身份验证。

问题是 - maven应该如何在批处理模式下验证自己

使用-Dusername-Dpassword更新每个作业(从而将密码存储在作业中)似乎不太可行。我已经读过,settings.xml应该通过将git服务器指定为id来使用git,但无论我做什么它都没有效果(即发布插件提示输入凭据)。

的pom.xml:

<properties>
   <project.scm.id>git</project.scm.id>
</properties>
<scm>
   <connection>scm:git:http://myserver:8081/r/gitauthtest.git</connection>
   <developerConnection>scm:git:http://myserver:8081/r/gitauthtest.git</developerConnection>
</scm>

settings.xml内容

<settings>  
   <servers>  
      <server>
         <id>git</id>  
         <username>myUser</username>  
         <password>myPassword</password>  
      </server>   
   </servers>
</settings>

有没有办法让这个工作?我无法相信这项任务既简单又极其普遍,因为它没有一个简单的标准解决方案。

1 个答案:

答案 0 :(得分:29)

根据docs,您必须使用特殊属性project.scm.id来定义相应server entry in your settings.xml file.

的ID
<properties>
  <project.scm.id>my-scm-server</project.scm.id>
</properties>

以及settings.xml文件中的以下内容:

<settings>  
   <servers>  
      <server>
         <id>my-scm-server</id>  
         <username>myUser</username>  
         <password>myPassword</password>  
      </server>   
   </servers>
</settings>

BTW:检查您是否使用最新版本的maven-release-plugin。 project.scm.id增强功能在版本2.3中作为ticket MRELEASE-420的一部分引入。例如,如果您使用的是Maven 3.0.5,那么默认情况下您只使用maven-release-plugin的2.0版本。太老了。通过在POM中添加如下内容来修复:

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>                
            </plugin>
        </plugins>
    </pluginManagement>
</build>