最近、またMavenリポジトリを作ることになりまして。以前の反省を踏まえてdependency:go-offlineゴールを活用して作ろうと思ったのですが、そういえば、ソースとかJavadocとかも落とせた方がいいなぁと思って調べてみました。
Eclipseとかではなく、mvnコマンドを使用する前提で。EclipseとかIntelliJだと、設定でチェック入れればいいだけですからね。
結果から出すと、ソースのJARをダウンロードするには以下のゴールを使用すればよいようです。
dependency:sources
http://maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html
$ mvn dependency:sources
続いて、JavadocのJARをダウンロードする場合は、こちらのゴールを。
dependency:resolve
http://maven.apache.org/plugins/maven-dependency-plugin/resolve-mojo.html
$ mvn dependency:resolve -Dclassifier=javadoc
なんですけど、classifierオプションを使ってjavadocを指定するところがポイントです。
よって、以前紹介した「dependency:go-offline」ゴールと「maven.repo.local」システムプロパティを使用すると、クラスファイルとソースとJavadocのJARを含めたローカルリポジトリを構築できます。
ですので、例えば新しく作るローカルリポジトリを「localrepos」としたとすると、最初にソースを集めて
$ mvn dependency:sources -Dmaven.repo.local=localrepos
次にJavadocを集めて
$ mvn dependency:resolve -Dclassifier=javadoc -Dmaven.repo.local=localrepos
最後に「dependency:go-offline」でクラスファイルを集めます。
$ mvn dependency:go-offline -Dmaven.repo.local=localrepos
まあ、順番はどうでもいい気がしますが。
ただ、これだけだと実際にコンパイルする時などで支障が出ると思うので
$ mvn clean -Dmaven.repo.local=localrepos
とか
$ mvn package -Dmaven.repo.local=localrepos
とかを実行して、各ゴールで必要なプラグインなども集めておいた方がよさそうです。まあ、この時のMavenプラグインのソースとかJavadocとかは先の手順だと入らないですけど、プラグインはいいかなぁと…。
ちなみに、
[INFO] The following files were skipped: [INFO] org.seasar.container:s2-framework:java-source:sources:2.4.46
などと表示されてどうしても取得できない場合は、1度
$ mvn clean
を実行してtargetディレクトリを空にしてやり直すとよいみたいです。
あと、
[INFO] The following files have NOT been resolved: [INFO] aopalliance:aopalliance:java-source:javadoc:1.0
こんな感じで表示された場合は、対象のMavenリポジトリにソースやJavadocがないってことになるので、この場合は今回の手順ではどうにもなりませんね…。