我有带有下一个模块的 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 对我来说是可行的方法,并且鉴于上述设置也应该开箱即用。