我的公司在内部目前转而使用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 3和Maven 3. Nexus中的Maven存储库是一个Maven 2托管存储库。
有关这些任务的任何想法吗?
提前致谢!
答案 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路径;您不需要手动执行此操作。希望有助于您的开始。