Maven 依赖项从经过验证的 Nexus 获取人工制品

Maven dependency get artefact from authentified Nexus

我想下载一个位于封闭(已验证)Nexus 上的 Jar。我想通过 Maven 做到这一点,与技术无关(例如它可以与 Nexus 或 Artifcatory 一起工作)。

我发现了这个有趣的插件:https://maven.apache.org/plugins/maven-dependency-plugin/get-mojo.html,它适用于中央存储库或任何 "open" 存储库中的工件。

我的命令是:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get -Dartifact=com.test.job:job-template:1.0.0:jar:jar-with-dependencies -Ddest=/tmp/test.jar -DremoteRepositories=http://nexus.test.local/nexus/content/repositories/test-releases/

我收到一个错误:"Not authorized , ReasonPhrase:Unauthorized"。当然,我必须经过身份验证才能获得此神器。如何将我的凭据提供给此命令?我的 Maven settings.xml 已经包含此本地存储库的凭据,但该命令不会读取这些凭据(似乎合乎逻辑)。

谢谢!

~/.m2/settings.xml

中定义服务器标签
...
  <servers>
    <server>
      <id>serverId</id>
      <username>login</username>
      <password>password</password>
    </server>
  </servers>
...

serverId 很重要,您必须在 remoteRepositories 属性中使用相同的标签,因此您应该 运行:

mvn org.apache.maven.plugins:maven-dependency-plugin:2.4:get ... \
-DremoteRepositories=serverId::::http://nexus.test.local/...

当然,您可以根据需要使用任何标签 server/id