次のシナリオがあります。
mylib はライブラリです (ソースがあるので、たとえば Maven プロジェクト mylib:mylib に入れたいと思います)。このライブラリには、私が jar しか持っていない jar 依存関係があり、Maven リポジトリにはありません (また、そこにインストールしたくありません)。コンパイルするには、次のようにします: jar ファイルを mylib プロジェクトの「lib」フォルダー (例: 「lib/thirdpartylib.jar」) に追加し、mylib の pom.xml に、自分で選択した group/ に依存関係を追加します。アーティファクト/バージョンと " <scope>system</scope><systemPath>${project.basedir}/lib/thirdpartylib.jar</systemPath>
" エントリ。mylib プロジェクトは正常にコンパイルされます。
mylib も実行時に dll ファイル (たとえば thirdparty.dll) に依存していることに注意してください。しかし、コンパイルの場合、これは重要ではありません。
しかし、今、私は次のことを達成する方法を考えています:
プロジェクト "X" など、 mylibを使用するその他のプロジェクトには、
- mylib.jar
- thirdpartylib.jar
- thirdpartylib.dll
、
また、実行中の VM がサードパーティの jar と dll を検出できるように、java.library.path をディレクトリ (例: ".") に設定する必要があります。
私の懸念は次のとおりです。サードパーティの jar/dll を mylib プロジェクトに任せたいと考えています。つまり、サードパーティのjarとdllをターゲットフォルダーにコピーする必要があり、java.library.pathがそれらを参照して、mylibプロジェクトの一部になるという知識を定義したいと思います(mylib pomは、物事がどのように行われるかを知っています)他のプロジェクトで使用できます)。それでも、私はこの知識 (つまり、Maven で正確にどのように行われるかに関係なく、コピーの指示) を、たとえば X など、mylib を使用する他のプロジェクトに推移的に引き渡したいと考えています。それはどういうわけか可能ですか?
[現時点での私のハックの解決策は、X にサードパーティのもののコピーがあることですが、それでも dll ファイルをコピー/処理する方法がわからないため、dll ファイルには.実行中の VM の bin フォルダーにコピーされます)。
どんな提案でも大歓迎です!