我们使用gradle来下载依赖项(从我们本地的Artifactory实例)并发布工件(到我们本地的Artifactory实例),但是需要使用各种不同的(非渐变)工具来进行构建。
因此,我们在gradle文件中表达了一组各种类型的依赖项(测试依赖项,编译依赖项等),并且我们的构建通过运行gradle来获取其中一些依赖项而开始。
然后我们过渡到其他工具以进行真正的构建,然后在构建完成后,运行gradle artifactoryPublish任务以将发布的工件发布回Artifactory
Artifactory构建信息构造似乎非常适合跟踪我们的依赖关系和发布工件。
但是... gradle artifactoryPublish任务发布给Artifactory的build-info构造不包含我们的任何依赖项信息。我们的依赖项下载是在单独的不相关任务中完成的,artifactoryPublish任务不知道它们是否相关。另外,还有其他(测试等)依赖项,它们在gradle中表示,我希望在依赖项中列出这些依赖项(以便可以升级),但是在构建过程中不需要/下载这些依赖项。
我正在寻找一种方法,以获取在Artifactory build-info构造中表示的所有表示的gradle依赖关系(其中一些是可选的,并且在构建之前未下载)。
我注意到jfrog CLI工具支持表达通过带外机制(通过其build-add-dependencies操作)下载的构建信息。我相信我可以显式下载每个依赖项(包括测试依赖项和构建不需要的其他可选依赖项),然后使用此操作以将那些引用添加到build-info构造中。但是...这似乎效率很低,因为我实际上不需要所有这些依赖关系进行构建,我只希望build-info引用它们。
我还注意到,在Artifactory REST API中,有一个用于手动上传构建信息文件的选项。因此,大概我可以手动创建一个引用Artifactory中已经存在的依赖项的构建信息文件,而无需实际在本地下载它们。这似乎很有效,但是...这似乎很脆弱/容易出错,因为build-info构造可能会随着时间而改变。
还有其他更好的选择要考虑吗?