次のモジュールを含むMavenプロジェクトがあります:app、、。私はmaven-war-pluginを使用してWebを構築します。今はに依存します。に依存します。app-implwebapp-implappwebapp-impl
ただし、webにのみ依存する必要がありますapp。いくつかの魔法によって、maven-war-pluginはapp-impl戦争に含まれるべきです。追加のMavenモジュールなしでそれを行うことはできますか?
次のモジュールを含むMavenプロジェクトがあります:app、、。私はmaven-war-pluginを使用してWebを構築します。今はに依存します。に依存します。app-implwebapp-implappwebapp-impl
ただし、webにのみ依存する必要がありますapp。いくつかの魔法によって、maven-war-pluginはapp-impl戦争に含まれるべきです。追加のMavenモジュールなしでそれを行うことはできますか?
に依存しているIMHOはapp、web現実を反映していません。これは、Webアプリケーションが、で定義したと想定するインターフェイスの実装に実際に依存しているためですapp。
たとえば、で別の実装を検討してくださいapp-impl2。Mavenは、どの実装を選択するかをどのように決定できますか?
したがって、Webをapp-implに依存させることは、私にとっては進むべき道であり、上記の設定を考えると、箱から出してすぐに機能するはずです。
私は@Torstenに完全に同意しますが、おそらくあなたの要求に何か有効なものがあります:
IDEを使用してプロジェクトを開発する場合、コード補完リストでの実装クラスの提供を停止するようにIDEに要求できます。
これが理由である場合は、両方の依存関係を追加し、実装の場合はを指定します<scope>runtime</scope>。これにより、次のことが保証されます。
appモジュールはjavacのクラスパスに到達しますが、到達しませapp-implんappとあなたの戦争app-implの下に置かれますWEB-INF/lib/app-implこれは間違いなくキーストロークを節約しませんが、現実を注意深くモデル化して、より良いpomを提供します。