0

我有带有下一个模块的 Maven 项目:app, app-impl, web. 我用 maven-war-plugin 构建网络。现在app-impl取决于app. web取决于app-impl

web应该只取决于app. 通过一些神奇的 maven-war-plugin 应该包含app-impl在战争中。我可以在没有额外的 Maven 模块的情况下做到这一点吗?

4

2 回答 2

2

我绝对同意@Torsten,但您的请求中可能有一些有效的东西:

在使用 IDE 开发项目时,您可以要求它停止在代码完成列表中提供您的实现类。

如果这是您的原因,只需添加两个依赖项,对于实现之一,指定<scope>runtime</scope>. 这可确保:

  • 您的app模块进入 javac 的类路径,但app-impl没有
  • 两者都appapp-impl被置于WEB-INF/lib/你的战争之下
  • IDE(如果实施得当)不会为您提供完成app-impl

这绝对不会为您节省击键次数,而是为您提供更好的 pom,仔细建模现实。

于 2012-11-02T23:35:40.060 回答
2

app恕我直言,对in的依赖web并不能反映现实,因为您的 Web 应用程序确实依赖于我假设您在app.

考虑在 let say 中有一个替代实现app-impl2。maven 怎么可能决定它应该选择哪个实现?

因此,让 web 依赖于 app-impl 对我来说是可行的方法,并且鉴于上述设置也应该开箱即用。

于 2012-11-02T23:15:29.247 回答