web-dev-qa-db-ja.com

Mavenリリースプラグインgit資格情報

私たちはJenkinsを使用しており、認証なしのファイルベースのgitリポジトリから、httpを介した適切な認証でGitBlitを使用するように切り替えました。

問題は-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>

これを機能させる方法はありますか?これには簡単な標準的な解決策がないので、タスクが単純で非常に一般的であるとは信じられません。

21
Rasmus Franke

docs に基づいて、特別なプロパティproject.scm.idを使用して、適切な settings.xmlファイルのサーバーエントリ

<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>

ところで: 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>
35
khmarbaise