Maven和相关模块
问题内容:
同事一直在吹捧Maven的奇迹及其神奇的依赖关系,但是我发现它在我认为是显而易见的用途上失败了。
假设我有一个带有主POM的根文件夹。
然后在我下面有一些项目,分别称为A和B
B需要A,因此B文件夹中的POM中具有适当的依赖项
现在,回到根文件夹中的配置文件中,我指定要构建B。
当我执行通常的mvn全新安装时,由于未构建A而失败。
我的朋友告诉我,我必须在根目录的主配置文件中同时指定A和B。
但是,并非Maven看到B,而是进入B POM文件,从中看到对A的依赖关系,因此应该自动构建A。
问题答案:
我能想到的尚未实现您期望的行为的原因如下:
假设我同时在项目A和B上工作。当前A已损坏。如果依赖项解析按照您的意愿发生,那么在A被修复之前,我将永远无法构建B。因此,我要么必须回滚对A的更改,要么首先专注于修复A。无论哪种方式,可能都不是我现在要关注的重点。
通常,B希望使用A的“最后一个好”版本,而不是最新版本。使用存储库中的依赖项意味着它们至少可以正常编译(希望单元测试也可以运行)。