2017-07-26 1 views

答えて

3

私はあなたのMavenモジュールについての本当の問題があると思います。

JARは、別のJARで使用されているクラスを除外するようには設計されていません。

なぜB JARでは、実行時に使用する実装クラスを選択する方法はありませんか? プロパティ、実装するインタフェースなど複数の方法で許可できます。
このようにして、クライアントアプリケーションで使用するクラスを指定できます。
クライアントクラスで実装するには、APIの面ではなく、上書きするクラスではないと考えるべきです。


これはMavenで行うことはできないが、複雑ではなく、自然ではなく、エラーが発生しやすく、うまく設計されていないように見える。
ここにMavenで解決するためのアイデアがあります。

あなたは、パッケージ瓶に除外するクラスを指定するのmaven-jarファイル・プラグインを設定できます。

​​433

Hereは、リファレンスドキュメントです。

ただし、これを実行することで、どのような場合でもクラスはJARで使用できなくなります。
置換するクラスがBに必要な場合、B JARは単独では機能しません。

この問題を回避するには、specific classifierでJARをパッケージ化できます。
あなたは、すべてが入っている古典的な瓶と、この有名な複製クラス以外のすべてを含んだjar-for-aを持っています。

本当にあなたのデザインについて本当に考えるべきだと思います。

+0

問題を解決するために、BからAにファイルをコピーするだけです – georgewhr

関連する問題