我有这样的 maven-metadata.xml 文件内容:
<groupId>com.ifact</groupId>
<artifactId>xxxx-exporter</artifactId>
<versioning>
<latest>0.0.21</latest>
<release>0.0.21</release>
<versions>
<version>0.0.1</version>
<version>0.0.2</version>
<version>0.0.3</version>
<version>0.0.4</version>
<version>0.0.5</version>
<version>0.0.6</version>
<version>0.0.7</version>
<version>0.0.8</version>
<version>0.0.9</version>
<version>0.0.10</version>
<version>0.0.11</version>
<version>0.0.12</version>
<version>0.0.13</version>
<version>0.0.14</version>
<version>0.0.15</version>
<version>0.0.16</version>
<version>0.0.17</version>
<version>0.0.18</version>
<version>0.0.19</version>
<version>0.0.20</version>
<version>0.0.20-1</version>
<version>0.0.20-2</version>
<version>0.0.21</version>
</versions>
<lastUpdated>20191206104706</lastUpdated>
</versioning>
</metadata>
我们看到0.0.21是最新的神器版本。(创建于2019 年 12 月 1 日星期日 13:28:29 GMT+0200)
和
0.0.20-1(创建于2019 年 12 月 6 日星期五 12:47:03 GMT+0200)
0.0.20-2(创建于2019 年 12 月 6 日星期五 12:46:21 GMT+0200)
所以 maven-metadata.xml 不是按创建日期排序文件,而是按版本排序。
但是我需要获取最后更新/上传的工件,我不能依赖 maven-metadata.xml 文件的内容。
我尝试使用 API 调用:
http://127.0.0.1:8081/service/rest/v1/search/assets?sort=&repository=xxxx-exporter-release&maven.extension=jar
并看到了一个正确的结果:
"items": [
{
"downloadUrl": "http://127.0.0.1:8081/repository/xxxx-exporter-release/com/ifact/xxxx-exporter/0.0.21/xxxx-exporter-0.0.21.jar",
"path": "com/ifact/xxxx-exporter/0.0.21/xxxx-exporter-0.0.21.jar",
"id": "Yml6aWJveC1leHBvcnRlci1yZWxlYXNlOmExMTg4MWU5MDBiZWQyNTYzMWJhOThlMDJjNTczM2Zi",
"repository": "xxxx-exporter-release",
"format": "maven2",
"checksum": {
"sha1": "3c775285fa2f86aabe4d7ddc42ee0a5092fa4029",
"md5": "066e78dbfcc1dc682fdbbe0241acca5a"
}
},
{
"downloadUrl": "http://127.0.0.1:8081/repository/xxxx-exporter-release/com/ifact/xxxx-exporter/0.0.20-2/xxxx-exporter-0.0.20-2.jar",
"path": "com/ifact/xxxx-exporter/0.0.20-2/xxxx-exporter-0.0.20-2.jar",
"id": "Yml6aWJveC1leHBvcnRlci1yZWxlYXNlOmExMTg4MWU5MDBiZWQyNTYwZmQ0OWMxY2M4MDhhYjhh",
"repository": "xxxx-exporter-release",
"format": "maven2",
"checksum": {
"sha1": "667138ef9d6c956b38c4691f415c1aea3451f492",
"md5": "742607e475560ef2718d8c73c9659a2a"
}
},
{
"downloadUrl": "http://127.0.0.1:8081/repository/xxxx-exporter-release/com/ifact/xxxx-exporter/0.0.20-1/xxxx-exporter-0.0.20-1.jar",
"path": "com/ifact/xxxx-exporter/0.0.20-1/xxxx-exporter-0.0.20-1.jar",
"id": "Yml6aWJveC1leHBvcnRlci1yZWxlYXNlOmExMTg4MWU5MDBiZWQyNTY4YTJmYzM3MWI5MDY2OTcz",
"repository": "xxxx-exporter-release",
"format": "maven2",
"checksum": {
"sha1": "7a5a77bef08f798d36a4e1eefe36d9e122690f2b",
"md5": "77b35b49278a30141afcb3675c66c26a"
}
}
],
"continuationToken": null
}
API 按创建时间或上次上传对它们进行排序。但是,如果我们在 maven-metadata.xml 中下载一个标记为最新 0.0.21的工件。在此之后再次调用 API
http://127.0.0.1:8081/service/rest/v1/search/assets?sort=&repository=xxxx-exporter-release&maven.extension=jar
在回应中,我们看到:
"items": [
"downloadUrl": "http://127.0.0.1:8081/repository/xxxx-exporter-release/com/ifact/xxxx-exporter/0.0.20/xxxx-exporter-0.0.20.jar",
"path": "com/ifact/xxxx-exporter/0.0.20/xxxx-exporter-0.0.20.jar",
"id": "Yml6aWJveC1leHBvcnRlci1yZWxlYXNlOmExMTg4MWU5MDBiZWQyNTZkZDkxNWE5MWVjMTUzZDdj",
"repository": "xxxx-exporter-release",
"format": "maven2",
"checksum": {
"sha1": "393741a956166b3354700ec647fd1f075e86b515",
"md5": "aeacbd02eb39da06732bfb80beb7dd64"
}
},
{
"downloadUrl": "http://127.0.0.1:8081/repository/xxxx-exporter-release/com/ifact/xxxx-exporter/0.0.20-2/xxxx-exporter-0.0.20-2.jar",
"path": "com/ifact/xxxx-exporter/0.0.20-2/xxxx-exporter-0.0.20-2.jar",
"id": "Yml6aWJveC1leHBvcnRlci1yZWxlYXNlOmExMTg4MWU5MDBiZWQyNTYwZmQ0OWMxY2M4MDhhYjhh",
"repository": "xxxx-exporter-release",
"format": "maven2",
"checksum": {
"sha1": "667138ef9d6c956b38c4691f415c1aea3451f492",
"md5": "742607e475560ef2718d8c73c9659a2a"
}
},
{
"downloadUrl": "http://127.0.0.1:8081/repository/xxxx-exporter-release/com/ifact/xxxx-exporter/0.0.20-1/xxxx-exporter-0.0.20-1.jar",
"path": "com/ifact/xxxx-exporter/0.0.20-1/xxxx-exporter-0.0.20-1.jar",
"id": "Yml6aWJveC1leHBvcnRlci1yZWxlYXNlOmExMTg4MWU5MDBiZWQyNTY4YTJmYzM3MWI5MDY2OTcz",
"repository": "xxxx-exporter-release",
"format": "maven2",
"checksum": {
"sha1": "7a5a77bef08f798d36a4e1eefe36d9e122690f2b",
"md5": "77b35b49278a30141afcb3675c66c26a"
}
},
{
"downloadUrl": "http://127.0.0.1:8081/repository/xxxx-exporter-release/com/ifact/xxxx-exporter/0.0.21/xxxx-exporter-0.0.21.jar",
"path": "com/ifact/xxxx-exporter/0.0.21/xxxx-exporter-0.0.21.jar",
"id": "Yml6aWJveC1leHBvcnRlci1yZWxlYXNlOmExMTg4MWU5MDBiZWQyNTYzMWJhOThlMDJjNTczM2Zi",
"repository": "xxxx-exporter-release",
"format": "maven2",
"checksum": {
"sha1": "3c775285fa2f86aabe4d7ddc42ee0a5092fa4029",
"md5": "066e78dbfcc1dc682fdbbe0241acca5a"
}
}
],
"continuationToken": null
}
最后下载的工件在 API 响应中成为最新的。
如何获取最后更新/上传的工件?
Nexus 版本为 Sonatype Nexus Repository ManagerOSS 3.19.1-01