我想永久链接到 Artifactory 中工件的最新快照版本。如果我们使用 1.0-SNAPSHOT,我想要一个下载最新 1.0-SNAPSHOT JAR 的 URL。我可以通过在我们的服务器上找到最新的工件http://hostname/artifactory/libs-snapshot/groupId/artifactId/1.0-SNAPSHOT/
。除了检查时间戳之外,我还可以通过打开 maven-metadata.xml 并将 metadata/versioning/snapshot 时间戳和 buildNumber 与同一目录中的 JAR 匹配来确定哪个是最新的。这可以编写脚本,但理想情况下,Artifactory 已经有办法以这种方式构建永久链接。Artifactory 是否提供这样的 URL?
5 回答
对 URL 名称中带有 artifactId-1.0-SNAPSHOT.jar 的条目进行正常查询应该会自动返回最新的快照。请参阅此处的文档
一件事:如果没有 pom,这基于最新的创建日期,或者如果有 pom,则基于最新创建的 pom。混合使用 pom 和非 pom 部署可能会导致奇怪的结果!
我尝试使用 shell 脚本,它对我有用。
Step1 : 通过点击用户名或创建普通用户获取您的用户帐户的加密密码。转到以下链接中的使用安全密码部分 http://www.jfrog.com/confluence/display/RTF/Centrally+Secure+Passwords
第 2 步:在您的本地计算机上创建一个临时文件夹并输入此 curl(可能是 Windows 的 wget)命令:
curl -o tmp/foo.jar --user <username>:<encrypted_password> <artifactory_url>/list/libs-snapshot-local/com/search/foo/1.0/foo-1.0-SNAPSHOT.JAR
您在 tmp 文件夹中的 foo.jar 是最新版本。如果我们没有像上面那样给出时间戳,它将下载该版本中的最新工件。希望这可以帮助!
这可能会有所帮助:
尽管 Artifactory 的免费版本中没有永久链接功能,但可以按照您的建议轻松编写脚本。我在引用的问题中提供了一个快速脚本来执行此操作。
希望能帮助到你。
另一个可移植选项是使用 maven 命令行:
mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -DartifactId=[artifactId] -DgroupId=[groupId] -Dversion=[version] -Ddest=[dest file]
这对我有用(没有搜索 API,只有直接的工件 URL):
curl -O -J --user <username>:<encrypted_password> http://hostname/artifactory/libs-snapshot/groupId/artifactId/1.0-SNAPSHOT/artifactId-1.0-SNAPSHOT.jar
基本上在工件名称中使用 1.0-SNAPSHOT 会下载最新版本的 1.0-SNAPSHOT 快照。