从 artifactory 检索带有 maven 时间戳的工件
retrieve artifact with maven timestamp from artifactory
有没有办法检索带有 maven 时间戳的工件,因为它最初是由 maven 上传的?
来自詹金斯日志:
Uploading: http://artifactory.foo/artifactory/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-20160504.182015-2.tar.gz
人工制品 REST 的结果 api:
$ curl -X GET 'http://artifactory.foo/artifactory/api/search/gavc?g=com.foo&a=foo-web-service&v=1.16.0-SNAPSHOT&c=*&repos=libs-snapshot-local'
{
"results" : [ {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT-sources.jar"
}, {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT.pom"
}, {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT.tar.gz"
}, {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT.war"
} ]
}
我想获得与通过 wget 或等效程序上传到的名称相同的名称...
我想达到的目标:
- jenkins 上传 foo-web-service-1.16.0-20160504.182015-2.tar.gz 到 libs-snapshot-local
- 查询 REST api 以获取最新的工件 link,其中包含名称中的时间戳以及参数 a=foo-web-service&version=1.16.0&...
- wget $artifact_link_with_timestamp
我目前实现的但不满足我的需求:
- jenkins 上传 foo-web-service-1.16.0-20160504.182015-2.tar.gz 到 libs-snapshot-local
- 使用参数 a=foo-web-service&version=1.16.0&...
通过 gavc 搜索查询 REST api
- wget $artifact_link
结论 如已接受的答案所述,问题出在工件配置本身。为了实现我想要的效果,我需要快照是独一无二的。
只要您的存储库配置为使用唯一快照(或使用客户端快照策略并且您使用 Maven 3 及更高版本),您始终可以使用 Maven 时间戳作为版本。将其替换为 -SNAPSHOT
是一个 "runtime" 技巧,可以使分辨率更容易。
如果您的存储库配置为使用非唯一快照,则文件实际上存储为 -SNAPSHOT
而不是版本并覆盖以前的快照(不要那样做).
有没有办法检索带有 maven 时间戳的工件,因为它最初是由 maven 上传的?
来自詹金斯日志:
Uploading: http://artifactory.foo/artifactory/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-20160504.182015-2.tar.gz
人工制品 REST 的结果 api:
$ curl -X GET 'http://artifactory.foo/artifactory/api/search/gavc?g=com.foo&a=foo-web-service&v=1.16.0-SNAPSHOT&c=*&repos=libs-snapshot-local'
{
"results" : [ {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT-sources.jar"
}, {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT.pom"
}, {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT.tar.gz"
}, {
"uri" : "http://artifactory.foo/artifactory/api/storage/libs-snapshot-local/com/foo/foo-web-service/1.16.0-SNAPSHOT/foo-web-service-1.16.0-SNAPSHOT.war"
} ]
}
我想获得与通过 wget 或等效程序上传到的名称相同的名称...
我想达到的目标:
- jenkins 上传 foo-web-service-1.16.0-20160504.182015-2.tar.gz 到 libs-snapshot-local
- 查询 REST api 以获取最新的工件 link,其中包含名称中的时间戳以及参数 a=foo-web-service&version=1.16.0&...
- wget $artifact_link_with_timestamp
我目前实现的但不满足我的需求:
- jenkins 上传 foo-web-service-1.16.0-20160504.182015-2.tar.gz 到 libs-snapshot-local
- 使用参数 a=foo-web-service&version=1.16.0&... 通过 gavc 搜索查询 REST api
- wget $artifact_link
结论 如已接受的答案所述,问题出在工件配置本身。为了实现我想要的效果,我需要快照是独一无二的。
只要您的存储库配置为使用唯一快照(或使用客户端快照策略并且您使用 Maven 3 及更高版本),您始终可以使用 Maven 时间戳作为版本。将其替换为 -SNAPSHOT
是一个 "runtime" 技巧,可以使分辨率更容易。
如果您的存储库配置为使用非唯一快照,则文件实际上存储为 -SNAPSHOT
而不是版本并覆盖以前的快照(不要那样做).