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