gpt4 book ai didi

具有相同版本号的 Maven 依赖链

转载 作者:行者123 更新时间:2023-12-01 08:20:51 25 4
gpt4 key购买 nike

我有一个相对较大的带有模块依赖链的 Maven 项目,我正在尝试通过 Jenkins 自动执行构建过程,该过程会上传带有版本号的模块 jar 文件。在执行此操作时,如果没有为命令行 maven 调用指定参数,我仍然希望模块具有默认版本号(默认为 0.0.0.dev)。

我先试了<version>0.0.0.dev</version>我想我可以用 Maven 命令行覆盖这个值。事实并非如此:http://jira.codehaus.org/browse/MINSTALL-30 .有一条评论引导我进行下一次尝试:<version>${build.number}</version>我会将内部版本号传递给命令行的地方。显然,由于该属性未在其他任何地方设置,如果未提供内部版本号,我会得到诸如 module.name-${build.number}.jar 之类的 jar。简单修复:按照评论的建议,添加 <properties><build.number>0.0.0.dev</build.number></properties> .

当我尝试将该版本传播到模块依赖项时,这会导致传递问题。假设我有 moduleA 依赖于 moduleB 依赖于 moduleC,我要求每个模块都具有相同的版本号。依赖示例:在模块A的pom文件中:

<dependency>
<groupId>groupID</groupId>
<artifactId>moduleB</artifactId>
<version>${version}</version>
</dependency>

正在运行 mvn compile –Dbuild.number=9.9.9.9在 moduleA 上:它将寻找 moduleB-9.9.9.9.jar,但它会寻找 moduleC-0.0.0.dev.jar。这是因为 build.number 属性不可传递(与实际版本号不同)。

我的问题:如何获得所需的行为?在不在命令行传递额外参数的情况下,构建一个具有默认版本号的 jar,但允许覆盖该默认值,该模块将用于具有相同版本的其他模块。

最佳答案

除了一个异常(exception),您不能将属性传播到依赖项的 pom 中。出于所有意图和目的,依赖项的 pom 在安装/部署到本地/远程存储库时是固定的。如果依赖项是通过 react 器解决的(即依赖项是作为当前构建的一部分构建的),那么命令行属性将在构建时传播到该依赖项 pom。

关于具有相同版本号的 Maven 依赖链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9012467/

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