Maven release plugin git credentials

Rasmus Franke picture Rasmus Franke · Feb 2, 2015 · Viewed 26.7k times · Source

We are using Jenkins and just switched from a file based git repo without authentication to using GitBlit with proper authentication over http.

The problem is - how is maven supposed to authenticate itself in batch mode?

Updating each job with -Dusername and -Dpassword (and thus storing the password in the jobs) doesn't seem very feasible. I've read that settings.xml is supposed to work with git by specifying the git server as the id, but whatever I do it has no effect (i.e the release plugin prompts for credentials).

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 contents

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

Is there any way to get this working? I cannot believe that a task as simple and extremely common as this doesn't have an easy standard solution.

Answer

khmarbaise picture khmarbaise · Feb 2, 2015

Based on the docs you have to use a special property, project.scm.id, to define the id of the appropriate server entry in your settings.xml file.

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

And the following in your settings.xml file:

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

BTW: Check if you are using the most recent version of maven-release-plugin. The project.scm.id enhancement was introduced in version 2.3 as part of ticket MRELEASE-420. For example if you are using Maven 3.0.5 then you are by default only using version 2.0 of the maven-release-plugin. Much too old. Fix by adding something like below to your 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>