gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:52:01 27 4
gpt4 key购买 nike

This is just like this other question I asked, but instead of dependencies, this is about modules.让我举一个场景。您有一个多模块 项目和一个部署该项目的持续集成服务器。这将部署到您的本地 settings.xml 具有 alwaysupdatePolicy 的存储库。现在假设您在 CI 部署项目后立即运行 mvn compile

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

换句话说,仓库的updatePolicymodule标签有影响吗?

最佳答案

modules 标签是一个聚合。它与 dependencies 不同。请注意,您在 dependencymodule 中指定的值不同。当你声明一个 dependency 时,你指定了 maven coordinates .而对于 module,您指定 relative directories .

Will you end up compiling against the remote server's modules, or your local modules?

如果您在聚合器模块(不是子模块!)中运行mvn compile,您将始终针对本地模块进行编译。 子模块依赖是兄弟依赖。当您在聚合器模块中 mvn compile 时,编译子模块时的依赖项查找将是特殊的。它将从同级模块目标文件夹ONLY 中查找。我找不到这方面的文档,但您可以尝试一下。

假设您有这些聚合器 pom

...
<modules>
<module>child-a</module>
<module>child-b</module>
</modules>
....

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。

关于java - 在 Maven 中,模块是否受存储库的 updatePolicy 影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17073441/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com