通过 REST api 获取 Nexus 存储库的所有版本
Get all versions of a Nexus repository via REST api
我想列出 Nexus (2.11.1-01) 快照存储库的所有可用版本。
通过 REST api / lucene 和 gav coordinates
的方式是这样的:
http://nexus/service/local/lucene/search?g=com.foo&a=foo-bar&v=
列出快照版本,但也 发布版本,因为工件 foo-bar 也存在于发布存储库中。因此,我阅读了 maven-metadata.xml :
http://nexus/service/local/repositories/com-foo-snapshots/content/com/foo/foo-bar/maven-metadata.xml
lucene 搜索缺少像 maven 功能一样的存储库坐标,f.e。
获取最新版本的快照:
http://nexus/service/local/artifact/maven/resolve?r=com-foo-snapshots&g=com.foo&a=foo-bar&v=0.3-SNAPSHOT
或获取最新快照版本:
http://nexus/service/local/artifact/maven/resolve?r=com-foo-snapshots&g=com.foo&a=foo-bar&v=LATEST
看来,我不能使用 maven-metadata.xml,因为不是每个存储库都包含该文件。
是否有任何其他方式通过 Nexus REST api 或另一个 api 获取特定 Nexus repository/artifactid 的所有版本,即使 artefactid 存在于不同的存储库中?
是否可以强制为每个存储库创建一个 maven-metadata.xml?
可用的管理计划 Nexus 任务是不够的,也许是每次工件更新都会触发的触发器?
无需手动解析maven-metadata.xml.
http://nexus/service/local/lucene/search?g=com.foo&a=foo-bar
returns 对于每个 <artifactHit>
所有剩余的项目,唯一标识可以从 Nexus 下载的任何内容,即:<repositoryId>
和 <extension>
(和 <classifier>
这里未定义):
...
<artifact>
<groupId>com.foo</groupId>
<artifactId>foo-bar</artifactId>
<version>2.8.1</version>
<latestSnapshot>2.8.5-SNAPSHOT</latestSnapshot>
<latestSnapshotRepositoryId>snapshots</latestSnapshotRepositoryId>
<latestRelease>2.8.3</latestRelease>
<latestReleaseRepositoryId>releases</latestReleaseRepositoryId>
<artifactHits>
<artifactHit>
<repositoryId>releases</repositoryId>
<artifactLinks>
<artifactLink>
<extension>pom</extension>
</artifactLink>
<artifactLink>
<extension>war</extension>
</artifactLink>
</artifactLinks>
</artifactHit>
</artifactHits>
</artifact>
<artifact>
<groupId>com.foo</groupId>
<artifactId>foo-bar</artifactId>
<version>2.8.0</version>
<latestSnapshot>2.8.5-SNAPSHOT</latestSnapshot>
<latestSnapshotRepositoryId>snapshots</latestSnapshotRepositoryId>
<latestRelease>2.8.3</latestRelease>
<latestReleaseRepositoryId>releases</latestReleaseRepositoryId>
<artifactHits>
<artifactHit>
<repositoryId>releases</repositoryId>
<artifactLinks>
<artifactLink>
<extension>pom</extension>
</artifactLink>
<artifactLink>
<extension>war</extension>
</artifactLink>
</artifactLinks>
</artifactHit>
</artifactHits>
</artifact>
因此,在您自行解析 lucene/search 响应后,您可以通过 repositoryId 对其进行过滤。我认为它回答了 "to get all versions of a specific Nexus repository/artifactid even if artefactid exists in different repositories".
我想列出 Nexus (2.11.1-01) 快照存储库的所有可用版本。
通过 REST api / lucene 和 gav coordinates
的方式是这样的:
http://nexus/service/local/lucene/search?g=com.foo&a=foo-bar&v=
列出快照版本,但也 发布版本,因为工件 foo-bar 也存在于发布存储库中。因此,我阅读了 maven-metadata.xml :
http://nexus/service/local/repositories/com-foo-snapshots/content/com/foo/foo-bar/maven-metadata.xml
lucene 搜索缺少像 maven 功能一样的存储库坐标,f.e。
获取最新版本的快照:
http://nexus/service/local/artifact/maven/resolve?r=com-foo-snapshots&g=com.foo&a=foo-bar&v=0.3-SNAPSHOT
或获取最新快照版本:
http://nexus/service/local/artifact/maven/resolve?r=com-foo-snapshots&g=com.foo&a=foo-bar&v=LATEST
看来,我不能使用 maven-metadata.xml,因为不是每个存储库都包含该文件。
是否有任何其他方式通过 Nexus REST api 或另一个 api 获取特定 Nexus repository/artifactid 的所有版本,即使 artefactid 存在于不同的存储库中?
是否可以强制为每个存储库创建一个 maven-metadata.xml?
可用的管理计划 Nexus 任务是不够的,也许是每次工件更新都会触发的触发器?
无需手动解析maven-metadata.xml.
http://nexus/service/local/lucene/search?g=com.foo&a=foo-bar
returns 对于每个 <artifactHit>
所有剩余的项目,唯一标识可以从 Nexus 下载的任何内容,即:<repositoryId>
和 <extension>
(和 <classifier>
这里未定义):
...
<artifact>
<groupId>com.foo</groupId>
<artifactId>foo-bar</artifactId>
<version>2.8.1</version>
<latestSnapshot>2.8.5-SNAPSHOT</latestSnapshot>
<latestSnapshotRepositoryId>snapshots</latestSnapshotRepositoryId>
<latestRelease>2.8.3</latestRelease>
<latestReleaseRepositoryId>releases</latestReleaseRepositoryId>
<artifactHits>
<artifactHit>
<repositoryId>releases</repositoryId>
<artifactLinks>
<artifactLink>
<extension>pom</extension>
</artifactLink>
<artifactLink>
<extension>war</extension>
</artifactLink>
</artifactLinks>
</artifactHit>
</artifactHits>
</artifact>
<artifact>
<groupId>com.foo</groupId>
<artifactId>foo-bar</artifactId>
<version>2.8.0</version>
<latestSnapshot>2.8.5-SNAPSHOT</latestSnapshot>
<latestSnapshotRepositoryId>snapshots</latestSnapshotRepositoryId>
<latestRelease>2.8.3</latestRelease>
<latestReleaseRepositoryId>releases</latestReleaseRepositoryId>
<artifactHits>
<artifactHit>
<repositoryId>releases</repositoryId>
<artifactLinks>
<artifactLink>
<extension>pom</extension>
</artifactLink>
<artifactLink>
<extension>war</extension>
</artifactLink>
</artifactLinks>
</artifactHit>
</artifactHits>
</artifact>
因此,在您自行解析 lucene/search 响应后,您可以通过 repositoryId 对其进行过滤。我认为它回答了 "to get all versions of a specific Nexus repository/artifactid even if artefactid exists in different repositories".