maven - 如何让 Artifactory 使用最新的(而不是最旧的)快照工件?
问题描述
我正在使用 jennkins 管道、maven 和 artifactory 来构建产品 MyProduct。
插件 A 使用以下 Artifactory Snapshot Repository。
<distributionManagement>
<snapshotRepository>
<id>mvn</id>
<url>https://bin.mydomain.ch/artifactory/myproduct-repo.mvn/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
插件 A 构建没有问题,并且似乎上传到 Company Repo 和 MyProduct Repo。
在构建过程中的某个地方出了点问题,两个存储库没有同步,Company Repo 中有一个额外的工件,“*-110.jar & *.110.pm”。
Company Repo
Index of mvn/ch/sbb/myproduct/cloud/myproduct-common/2.2.2-SNAPSHOT
maven-metadata.xml 21-Nov-2018 01:13 781 bytes
myproduct-common-2.2.2-20181116.162503-110.jar 16-Nov-2018 16:25 83.55 KB
myproduct-common-2.2.2-20181116.162503-110.pom 16-Nov-2018 16:25 2.97 KB
myproduct-common-2.2.2-20181120.235538-34.jar 20-Nov-2018 23:55 85.76 KB
myproduct-common-2.2.2-20181120.235538-34.pom 20-Nov-2018 23:55 3.44 KB
myproduct-common-2.2.2-20181121.002820-35.jar 21-Nov-2018 00:28 85.76 KB
myproduct-common-2.2.2-20181121.002820-35.pom 21-Nov-2018 00:28 3.44 KB
myproduct-common-2.2.2-20181121.011343-36.jar 21-Nov-2018 01:13 85.76 KB
myproduct-common-2.2.2-20181121.011343-36.pom 21-Nov-2018 01:13 3.44 KB
MyProduct Repo
Index of myproduct-repo.mvn/ch/sbb/myproduct/cloud/myproduct-common/2.2.2-SNAPSHOT
maven-metadata.xml 21-Nov-2018 01:13 781 bytes
myproduct-common-2.2.2-20181120.235538-34.jar 20-Nov-2018 23:55 85.76 KB
myproduct-common-2.2.2-20181120.235538-34.pom 20-Nov-2018 23:55 3.44 KB
myproduct-common-2.2.2-20181121.002820-35.jar 21-Nov-2018 00:28 85.76 KB
myproduct-common-2.2.2-20181121.002820-35.pom 21-Nov-2018 00:28 3.44 KB
myproduct-common-2.2.2-20181121.011343-36.jar 21-Nov-2018 01:13 85.76 KB
myproduct-common-2.2.2-20181121.011343-36.pom 21-Nov-2018 01:13 3.44 KB
当我构建插件 B 时,它会从 Company Repo 中获取依赖项,并且由于某些原因,它会获取最旧的 110 快照,并且出现编译错误。Company Repo maven-metadata.xml 指向工件 110,而 maven-metadata.xml MyProduct Repo 指向工件 37(最新和最好的)。
我如何告诉插件 B 使用 MyProduct Repo,或者至少获取最新的 SNAPSHOT 工件?
是否有任何 jenkins 管道魔术可以用来模拟 false,换句话说,没有时间戳推送到存储库(也可以拉取它们)?
如何在公司回购中重新创建 maven-metadata.xml?
解决方案
我如何告诉插件 B 使用 MyProduct Repo,或者至少获取最新的 SNAPSHOT 工件?
<distributionManagement>
<snapshotRepository>
<id>mvn</id>
<url>https://bin.mydomain.ch/artifactory/myproduct-repo.mvn/</url>
<uniqueVersion>false</uniqueVersion>
<updatePolicy>always</updatePolicy>
</snapshotRepository>
</distributionManagement>
添加updatePolicy
并将其值设置为“始终”。这将始终从指定的 URL 中提取最新版本的依赖项。
设置uniqueVersion
为 false 完全是另一个主题(违反 Semver)。
是否有任何 Jenkins 管道魔法可以用来模拟 false,换句话说,在没有时间戳的情况下推送到存储库(并拉取它们)?
我永远不会建议在 Artifactory 中取消时间戳。出于多种原因,该信息很有价值。我知道您只是在寻找解决问题的方法,但通过删除时间戳,您实际上是在开放性伤口上贴上创可贴。
如何在公司回购中重新创建 maven-metadata.xml?
不知道你在这里的意思。这是自动更新的。你不应该强迫 Maven 对这个文件做任何事情。
推荐阅读
- react-native - 如何处理在 react-native 中休眠的设备
- spring - JPQL 多对多 Dto 选择失败
- angular - Css 不加载角度项目中的打印
- mysql-workbench - 关于使用游标 Mysql 进行更新
- shopify - Shopify 产品页面上的复选框
- splunk - savesearches.conf 文件中的 dispatch.earliest_time
- javascript - 如何解决在计算 pi 时无法将 >15 位的数字转换为 bigNumber 的问题?
- css - div右侧的位置图标
- python - QGraphicsView fitInView 具有非常小的视口矩形尺寸
- python - 无效的参数,不是字符串或列,pyspark UDF