我有一个具有以下结构的项目:
parent
> core
> module-1 (with dependencies: A, B)
> module-2 (with dependencies: X, Y)
> project
module-1
和module-2
在不同环境中提供相同的功能(数据访问)。
模块project
取决于core
,以及module-1
或module-2
。
问题:如果我project
依赖于module-1
和module-2
,则存在许多不必要的传递依赖(例如,我不需要部署到环境#1时X或Y,因为那里只使用module-1
。
如果将module-1
和module-2
都指定为project
的依赖项,我希望尽早使构建失败。
我编写了一个查找每个模块的测试,如果找到这两个模块就会失败,但我认为应该有一个更简单/更直接的方法来实现这一点。
答案 0 :(得分:5)
您可以为不同的环境使用不同的配置文件。如需更广泛的答案,请查看Different dependencies for different build profiles in maven
答案 1 :(得分:2)
这是一个非常奇怪的案例。以下可能,或者可能不起作用,但我认为这是一个值得的想法,如果你愿意敲掉一些代码,如果你必须:
将module-1
和module-2
分成不同的项目,而不是<modules/>
。
查看maven-enforcer-plugin和enforcer rules。您可能需要编写自己的规则。
将module-1和module-2添加为“可选”依赖项。
或者,您可以将project
克隆到两个单独的项目中,将所有代码移除到另一个模块,并将该新模块添加为project-1
和project-2
的依赖项。坦率地说,这更像是一个代码结构和重构问题,而不是一个真正的Maven问题。
(理论上,斯蒂芬C是对的)。