jenkins - Jenkins:maven 发布插件忽略依赖分类器
问题描述
我想通过 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
我希望发布插件能够拾取命名的 jar ,该 jarcommon-module-0.0.4-SNAPSHOT-custom.jar
在 maven 存储库中绝对可用。发布插件不支持分类器吗?
解决方案
问题解决了。我发现有两个问题。首先,该模块也是传递依赖的一部分,因此 maven 尝试下载没有分类器的版本,该版本在包含分类器的版本之前不存在。其次,分类器没有传递给 Maven 发布插件。要将系统变量传递给插件,必须使用该arguments
选项,因此实际命令应该是clean install -Darguments="-Dmy-classifier=custom" -Dmy-classifier=custom -B release:prepare release:perform
. 系统变量声明必须是冗余的,一个用于 pom 依赖,另一个用于发布插件。
推荐阅读
- node.js - 无法使用 axios 在节点 js 中获取发布请求
- html - 最难让字体真正显示 html 文件
- android - 有没有办法为 android Material View 底部导航添加圆角?
- python - 绘制热图单元格大小
- java - 无法在 selenium webdriver java 中使用 @FindBy 进行初始化
- cypress - 赛普拉斯:通过动态创建和单击链接防止打开新选项卡
- django - 如何在 Django 中使用 vue 开发模式
- swiftui - macOS 应用程序上的 12000 个条目的 FetchRequest 非常慢,但 iOS 应用程序却没有 - 尽管代码相同(macOS Big Sur / iOS 14 上的 SwiftUI)
- javascript - 为什么命令“wait sleep”不起作用,尽管该函数被标记为“async”?
- image - 如何使用 View 通过仅下载 URL 显示图像