5

自分で作成したアーティファクト用の独自の Maven リポジトリを持ちたいのですが、maven 3 アーティファクトをカスタム サーバーにデプロイしようとすると問題が発生します。これをよりよく説明するために、いくつかの情報を提供します。

  • 私はMaven 3を使用しています
  • 私はEclipseケプラーを使用しています
  • 私はジェンキンスを使用しています
  • リモートサーバーはUbuntu Server 11.04を実行しています
  • Jenkins は Ubuntu サーバーで実行されています
  • ローカル マシンで Windows XP を実行している

私の最初の試みは私のマシンでした。デプロイを行うために Eclipse で Maven を実行すると、すべて正常に動作します。私は自分のプロジェクトpomに以下を追加します

    <build>
           ...
        <extensions>
            <extension>
                <groupId>org.apache.maven.wagon</groupId>
                <artifactId>wagon-ssh-external</artifactId>
                <version>1.0-beta-6</version>
            </extension>
        </extensions>
          ...
      </build>

...

<distributionManagement>
      <repository>
          <id>my server id</id>
          <name>my repository name</name>
          <url>scpexe://my server//path/to/my/repository</url>
      </repository>
  </distributionManagement>

そして、私のsettings.xmlに追加します

<servers>  
      <server>  
          <id>my server id</id>  
         <username>server username</username>   
         <password>server password</password> 

         <configuration>
             <sshExecutable>plink</sshExecutable>
             <scpExecutable>pscp</scpExecutable>
         </configuration>  

     </server>  
 </servers>  

したがって、私のローカル マシンでは動作しますが、Jenkins を使用してこの動作を取得する必要があります。Jenkins の settings.xml を変更しました。これは Linux で実行されるため、sshExecutable は必要ありません。Jenkins の settings.xml は次のようになります。

<servers>  
      <server>  
          <id>my server id</id>  
         <username>server username</username>   
         <password>server password</password> 

     </server>  
 </servers>  

次に、scpexeではなくscpのみを実行するようにpom.xmlを変更しました

<distributionManagement>
      <repository>
          <id>my server id</id>
          <name>my repository name</name>
          <url>scp://my server//path/to/my/repository</url>
      </repository>
  </distributionManagement>

しかし、このページhttps://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notesによると、 maven 3 は scp をサポートしていません。任意の方法で実行すると、Jenkins ログから次のエラー メッセージが表示されました

mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project myproject: Failed to deploy artifacts/metadata: No connector available to access repository my_repository (scp://my server//path/to/my/repository) of type default using the available factories WagonRepositoryConnectorFactory
cause : Failed to deploy artifacts/metadata: No connector available to access repository my_repository (scp://my server//path/to/my/repository) of type default using the available factories WagonRepositoryConnectorFactory
Stack trace : 

scp の代わりに scpexe を使用すると、別のエラー メッセージが表示される

mavenExecutionResult exceptions not empty
message : Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project pruebanueva: Failed to deploy artifacts: Could not transfer artifact {$groupId}:{$artifactId}:{$package}:{$version} from/to my_repository (scpexe://my server//path/to/my/repository): Error executing command for transfer
cause : Failed to deploy artifacts: Could not transfer artifact {$groupId}:{$artifactId}:{$package}:{$version} from/to my_repository (scpexe://my server//path/to/my/repository): Error executing command for transfer
Stack trace : 

私が展開できる唯一の方法は、2つのステップで実行することでした

  1. インストールの目標だけを作成するように Jenkins を構成する
  2. コマンドラインから次のコマンドを実行する

mvn deploy:deploy-file -DgroupId=$groupId -DartifactId=$artifactId -Dversion=$version -Dpackaging=jar -Dfile=path/to/file.jar -Durl=scp://my server//path/to/ my/repository -DrepositoryId=私のリポジトリ ID

そのコマンドを Jenkins の目標に書き込むなど、多くのことを試しましたが、Jenkins で scp コマンドを使用するたびにビルドが失敗します。

この問題を解決する方法についてのアイデアをいただければ幸いです。

4

2 に答える 2

0

Verhagenの答えは正しいですが、より純粋なmavenソリューションはこれです: https://stackoverflow.com/a/3303525/1881318

于 2013-12-12T16:06:30.587 に答える