torutkのブログ

ソフトウェア・エンジニアのブログ

mavenリポジトリからjarファイルの取得

はじめに

インターネットと常時接続が維持できない環境でプログラミングをする場合、ローカルにライブラリファイル等を保持し、ビルドスクリプトからはローカルのライブラリを参照すれば作業が可能になります。

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 のようにオプション指定で変更することができます。