【问题标题】:Change maven install download URL, or change Nexus 3 artifact URL更改 Maven 安装下载 URL,或更改 Nexus 3 工件 URL
【发布时间】:2017-08-05 05:08:25
【问题描述】:

我的公司目前在内部转而使用 Nexus 3(在 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>

到以下网址:

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 中)在运行 mvn installgroupId 的点转换为斜线。
  • Nexus 存储库中的大规模更改 URI。 (我也会进行单工件 URI 更改)

为了记录,我们使用的是 Nexus 3 和 Maven 3。Nexus 中的 Maven 存储库是 Maven 2 托管的存储库。

对这些任务有任何想法吗?

提前致谢!

【问题讨论】:

    标签: maven installation uri nexus


    【解决方案1】:
    • 找到一种方法告诉 maven(最好在 settings.xml 中)在运行 mvn install将 groupId 的点转换为斜线。

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

    • Nexus 存储库中的大规模更改 URI。 (我也会进行单工件 URI 更改)

    我不知道有什么方法可以做到这一点。

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

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

    在 shell 脚本中。 maven-deploy-plugin 将自动从给定的pom.xml 中提取 GAV,并使用它来构造正确的 URI 路径;您无需手动执行此操作。希望这有助于您入门。

    【讨论】:

    • 看起来就是这样(从头开始)。感谢您的建议!
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2012-08-31
    • 1970-01-01
    • 2016-01-09
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2023-02-06
    相关资源
    最近更新 更多