Maven3でWebDavでjarをdeploy:deploy-fileしたら失敗する件

■ 事象
長いこと放ったらかしてた資産に不具合が見つかって修正版のjarファイルを
社内のMavenリポジトリにデプロイしようとしたら、BUILD FAILUREになってしまい、
-eと-Xでスタックトレースとデバッグログをフルフルで出したら、以下のようなアウトプットが出てきました。
 
そんな要素がないとか。

[DEBUG] java.util.NoSuchElementException
      role: org.apache.maven.wagon.Wagon
  roleHint: dav
org.codehaus.plexus.component.repository.exception.ComponentLookupException: java.util.NoSuchElementException
      role: org.apache.maven.wagon.Wagon
  roleHint: dav
        at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:247)
        at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:235)

 
リモートのリポジトリにアクセスするコネクタが無いとか。(No connector available to access repository remote-repository)

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy-file (default-cli) on project hogehoge: Failed to deploy artifacts/metadata: No connector available to access repository remote-repository (dav:http://hoge.hogehoge/) of type default using the available factories WagonRepositoryConnectorFactory -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.5:deploy-file (default-cli) on project hogehoge: Failed to deploy artifacts/metadata: No connector available to access repository remote-repository (dav:http://hoge.hogehoge/) of type default using the available factories WagonRepositoryConnectorFactory
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)

 
 
■ 変更点
昔とサーバが変わったので、新しいサーバにした時にMavenのバージョンを2→3に上げてます。

/usr/local/apache-maven-3.0.3/bin$ ./mvn --version
Apache Maven 3.0.3 (r1075438; 2011-03-01 02:31:09+0900)
Maven home: /usr/local/apache-maven-3.0.3
Java version: 1.6.0_22, vendor: Sun Microsystems Inc.

 
 
■ ググっていくと、、
↓のMavenに関するフォーラムでモロな事が話題になっていました。
maven 3, deploy:deploy-file and dav:http
 
で、Maxime Gréauさんのドンピシャなご回答。
彼のウェブサイトみたら(http://mgreau.com/)プリズンブレイクの主演みたいなカッコイイ人ですね。

Since Maven 3.0, by default, you can only use HTTP protocol to deploy
artefacts in a remote repository.

Mavenは3になってからデフォルトだとHTTPしか使えないそうです。
マジっすかWebDavもナメられたもんですw
 
リポジトリ側でHTMLのPUTメソッドを許可するか、 以下のエクステンションをpom.xmlに追加するか、と。
フォーラムではバージョンがbetaとかなってましたが↓みたら1.0になってるみたいです。
http://mvnrepository.com/artifact/org.apache.maven.wagon/wagon-webdav-jackrabbit
まぁ、バージョンとかアレなので↓のようにpom.xmlに追加。

<build>
    <extensions>
         <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-webdav-jackrabbit</artifactId>
         </extension>
     </extensions>
     ....
</build>

 
 
■ 結果
無事社内のMavenリポジトリに登録出来ました。
 

ちょっとしたモノでもバージョンアップする時とか要注意だなぁ…
 

アジャイルサムライ−達人開発者への道−
Jonathan Rasmusson
オーム社
売り上げランキング: 508

コメント

タイトルとURLをコピーしました