如何使Artifactory使用最新(而不是最旧的)Snapshot工件?

时间:2018-11-21 06:25:28

标签: maven jenkins-pipeline artifactory

我正在使用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?

1 个答案:

答案 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对这个文件做任何事情。