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

这就像我问的另一个问题,但不是依赖,而是关于模块。 让我给出一个场景。 您有一个多module项目和一个部署项目的持续集成服务器。 这将部署到存储库,您的本地settings.xmlupdatePolicy always 。 现在假设您在CI部署项目后立即运行mvn compile

您最终是否会针对远程服务器的modules或本地模块进行编译?

换句话说,存储库的updatePolicy是否对module标签有任何影响?

modules标签是一种聚合。 它不被视为dependencies 。 请注意,您在dependencymodule指定的值是不同的。 声明dependency ,指定maven坐标 。 对于module ,您可以指定相对目录 。

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

如果在聚合器模块中运行mvn compile (不在子模块中!) 并且子模块依赖项是兄弟依赖项,则总是最终编译本地模块。 当您在聚合器模块中进行编译时,在编译子模块时的依赖关系查找将是特殊的。 它将仅从兄弟模块目标文件夹中查看。 我找不到相关的文档,但你可以尝试一下。

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

 ...  child-a child-b  .... 

child-b pom宣布依赖child-a。 (确保你有一个真正的输出类)

接下来,当你mvn compile聚合器pom时,即使你没有mvn install child-a,child-b也能编译。 这意味着,child-a甚至不在您的本地存储库中。 这是可能的,因为maven将查看child-a类的目标文件夹。 要确认这一点,您可以尝试运行mvn compile clean (是的,编译后清理)。

同样,请注意,此行为仅适用于从聚合器pom运行它时。 如果您当前的工作目录是child-b(依赖于child-a),则在尝试查找child-a时它将遵循updatePolicy。