更改 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
所以,我需要做以下两件事之一:
- 找到一种方法告诉 maven(最好在
settings.xml
中)不 将 groupId
的点转换为斜线,当 运行宁mvn install
.
- Nexus 存储库中的大量更改 URI。 (我也将采用单一工件 URI 更改)
郑重声明,我们使用的是 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 路径;您不需要手动执行此操作。希望对您有所帮助。
我的公司目前在内部转而使用 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
所以,我需要做以下两件事之一:
- 找到一种方法告诉 maven(最好在
settings.xml
中)不 将groupId
的点转换为斜线,当 运行宁mvn install
. - Nexus 存储库中的大量更改 URI。 (我也将采用单一工件 URI 更改)
郑重声明,我们使用的是 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 runningmvn 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 路径;您不需要手动执行此操作。希望对您有所帮助。