如何让 Maven 在从命令行执行依赖插件时使用凭据

Paw*_*lov 7 maven maven-dependency-plugin

我有一个私有 Maven 存储库。它在项目的pom.xml中定义

    <repository>
        <id>some.id</id>
        <url>https://some.host/artifactory/some.id</url>
    </repository>
Run Code Online (Sandbox Code Playgroud)

在我的中~/.m2/settings.xml,我有正确的身份验证块:

    <server>
        <id>some.id</id>
        <username>pawel.veselov@domain.com</username>
        <password>{some-fancy-password-hash-goes-here}</password>
    </server>
Run Code Online (Sandbox Code Playgroud)

构建项目时,Maven 能够毫无问题地访问存储库,正如它应该的那样。在调试输出中,我可以看到它应用了凭据。

但是当我尝试直接下载工件时,Maven 似乎根本没有考虑设置文件。

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get \
  -DremoteRepositories=some.id::::https://some.host/artifactory/some.id \
  -Dartifact=groupId:artifactId:1.1.1
Run Code Online (Sandbox Code Playgroud)

不传输用户名。我可以在调试输出中看到,调用时BasicRepositoryConnector没有用户名/密码组合。

所以问题是 - 是否可以调用一个插件,以便执行任何使 Maven 考虑使用其设置文件中声明的身份验证的过程?

Rev*_*ive 4

remoteRepositories使用属性时,插件似乎没有使用保存的凭据。相反,测试使用repositoryId对我来说按预期工作。

mvn org.apache.maven.plugins:maven-dependency-plugin:3.1.1:get -DrepositoryId=some.id -Dartifact=groupId:artifactId:1.1.1
Run Code Online (Sandbox Code Playgroud)

有效的 pom 必须包含存储库和存储库的 url。如果您计划在没有任何 pom.xml 的空目录中运行它,那么您的存储库定义将需要移动到 settings.xml