「ローカルリポジトリ」にインストールせずにプロジェクトにサードパーティのJARを含める方法を、Stack Overflowですでに回答を見つけました。
jarをインストールせずにmaven 2ビルドクラスパスに追加できますか?
しかし、Maven Shadeプラグインを使用して、プロジェクトのすべての依存関係も含むJARを作成すると、サードパーティのJARが自動的に含まれません。
Maven ShadeプラグインでこのようなサードパーティのJARをシェーディングされたJARに追加するにはどうすればよいですか?
得られた答えに従って、私はそれを機能させました。私がしたことは、このスニペットを私のpom.xmlの先頭に追加しました:
<repositories>
<repository>
<id>repo</id>
<url>file://${basedir}/repo</url>
</repository>
</repositories>
次に、私のプロジェクトの依存関係をpom.xmlにも追加しました。
<dependencies>
<dependency>
<groupId>dummy</groupId>
<artifactId>dummy</artifactId>
<version>0.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
次に、コマンドラインを実行してパッケージを 'repo'に追加します。
mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file
-Dfile=<my-jar>.jar -DgroupId=dummy -DartifactId=dummy
-Dversion=0.0.0 -Dpackaging=jar -DlocalRepositoryPath=`pwd`/repo/
(レポパスがフルパスである必要があるかどうかはわかりませんが、チャンスを取りたくありませんでした。)
repoサブディレクトリの内容は次のとおりです。
repo/dummy/dummy/0.0.0/dummy-0.0.0.jar
repo/dummy/dummy/0.0.0/dummy-0.0.0.pom
repo/dummy/dummy/maven-metadata-local.xml
これをバージョン管理にチェックインできるようになりました。ローカルまたはリモートの依存関係はありません。
しかし、Maven Shadeプラグインを使用して、プロジェクトのすべての依存関係も含むJARを作成すると、サードパーティのJARが自動的に含まれません。
はい、system
スコープ付きの依存関係は常に存在すると想定されているため(これはまさにsystem
スコープの対象です)、それらは含まれません。人々は実際にsystem
スコープの依存関係が何であるかを理解せず、それらを悪用し続け(はい、これは乱用です)、副作用を受け取り、なぜか疑問に思います(ブライアンが彼の回答で指摘したように)。
私はすでに書いた多くの、多くの、本当に 多くの SOにここでこの程度の時間をし、例99%で、system
スコープの依存関係は避けるべきです。そして、Dependency Scopesミニガイドがもう一度言っていることを繰り返します。
system
:この依存関係は、プロジェクトのライフサイクルの一部のフェーズで必要ですが、システム固有です。このスコープの使用は推奨されません。これは「高度な」種類の機能と見なされ、その使用によるすべての影響を真に理解している場合にのみ使用する必要があります。このスコープは、定義により、ビルドを移植不可能にします。特定のエッジケースで必要になる場合があります。システムスコープには<systemPath>
、ローカルマシン上のこの依存関係の物理的な場所を指す要素が含まれます。したがって、リポジトリ内ではなく、特定のローカルマシンに存在すると予想されるアーティファクトを参照するために使用されます。そのパスはマシンごとに異なる可能性があります。systemPath要素は、パス内の環境変数を参照できます。${JAVA_HOME}
例えば。
したがって、system
スコープを使用する代わりに、次のいずれかを行います。
install:install-file
。これは、物事を機能させるための迅速で汚い方法です。あなたが一人でいる場合、それはオプションかもしれませんが、ビルドを移植不可能にします。deploy:deploy-file
。これは理想的なシナリオです。system
スコープの使用を中止してください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加