更改 maven 安装下载 URL,或更改 Nexus 3 工件 URL

Change maven install download URL, or change Nexus 3 artifact URL

我的公司目前在内部转而使用 Nexus 3(运行 on Docker)作为存储库管理工具。作为其中的一部分,我使用以下 curl 命令将公司内部的 Maven 工件迁移到 Nexus:

curl -v -u adminUsername:adminPassword \ 
--upload-file artifact.pom \ 
http://my-nexus-server/repository/maven-releases/groupId/artifactId/version/artifactId-version.pom

此命令有效,所有文件已成功上传到 Nexus。但是,当 groupId 有多个部分时(例如 org.apache.maven.plugins),我(错误地)没有将 groupId 的点转换为斜线。所以,我得到了一个类似于这样的 URL:

http://my-nexus-server/repository/maven-releases/org.apache.maven.plugins/maven-javadoc-plugin/1.2.3/maven-javadoc-plugin-1.2.3.pom

结果证明这是一个问题,因为当 Maven 读取 pom.xml 文件时,它转换了以下依赖项:

<dependency>
    <groupId> org.apache.maven.plugins </groupId>
    <artifactId> maven-javadoc-plugin </artifactId>
    <version> 1.2.3 </version>
</dependency>

以下URL:

http://my-nexus-server/repository/maven-releases/org/apache/maven/plugins/maven-javadoc-plugin/1.2.3/maven-javadoc-plugin-1.2.3.pom

所以,我需要做以下两件事之一:

郑重声明,我们使用的是 Nexus 3 和 Maven 3。Nexus 中的 Maven 存储库是 Maven 2 托管存储库。

对这些任务有什么想法吗?

提前致谢!

  • Find a way to tell maven (preferably in settings.xml) to not convert points to slashes for the groupId, when running mvn install.

我不认为这是可能的——更不用说一个好主意了。 Maven 依赖于这样一个事实,即每个人都以相同的方式将 GAV 映射到 URI 路径。

  • Mass-change URIs in a Nexus repository. (I'll take single-artifact URI changes too)

我不知道这样做的方法。

但是,如果您可以从头开始,我会 认真地 考虑使用 mvn deploy:deploy-file 而不是像 curl 这样的低级工具。像

mvn deploy:deploy-file -Dfile=... -DpomFile=...

在 shell 脚本中。 maven-deploy-plugin 会自动从给定的 pom.xml 中提取 GAV 并使用它来构建正确的 URI 路径;您不需要手动执行此操作。希望对您有所帮助。