3

具体的な例:

特定の機能を提供するライブラリを作成しています。ライブラリを作成するときは、車輪の再発明ではなく、Apache Commons(つまり、StringUtilsなど)を使用したいと思います。残念ながら、そのライブラリを別のjarとして、または独自のjarに組み込んだ場合(build-with-dependencies)、ライブラリを使用するすべてのユーザーにApache Commonsを強制します...さらに、使用したバージョンを強制しますそれらの上に。

質問:

あなたのライブラリを使用する人にそのライブラリ(またはさらに悪いことに、そのライブラリのバージョン)を強制することなく、サードパーティのライブラリに依存するJavaでライブラリ/ jarを作成する方法はありますか?

4

2 に答える 2

2

ジャージャーって知ってる?https://code.google.com/p/jarjar/

于 2012-04-04T13:21:53.363 に答える
1

Maven 経由でバイナリ jar を配布する場合は、jar を使用する人に依存関係を「強制」することについてあまり心配する必要はありません。Maven を使用する人は誰でも、推移的な依存関係が引きずり込まれることに完全に慣れています。

これについて非常に偏執的である場合は、shade プラグインを使用して、依存関係を持つ uber-jar を作成し、すべての依存関係のパッケージの名前を変更できます: http://maven.apache.org/plugins/maven-shade-plugin/ examples/class-relocation.htmlですが、実際には必要ありません。

于 2012-04-04T13:35:54.523 に答える