在Maven中,模块是否受存储库的updatePolicy影响?

让我给出一个方案。您有一个多module项目和一个用于部署项目的持续集成服务器。这将部署到本地settings.xml具有的updatePolicy的存储库always。现在,假设您mvn

compile在CI部署项目后立即运行。

换句话说,updatePolicy存储库的对module标签有没有影响?

回答:

modules标签是一个聚合。它与的处理方式不同dependencies。请注意,您在dependency和中指定的值module是不同的。声明a时dependency,请指定maven坐标。同时module,您指定相对目录。

您最终将针对远程服务器的模块还是本地模块进行编译?

mvn compile在聚合器模块中运行(在子模块中不能!)

并且子模块的依赖关系是同级的依赖关系,则最终将始终针对本地模块进行编译。当您mvn

compile在聚合器模块中时,在编译子模块时进行依赖项查找会很特殊。它看起来与同级模块的目标文件夹

。我找不到与此有关的文档,但是您可以尝试一下。

想象一下,您有这些聚合器pom

...

<modules>

<module>child-a</module>

<module>child-b</module>

</modules>

....

child-b pom声明依赖于child-a。(确保您有一个真实的输出类)

接下来,当您mvn compile使用聚合器pom时,即使您以前没有mvn installchild-a ,child-

b也将能够编译。这意味着child-a甚至不在您的本地存储库中。这是可能的,因为maven将查找child-

a的类的目标文件夹。要确认这一点,您可以尝试运行mvn compile clean(是的,在编译后清除)。

再次注意,此行为仅在从聚合器pom运行时才适用。如果您当前的工作目录是child-b(取决于child-a),则它在尝试查找child-a时将遵守updatePolicy。

以上是 在Maven中,模块是否受存储库的updatePolicy影响? 的全部内容, 来源链接: utcz.com/qa/423700.html

回到顶部