我已经建立了一个Nexus存储库来存储我们构建的工件,第三方依赖项以及自制的共享源代码头。
我目前正在使用wget检索第三方依赖项和共享的源标头,以在构建我们的软件应用程序时使用(特定应用程序的源代码存储在单独的git存储库中)。
使用wget时,本质上必须知道所需工件的确切版本-您必须明确知道最新的版本号。
是否有另一种方法可以从maven版本的nexus存储库中检索工件的最新版本,而实际上不知道版本号是什么?
如果有一种方法可以使用wget代替maven本身来实现,那将是理想的选择,因为我不想强迫用户安装apache maven只是为了从关系下载工件。
答案 0 :(得分:0)
我认为您不能仅通过使用curl来做到这一点。您将需要完成其他任务才能实现所需的目标。
有可能:
您应该首先访问Maven存储库元数据文件。 (您可以在这里找到文档:http://maven.apache.org/ref/3-LATEST/maven-repository-metadata/repository-metadata.html)
例如,假设您要从maven Central下载以下Maven工件的最新版本:
groupId = javax
artifactId = javaee-api
下载以下文件:
http://central.maven.org/maven2/javax/javaee-api/maven-metadata.xml
其内容将类似于:
<metadata>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<versioning>
<latest>8.0</latest>
<release>8.0</release>
<versions>
<version>7.0</version>
<version>8.0</version>
</versions>
<lastUpdated>20170915063942</lastUpdated>
</versioning>
</metadata>
然后,您将需要访问最新标签以检索最新版本。
文档中关于最新或发行标签的含义如下:
latest String What the latest version in the directory is, including snapshots
release String What the latest version in the directory is, of the releases only
您还应该在nexus存储库中找到此文件,并且应该使用诸如xmllint之类的东西来获取所需的值。例如:
curl http://central.maven.org/maven2/jx/javaee-api/maven-metadata.xml \
| xmllint --xpath "/metadata/versioning/latest/text()" -
或
curl http://central.maven.org/maven2/jx/javaee-api/maven-metadata.xml \
| xmllint --xpath "/metadata/versioning/release/text()" -
取决于您的确切需求。
之后,您可以使用版本信息来组成要下载的工件的完整URL。
希望这会有所帮助。
干杯。
Edu。