从本地maven存储库复制工件

Cpt*_*uss 7 nexus maven

我不明白为什么这么难:

在脚本中,我需要将工件从nexus复制到某个目录.使用Nexus REST API我必须指定我不想知道的存储库.所以我尝试使用maven-dependency-plugin获取目标来获取目标,这很有效.(在这种情况下,我从我们的nexus中的一个组中获取它,包括发行版和快照.)

但是,我现在在我的本地仓库中有了这个工件,并且同一个插件的"复制"目标似乎无法从那里获得该工件.是否真的有必要下载到.m2文件夹并使用unix cp命令获取该jar?以前有人曾将当地回购的文物复制到其他目的地吗?

或者,如果有人可以告诉我如何通过Nexus API获取工件而不指定repo,那也可以.

Cpt*_*uss 4

看起来问题是 _maven.repositories 文件与我公司的特定 Maven 设置结合在一起。

我们不会将有关本地存储库的信息放入我们的settings.xml 中。这一切都在我们所有项目使用的父 pom 中。但如果你想做一些纯粹的 mvn-CLI 魔法,你没有parent-pom,所以你必须自己提供本地存储库的 URL。这可以通过 dependency:get 目标实现,这就是为什么我能够将我的工件从 Nexus 下载到我的本地存储库中。

使用复印时时,您无法指定 URL。但我为什么要这么做呢?我刚刚将该工件下载到我的本地存储库中,对吧?

这就是_maven.repositories文件发挥作用的地方。即使使用 -o 开关,maven3 也会查阅该文件,该文件指定工件来自的原始存储库。(感谢该线程中发布他们的发现的人!)。如果它无法到达存储库,它会声称您的文件不存在。(顺便说一句,恕我直言,这没有帮助。它应该说明原始存储库无法访问,因此文件不会被复制。)

这就是为什么复制对我不起作用的原因。

只需重命名该文件即可解决问题。

不过,我必须研究一个更干净的解决方案。

为了使事情变得更加复杂,我无法使用 dependency:copy 或 dependency:copy-dependecies。由于某些原因,他们需要一个 pom,但我的用例中没有。有效的是 org.apache.maven.plugins:maven-dependency-plugin:2.8:copy 我相信它应该是同一件事,但那是另一个故事了。

感谢您的回答!