トップ «前の日記(2009-02-10) 最新 次の日記(2009-02-13)» 編集

Ussy Diary


2009-02-12

[Java][Maven]インハウスリポジトリにサードパーティのライブラリをデプロイする

どこの Maven リポジトリにも管理されていないライブラリをインハウスリポジトリ(社内リポジトリ)で管理させる方法があまりなくて少し苦労しました。 scp でデプロイしていますが webdav の場合でも置き換えればいいはずです。

リモートリポジトリにサードライブラリをデプロイ

settings.xml

デプロイ先の認証情報を記述しておきます。 mvn コマンドを叩くときに使います。面倒なのでよくあるユーザー名=パスワードにしていますが、できる限り公開鍵認証を使いましょう。

<settings>
  <servers>
    <server>
      <id>com.example</id>
      <username>ussy</username>
      <password>ussy</password>
    </server>
  </servers>
</settings>
コマンド
mvn deploy:deploy-file -Dfile=/Users/ussy/Downloads/memcached-2.2.jar -DgroupId=net.spy -DartifactId=memcached \
-Dversion=2.2 -Dpackaging=jar -DgeneratePom=true \
-Durl=scp://192.168.10.10/home/maven2 -DrepositoryId=com.example

settings.xml に記述している id と repositoryId および接続先である url を結びつけることが大事でした。これでインハウスリポジトリにデプロイできました。

リモートリポジトリにサードライブラリのソースをデプロイ

jar ライブラリだけでなく source.jar を提供してくれている場合は source も管理させます。ソースがついていないと Eclipse で補完を効かせる場合にも、まともな変数名になりません。

コマンド
mvn deploy:deploy-file -Dfile=/Users/ussy/Downloads/memcached-2.2-sources.jar -DgroupId=net.spy \
-DartifactId=memcached  -Dversion=2.2 -Dpackaging=java-source \
-Durl=scp://192.168.10.10/home/maven2 -DrepositoryId=com.example

packageing に java-source を指定すること、 -DgeneratePom=true を取り除くことが大事でした。自分の環境だと -DgeneratePom=false にすると NullPointerException が発生し、うまくいきませんでした。

[追記 20100526]

maven 2.2.1 であれば -DgeneratePom=false を指定する必要があります。

[/追記 20100526]

参考 URL

http://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html

javadoc のデプロイは試していません。

本日のツッコミ(全2件) [ツッコミを入れる]
# Kaneko (2010-05-26 02:07)

非常に、参考になりました。<br>ただ、一点だけ。<br><br>今のバージョンのmaven2だと、ソースデプロイのとき、<br>-DgeneretePomを省略すると、true扱いでいってしまうようです。<br>明示的にfalseにしないと、だめっぽいです。<br>(NPEは発生しませんでした。maven2 ver 2.2.1です。)

# Ussy (2010-05-26 12:28)

ご指摘ありがとうございます。バージョン番号を明記して追記しておきます。