次のモジュールを含むMavenプロジェクトがあります:app
、、。私はmaven-war-pluginを使用してWebを構築します。今はに依存します。に依存します。app-impl
web
app-impl
app
web
app-impl
ただし、web
にのみ依存する必要がありますapp
。いくつかの魔法によって、maven-war-pluginはapp-impl
戦争に含まれるべきです。追加のMavenモジュールなしでそれを行うことはできますか?
次のモジュールを含むMavenプロジェクトがあります:app
、、。私はmaven-war-pluginを使用してWebを構築します。今はに依存します。に依存します。app-impl
web
app-impl
app
web
app-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を提供します。