■ 事象
長いこと放ったらかしてた資産に不具合が見つかって修正版の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リポジトリに登録出来ました。
—
ちょっとしたモノでもバージョンアップする時とか要注意だなぁ…
オーム社
売り上げランキング: 508
コメント