Jenkins:maven release 插件忽略依赖分类器



我想通过 Jenkins 发布一个模块,该模块使用依赖关系,该依赖关系不仅通过其版本来区分,而且还通过构建时作为系统属性传递的自定义分类器来区分。控制台输出中打印的有效 pom 显示使用了正确的分类器

<dependency>
<groupId>de.test</groupId>
<artifactId>common-module</artifactId>
<version>0.0.4-SNAPSHOT</version>
<classifier>custom</classifier>
<scope>provided</scope>
</dependency>  

但是,当发布插件的准备目标运行时,由于缺少仅在使用自定义分类器的依赖项版本中可用的类而导致编译错误,构建中断。使用 maven-antrun-plugin 打印属性会显示发布插件正在使用没有分类器的版本。

[INFO] [echoproperties] de.test:common-module:jar=/var/lib/****/.m2/repository/de/test/common-module/0.0.4-SNAPSHOT/common-module-0.0.4-SNAPSHOT.jar
[INFO] [echoproperties] maven.dependency.de.test.common-module.jar.path=/var/lib/****/.m2/repository/de/test/common-module/0.0.4-SNAPSHOT/common-module-0.0.4-SNAPSHOT.jar

我希望发布插件能够拾取名为common-module-0.0.4-SNAPSHOT-custom.jar的 jar,该 jar 在 maven 存储库中绝对可用。发布插件不支持分类器吗?

问题解决了。我发现有两个问题。首先,该模块也是传递依赖项的一部分,因此 maven 尝试下载一个没有分类器的版本,该版本在包含分类器的版本之前不存在。其次,分类器没有传递给 maven 发布插件。要将系统变量传递给插件,必须使用arguments选项,因此实际命令应该clean install -Darguments="-Dmy-classifier=custom" -Dmy-classifier=custom -B release:prepare release:perform。系统变量声明必须是冗余的,一个用于 pom 依赖项,另一个用于发布插件。

最新更新