これは一般的な問題のように聞こえるので、使用するビルド/依存関係管理ツール (私の場合は Gradle) に関係なく、これらの状況に対処するための一般的な推奨方法があるかどうか疑問に思っています。いくつかの依存関係が手動で処理され、コマンドを使用して Java で単純にビルドされる小さなプロジェクトであっても、ビルド ツールに関係なくこの問題が発生することは想像できますjar
。
私の Java プロジェクトは Velocity 1.7 を使用しているため、クラスパスに Velocity 1.7 JAR があります。
ただし、このプロジェクトは Velocity 1.4 に依存する ReportNG も使用します(マニフェストにもエントリClass-Path: velocity-dep-1.4.jar
があり、ダウンロードされた zip には含まれてvelocity-dep-1.4.jar
おり、ホームページvelocity-dep-1.4.jar
にはクラスパスにある必要があることが明示的に記載されています)。
クラスパスに両方の Velocity バージョンの JAR が含まれないようにする方法を考えています。
ReportNG で Velocity 1.4 の代わりに 1.7 を使用するようにしようとしていますが、必ずしもうまくいくとは限りません。これらの状況に対処するクリーンな方法がある場合は、それを避けたいと思います。