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

时间:2017-07-31 15:20:10

标签: maven install uri nexus

我的公司在内部目前转而使用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的点转换为斜线。所以,我最终得到了一个类似于此的网址:

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

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

  • 在运行settings.xml时,找到一种方法告诉maven(最好在groupId将点数转换为mvn install的斜杠。
  • 在Nexus存储库中批量更改URI。 (我也将采用单一工件URI更改)

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

有关这些任务的任何想法吗?

提前致谢!

1 个答案:

答案 0 :(得分:1)

  
      
  • 在运行settings.xml时,找一种告诉maven(最好是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路径;您不需要手动执行此操作。希望有助于您的开始。