假设我有一个大型项目,并且在本地构建。一半的依赖关系来自Maven Central,一半的依赖关系是我自己项目中的不同模块,所有模块都进入了M2。
如果我将一半的SNAPSHOTS从本地nexus服务器中拉出,但是我已经修改了其中一个SNAPSHOTS的源代码,是否拉过nexus快照,将其放到m2中,然后编译更改的版本并覆盖我的m2中的快照?那是浪费时间吗?
答案 0 :(得分:1)
这完全是根据我的个人经验!
假设您有一个项目A(PA)和一个项目B(PB)。 PB通过通常的maven <dependency>
标签具有PA的依赖关系。
现在,您可以修改PA,并在本地对其进行编译。除非您运行maven命令install
,否则您的从属项目PB将无法获取修改后的代码-正如您在有关修改其中一个SNAPSHOT的问题中提到的那样。
一旦在maven for PA上运行install
命令,maven会将新的工件放到本地计算机的连接仓库中,下次构建PB时,它将拾取最新的修改后的PA依赖关系。
基本上,在构建项目时,maven会执行该操作,它首先进入您的本地nexus存储库目录,通常但并非总是<M2_HOME>\repository
,以满足所有依赖关系,如果找不到,则转到通常到您公司的本地回购,然后再到公共回购。所有这些信息都在Maven的settings.xml
文件中进行配置。
因此,您在做什么是对的。您必须先将本地SNAPSHOT构建安装到本地关系,然后在编译依赖项目时,maven将负责其余的工作。
这是 不 的浪费,这就是行家设计的方式!