はじめに
インターネットと常時接続が維持できない環境でプログラミングをする場合、ローカルにライブラリファイル等を保持し、ビルドスクリプトからはローカルのライブラリを参照すれば作業が可能になります。
NetBeans等のIDEでライブラリを利用して開発するときは、そのライブラリのクラスファイルの入ったJARファイル以外にもソースファイルのJARファイルとJavadocのJARファイルがあるとよい感じとなります。
手作業で1つ1つ取得することはできますが、依存関係が複数あると結構な手間となるので、ローカルに保持するライブラリのJARファイル、ソースJARファイル、JavadocのJARファイルをコマンドでまとめてmavenリポジトリから取得する方法がないかを調べました。
pomの作成
取得するライブラリを依存関係として記述したpom.xmlを作成します。
<?xml version="1.0"?> <project> <modelVersion>4.0.0</modelVersion> <groupId>com.torutk</groupId> <artifactId>download</artifactId> <version>1</version> <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter</artifactId> <version>5.6.1</version> </dependency> </dependencies> </project>
- project要素の子要素であるmodelVersion、groupId、artifactID、versionは必須のため適当に記載
このpom.xmlのあるディレクトリでmavenを実行します。
D:\work> mvn dependency:copy-dependencies [INFO] Scanning for projects... [INFO] [INFO] ------------------------< com.torutk:download >------------------------- [INFO] Building download 1 [INFO] --------------------------------[ jar ]--------------------------------- [INFO] [INFO] --- maven-dependency-plugin:2.8:copy-dependencies (default-cli) @ download --- [INFO] Copying junit-jupiter-5.6.1.jar to D:\work\target\dependency\junit-jupiter-5.6.1.jar : [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 1.950 s [INFO] Finished at: 2020-04-05T21:38:29+09:00 [INFO] ------------------------------------------------------------------------
ダウンロードしたファイルは次です。
D:\work> dir target\dependency apiguardian-api-1.1.0.jar junit-jupiter-5.6.1.jar junit-jupiter-api-5.6.1.jar junit-jupiter-engine-5.6.1.jar junit-jupiter-params-5.6.1.jar junit-platform-commons-1.6.1.jar junit-platform-engine-1.6.1.jar opentest4j-1.2.0.jar D:\work>
ソースJARファイルをダウンロードする場合は、オプション -Dclassifier=sourcesを指定
D:\work> mvn dependency:copy-dependencies -Dclassifier=sources :
ダウンロードしたファイルは次です。
apiguardian-api-1.1.0-sources.jar junit-jupiter-5.6.1-sources.jar junit-jupiter-api-5.6.1-sources.jar junit-jupiter-engine-5.6.1-sources.jar junit-jupiter-params-5.6.1-sources.jar junit-platform-commons-1.6.1-sources.jar junit-platform-engine-1.6.1-sources.jar opentest4j-1.2.0-sources.jar
JavadocのJARファイルをダウンロードする場合は、オプション-Dclassifier=javadocを指定
D:\work> mvn dependency:copy-dependencies -Dclassifier=javadoc :
ダウンロードしたファイルは次です。
apiguardian-api-1.1.0-javadoc.jar junit-jupiter-5.6.1-javadoc.jar junit-jupiter-api-5.6.1-javadoc.jar junit-jupiter-engine-5.6.1-javadoc.jar junit-jupiter-params-5.6.1-javadoc.jar junit-platform-commons-1.6.1-javadoc.jar junit-platform-engine-1.6.1-javadoc.jar opentest4j-1.2.0-javadoc.jar
ダウンロードファイルのディレクトリ指定
デフォルトでは、pom.xmlを置いたディレクトリの下にtarget\dependencyディレクトリが作られ、その中にダウンロードしたJARファイルが保存されます。このディレクトリは、-DoutputDirectory=libs のようにオプション指定で変更することができます。