如果同时包含两个依赖项,则强制maven失败

时间:2014-02-26 16:28:57

标签: java maven

我有一个具有以下结构的项目:

parent
 > core
 > module-1 (with dependencies: A, B)
 > module-2 (with dependencies: X, Y)
 > project  

module-1module-2在不同环境中提供相同的功能(数据访问)。 模块project取决于core,以及module-1module-2

问题:如果我project依赖于module-1module-2,则存在许多不必要的传递依赖(例如,我不需要部署到环境#1时X或Y,因为那里只使用module-1

如果将module-1module-2都指定为project的依赖项,我希望尽早使构建失败。

我编写了一个查找每个模块的测试,如果找到这两个模块就会失败,但我认为应该有一个更简单/更直接的方法来实现这一点。

2 个答案:

答案 0 :(得分:5)

您可以为不同的环境使用不同的配置文件。如需更广泛的答案,请查看Different dependencies for different build profiles in maven

答案 1 :(得分:2)

这是一个非常奇怪的案例。以下可能,或者可能不起作用,但我认为这是一个值得的想法,如果你愿意敲掉一些代码,如果你必须:

  • module-1module-2分成不同的项目,而不是<modules/>

  • 查看maven-enforcer-pluginenforcer rules。您可能需要编写自己的规则。

  • 将module-1和module-2添加为“可选”依赖项。

或者,您可以将project克隆到两个单独的项目中,将所有代码移除到另一个模块,并将该新模块添加为project-1project-2的依赖项。坦率地说,这更像是一个代码结构和重构问题,而不是一个真正的Maven问题。

(理论上,斯蒂芬C是对的)。