プロジェクトの依存関係として指定せずに、derbytools などの特定のパッケージを Maven でインストールするにはどうすればよいですか?
2 に答える
mvn install
これは、ゴールを使用したサンプルです。提供する必要があるパラメーターの代わりに、Windows スタイルの環境変数を使用しました。
mvn install:install-file -DgroupId=%DERBYTOOLS_GROUP_ID% \
-DartifactId=%DERBYTOOLS_ARTIFACT_ID% \
-Dversion=%DERBYTOOLS_VERSION% \
-Dpackaging=jar \
-Dfile=%DERBYTOOLS_FILE_PATH%
Maven で jar を使用できるようにするには、jar を依存関係として宣言する必要があります。
Maven リポジトリにまだ存在しない jar がある場合は、install-plugin のinstall-file ゴールを使用してローカル リポジトリにインストールできます(rich's answer が示すように)。これにより、指定した値を使用して pom が生成され、pom と jar がローカル リポジトリにインストールされます。それが完了したら、依存関係をプロジェクトの pom に追加し、通常どおり使用します。
この場合、依存関係は中央の Maven リポジトリに存在するため ( Sonatype パブリック リポジトリを使用してアーティファクトを検索するだけで済みます)、この依存関係を POM に追加するだけです。
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbytools</artifactId>
<version>10.4.2.0</version>
</dependency>
なんらかの理由で依存関係をインストールしたくない場合は、system
スコープを使用して絶対ファイル システム パスで jar を参照することもできます。ただし、移植性に明らかに影響するため、このアプローチはお勧めしません。
ドキュメントから:
スコープ システムとの依存関係は常に利用可能であり、リポジトリで検索されません。これらは通常、JDK または VM によって提供される依存関係について Maven に通知するために使用されます。
次のように、derbytools jar をシステム スコープの依存関係として参照できます。
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbytools</artifactId>
<version>10.4.2.0</version>
<scope>system</scope>
<systemPath>/path/to/derbytools.jar</systemPath>
</dependency>