ローカルリポジトリに追加せずに、サードパーティのjarをMavenシェーディングjarに含める

裸の:

「ローカルリポジトリ」にインストールせずにプロジェクトにサードパーティの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

これをバージョン管理にチェックインできるようになりました。ローカルまたはリモートの依存関係はありません。

Pascal Thivent:

しかし、Maven Shadeプラグインを使用して、プロジェクトのすべての依存関係も含むJARを作成すると、サードパーティのJARが自動的に含まれません。

はい、systemスコープ付きの依存関係は常に存在すると想定されているため(これはまさにsystemスコープの対象です)、それらは含まれません。人々は実際にsystemスコープの依存関係が何であるかを理解せず、それらを悪用し続け(はい、これは乱用です)、副作用を受け取り、なぜか疑問に思います(ブライアンが彼の回答で指摘したように)。

私はすでに書いた多くの多くの本当に 多くの SOにここでこの程度の時間をし、例99%で、systemスコープの依存関係は避けるべきです。そして、Dependency Scopesミニガイドがもう一度言っていることを繰り返します

  • system:この依存関係は、プロジェクトのライフサイクルの一部のフェーズで必要ですが、システム固有です。このスコープの使用は推奨されません。これは「高度な」種類の機能と見なされ、その使用によるすべての影響を真に理解している場合にのみ使用する必要があります。このスコープは、定義により、ビルドを移植不可能にします。特定のエッジケースで必要になる場合があります。システムスコープには<systemPath>、ローカルマシン上のこの依存関係の物理的な場所を指す要素が含まれます。したがって、リポジトリ内ではなく、特定のローカルマシンに存在すると予想されるアーティファクトを参照するために使用されます。そのパスはマシンごとに異なる可能性があります。systemPath要素は、パス内の環境変数を参照できます。${JAVA_HOME} 例えば。

したがって、systemスコープを使用する代わりに、次のいずれかを行います。

  • を介してライブラリをローカルリポジトリに追加しますinstall:install-fileこれは、物事を機能させるための迅速で汚い方法です。あなたが一人でいる場合、それはオプションかもしれませんが、ビルドを移植不可能にします。
  • Nexus、Archiva、Artifactoryなどの「エンタープライズリポジトリ」をインストールして実行し、からライブラリを追加しますdeploy:deploy-fileこれは理想的なシナリオです。
  • この前の回答で説明されているようにファイルベースのリポジトリをセットアップし、そこにライブラリを配置します。これは、企業リポジトリがなくてもチームとして作業する必要があり、移植性を犠牲にしたくない場合に最適な妥協案です。

systemスコープの使用を中止してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ローカルmavenリポジトリの追加がオプションではないmavenプロジェクト(コンパイル、ビルド、パッケージ)にサードパーティのjarをどのように含めますか?

分類Dev

Business ObjectsSDKアプリにサードパーティのJarを含める

分類Dev

スタンドアロンjarをローカルのMavenリポジトリにインポートする

分類Dev

シェフにサードパーティのリソースを含める

分類Dev

サードパーティのjarをMavenにバンドルする方法は?

分類Dev

ビルドする前に、jarをMavenローカルリポジトリに追加します

分類Dev

mavenがコンパイルしてビルドjarに含めるための追加のソースディレクトリを追加するにはどうすればよいですか?

分類Dev

ローカルフォルダへのgitから実行可能な.jarファイルをパッケージのBitbucketのリポジトリまたは自動化における実行可能.jarファイルをホスティング

分類Dev

MavenがプロジェクトビルドJARをローカルリポジトリにインストールしないようにする方法

分類Dev

Mavenビルド後にシェーディングされたjarをアップロードする方法は?

分類Dev

Mavenにテストパッケージを実行せずにローカルリポジトリにインストールさせる方法

分類Dev

プロファイルを指定せずに、スナップショットリポジトリを含む複数のネクサスリポジトリに複数のMavenアーティファクトをデプロイするにはどうすればよいですか?

分類Dev

サードパーティのモジュールをインストールせずに投稿リクエストに応答するPythonhttpサーバー

分類Dev

npmをインストールせずにサードパーティのnpmモジュールを含める方法は?

分類Dev

複数のテーブルに複数のDbset行を追加せずに、Asp.Net Core WebAPIプロジェクトでデータを処理するためのリポジトリパターンを実装する方法

分類Dev

クエリに子テーブルを含める場合は、初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます

分類Dev

Mavenシェードjarを他のシェードjarに含める

分類Dev

データをリロードせずにDataGridViewのコンテンツをフィルタリングする

分類Dev

RメモリにプリロードせずにローカルのデータフレームからselectInput()内にオプションを含める方法

分類Dev

このエージェントにサードパーティのプログラム/アプリを追加する方法はありますか

分類Dev

gradleを使用してjarをローカルのMavenリポジトリにアップロードします

分類Dev

Eclipseのサブプロジェクトのソースディレクトリではなく、jarの依存関係を含めるようにMavenに指示するにはどうすればよいですか?

分類Dev

どのように自動的にJavaで使用されているすべてのサードパーティのコンポーネントをリスト+プロジェクトを反応させるために?

分類Dev

サイドローディングアプリパッケージ(.appx)をスイート/高度なUIプロジェクトに追加する

分類Dev

(多くの)JavaScriptを使用せずに、Shinyアプリのデータテーブルセルにスパークラインhtmlウィジェットを含める

分類Dev

グーグルにログインせずにグーグルアナリティクス埋め込みレポートを表示する方法

分類Dev

Talendプロジェクトにサードパーティのライブラリを追加する方法は?

分類Dev

フィルタリングせずに常にスプレッドシートの上部にデータを含む行を保持する方法

分類Dev

サードパーティの依存関係をMavenリポジトリーにデプロイする簡単な方法

Related 関連記事

  1. 1

    ローカルmavenリポジトリの追加がオプションではないmavenプロジェクト(コンパイル、ビルド、パッケージ)にサードパーティのjarをどのように含めますか?

  2. 2

    Business ObjectsSDKアプリにサードパーティのJarを含める

  3. 3

    スタンドアロンjarをローカルのMavenリポジトリにインポートする

  4. 4

    シェフにサードパーティのリソースを含める

  5. 5

    サードパーティのjarをMavenにバンドルする方法は?

  6. 6

    ビルドする前に、jarをMavenローカルリポジトリに追加します

  7. 7

    mavenがコンパイルしてビルドjarに含めるための追加のソースディレクトリを追加するにはどうすればよいですか?

  8. 8

    ローカルフォルダへのgitから実行可能な.jarファイルをパッケージのBitbucketのリポジトリまたは自動化における実行可能.jarファイルをホスティング

  9. 9

    MavenがプロジェクトビルドJARをローカルリポジトリにインストールしないようにする方法

  10. 10

    Mavenビルド後にシェーディングされたjarをアップロードする方法は?

  11. 11

    Mavenにテストパッケージを実行せずにローカルリポジトリにインストールさせる方法

  12. 12

    プロファイルを指定せずに、スナップショットリポジトリを含む複数のネクサスリポジトリに複数のMavenアーティファクトをデプロイするにはどうすればよいですか?

  13. 13

    サードパーティのモジュールをインストールせずに投稿リクエストに応答するPythonhttpサーバー

  14. 14

    npmをインストールせずにサードパーティのnpmモジュールを含める方法は?

  15. 15

    複数のテーブルに複数のDbset行を追加せずに、Asp.Net Core WebAPIプロジェクトでデータを処理するためのリポジトリパターンを実装する方法

  16. 16

    クエリに子テーブルを含める場合は、初期化子、エンティティメンバー、およびエンティティナビゲーションプロパティのみがサポートされます

  17. 17

    Mavenシェードjarを他のシェードjarに含める

  18. 18

    データをリロードせずにDataGridViewのコンテンツをフィルタリングする

  19. 19

    RメモリにプリロードせずにローカルのデータフレームからselectInput()内にオプションを含める方法

  20. 20

    このエージェントにサードパーティのプログラム/アプリを追加する方法はありますか

  21. 21

    gradleを使用してjarをローカルのMavenリポジトリにアップロードします

  22. 22

    Eclipseのサブプロジェクトのソースディレクトリではなく、jarの依存関係を含めるようにMavenに指示するにはどうすればよいですか?

  23. 23

    どのように自動的にJavaで使用されているすべてのサードパーティのコンポーネントをリスト+プロジェクトを反応させるために?

  24. 24

    サイドローディングアプリパッケージ(.appx)をスイート/高度なUIプロジェクトに追加する

  25. 25

    (多くの)JavaScriptを使用せずに、Shinyアプリのデータテーブルセルにスパークラインhtmlウィジェットを含める

  26. 26

    グーグルにログインせずにグーグルアナリティクス埋め込みレポートを表示する方法

  27. 27

    Talendプロジェクトにサードパーティのライブラリを追加する方法は?

  28. 28

    フィルタリングせずに常にスプレッドシートの上部にデータを含む行を保持する方法

  29. 29

    サードパーティの依存関係をMavenリポジトリーにデプロイする簡単な方法

ホットタグ

アーカイブ