假设我有一个大型项目,并且在本地构建。一半的依赖关系来自Maven Central,一半的依赖关系是我自己项目中的不同模块,所有模块都进入了M2。

如果我将一半的SNAPSHOTS从本地nexus服务器中拉出,但是我已经修改了其中一个SNAPSHOTS的源代码,是否将nexus快照拉入,放入m2中,然后编译更改的版本并覆盖快照在我的m2中?那是浪费时间吗?

最佳答案

这纯属我的个人经验!

假设您有一个项目A(PA)和一个项目B(PB)。 PB通过通常的maven <dependency>标签具有PA的依赖关系。

现在,您可以修改PA,并在本地对其进行编译。除非您运行maven命令install,否则您的从属项目PB将无法获取修改后的代码-正如您在问题中提到的有关SNAPSHOT之一被修改的那样。

在maven for PA上运行install命令后,maven会将新的工件放入本地计算机的联系仓库中,下次构建PB时,它将获取最新的修改后的PA依赖关系。

基本上,在构建项目时,maven会执行的操作是,它首先进入本地关系存储库目录(通常但并非总是<M2_HOME>\repository),以满足所有依赖性,如果找不到,则通常转到您公司的本地回购,然后再到公共回购。所有这些信息都在Maven的settings.xml文件中配置。

因此,您在做什么是对的。您必须首先将本地SNAPSHOT构建安装到本地关系,然后在编译相关项目时,maven将负责其余的工作。

这不是浪费的精力,这就是行家设计的方式!

10-06 05:31
查看更多