我有带有下一个模块的 Maven 项目:app
, app-impl
, web
. 我用 maven-war-plugin 构建网络。现在app-impl
取决于app
. web
取决于app-impl
。
但web
应该只取决于app
. 通过一些神奇的 maven-war-plugin 应该包含app-impl
在战争中。我可以在没有额外的 Maven 模块的情况下做到这一点吗?
我有带有下一个模块的 Maven 项目:app
, app-impl
, web
. 我用 maven-war-plugin 构建网络。现在app-impl
取决于app
. web
取决于app-impl
。
但web
应该只取决于app
. 通过一些神奇的 maven-war-plugin 应该包含app-impl
在战争中。我可以在没有额外的 Maven 模块的情况下做到这一点吗?
我绝对同意@Torsten,但您的请求中可能有一些有效的东西:
在使用 IDE 开发项目时,您可以要求它停止在代码完成列表中提供您的实现类。
如果这是您的原因,只需添加两个依赖项,对于实现之一,指定<scope>runtime</scope>
. 这可确保:
app
模块进入 javac 的类路径,但app-impl
没有app
将app-impl
被置于WEB-INF/lib/
你的战争之下app-impl
这绝对不会为您节省击键次数,而是为您提供更好的 pom,仔细建模现实。
app
恕我直言,对in的依赖web
并不能反映现实,因为您的 Web 应用程序确实依赖于我假设您在app
.
考虑在 let say 中有一个替代实现app-impl2
。maven 怎么可能决定它应该选择哪个实现?
因此,让 web 依赖于 app-impl 对我来说是可行的方法,并且鉴于上述设置也应该开箱即用。