2012-09-25

Maven and Google Code

Maven を使い始めた。Ant と違い、依存関係を宣言的に記述するだけで、簡単にビルドできてしまう。すばらしい。必要なプラグインを正しく設定できれば。

Google Code にプロジェクトをホスティングしているが、自分の作ったアーティファクトもこのサイトにデプロイしたい。そうすれば、ちょっとした POM の記述で成果物を配布できるし、依存関係も Maven が解決してくれる。リポジトリは Subversion を使っている。

さて、先達も同様のことをやっているのを目にしているので簡単なことだと思っていたが、そうはいかなかった。Google Code のいくつかのプロジェクトの POM を参考にしたり、Google で検索してみたら、いくつかの方法が見つかった。
  • com.google.code.maven-svn-wagon:maven-svn-wagon
  • org.jvnet.wagon-svn:wagon-svn
  • org.apache.maven.wagon:wagon-webdav


サンプルの数が多かったので、まず2番目を試した。



mvn deploy を実行すると、メタデータの XML ファイルをダウンロードし始めたきり、先に進まない。Maven のサイトから Wagon を手繰り JIRA をチェックしたり、POM の記述をいろいろと変えてみたが、一向に解決しない。


続いて、1番目の方法を試す。


mvn deploy したら、以下の例外がスローされた。
Caused by: org.apache.maven.wagon.authorization.AuthorizationException: svn: Authentication required for '<https://xxx.googlecode.com:443> Google Code Subversion Repository'
認証失敗。settings.xml に指定したユーザ名とパスワードで間違いなく Google にログインできることは確認した。

この確認方法は、間違っている。なぜならば、ここで要求されるパスワードは Google アカウントのパスワードではないからだ。正しくは、Google Code のセッティングページに表示されるパスワードを使わねばならない。

さて、settings.xml でパスワードを正しく設定したら、問題なくメタデータや JAR ファイルをアップロードして、BUILD SUCCESS!


pom.xml (snippet):



setting.xml (snippet):

リソース: