■ 事象 長いこと放ったらかしてた資産に不具合が見つかって修正版の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>
ちょっとしたモノでもバージョンアップする時とか要注意だなぁ…