我正在使用jennkins管道,maven和人工制品来构建产品MyProduct。
插件A使用以下人工快照存储库。
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
guard let selectedImage = info[.originalImage] as? UIImage else {
fatalError("Expected a dictionary containing an image, but was provided the following: \(info)")
}
dismiss(animated: true, completion: nil)
// let us assume that your collection relies on some array called 'images'
guard let selectedCellIndexPath = selectedCellIndexPath,
selectedCellIndexPath.item < images.count else {
return
}
images[selectedCellIndexPath.item] = images
collectionView?.reloadData()
}
插件A生成没有问题,并且似乎已上传到Company Repo和MyProduct Repo。
在构建过程中的某个地方出了问题,并且两个存储库未同步,公司回购中还有一个额外的工件“ * -110.jar和* .110.pm”。
<distributionManagement>
<snapshotRepository>
<id>mvn</id>
<url>https://bin.mydomain.ch/artifactory/myproduct-repo.mvn/</url>
<uniqueVersion>false</uniqueVersion>
</snapshotRepository>
</distributionManagement>
构建插件B时,它会从Company Repo中提取依赖项,并且由于某些原因,它会获取最旧的110快照,并且出现编译错误。 Company Repo maven-metadata.xml指向工件110,而maven-metadata.xml MyProduct Repo指向工件37(最新的和最大的)。
如何告诉插件B使用MyProduct Repo,或至少采用最新的SNAPSHOT工件?
是否可以使用任何詹金斯流水线魔术来模拟错误,换句话说,将其推送到没有时间戳的存储库中(并同时拉出它们)?
如何在公司存储库上重新创建maven-metadata.xml?
答案 0 :(得分:0)
如何告诉插件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
并将其值设置为“ always”。这将始终从指定的URL中提取最新版本的依赖项。
将uniqueVersion
设置为false是另一个主题(违反Semver)。
是否可以使用Jenkins流水线魔术来模拟错误,换句话说,将其推送到没有时间戳的存储库中(并同时拉出它们)?
我永远不会建议您取消Artifactory中的时间戳。出于多种原因,该信息很有价值。我了解您只是在寻找解决问题的方法,但是通过删除时间戳,实际上是在临时性伤口上贴上创可贴。
如何在公司存储库上重新创建maven-metadata.xml?
不确定您的意思。这会自动更新。您不应该强迫Maven对这个文件做任何事情。