Java 可以在命令行的Maven Deploy中传递密码吗?

Java 可以在命令行的Maven Deploy中传递密码吗?,java,maven,pom.xml,Java,Maven,Pom.xml,这就是它目前的工作方式,也是 pom.xml [...] <distributionManagement> <repository> <id>internal.repo</id> <name>MyCo Internal Repository</name> <url>Host to Company Repository</url> </rep

这就是它目前的工作方式,也是

pom.xml

[...]
  <distributionManagement>
    <repository>
      <id>internal.repo</id>
      <name>MyCo Internal Repository</name>
      <url>Host to Company Repository</url>
    </repository>
  </distributionManagement>
[...]
[…]
内部回购
MyCo内部存储库
主机到公司存储库
[...]
settings.xml

[...]
    <server>
      <id>internal.repo</id>
      <username>someUser</username>
      <password>somePassword</password>
    </server>
[...]
[…]
内部回购
某个用户
密码
[...]

我试图实现的是找到一种在命令行中输入用户名和密码的方法。为了实现
mvn部署-someUser-somePassword

设置.xml被认为是个人的,因此用户名+密码存储在(user-
设置.xml
中。所以一般来说,没有理由把它们当作论点。(顺便说一句,这里可以加密存储密码)
maven部署插件
没有通过命令行传递密码的选项。然而,我见过如下黑客:

<username>${internal.repo.username}</username>
${internal.repo.username}

现在您可以执行
-Dinternal.repo.username=someUser

我将在这里列出完整的解决方案,但基本上Robert Scholte的解决方案非常出色

~/.m2/settings.xml
中,您应该具有以下内容


${repo.id}
${repo.login}
${repo.pwd}
然后你就

mvn-Drepo.id=myRepo-Drepo.login=someUser-Drepo.pwd=somePassword干净安装

您甚至可以使用环境变量(例如,如果您在远程服务器/容器上执行此操作):

mvn-Drepo.id=$REPO\u id-Drepo.login=$REPO\u login-Drepo.pwd=$REPO\u pwd clean install

这同样有效:

<server>
  <id>${repo.id}</id>
  <username>${repo.username}</username>
  <password>${repo.password}</password>
</server>

${repo.id}
${repo.username}
${repo.password}

我不知道我是否会称之为黑客,Maven的一个核心功能是允许变量替换这是我试图阻止的事情,但它确实完成了任务。关于
${internal.repo.username}
:您的意思是将其添加到
settings.xml
还是
pom.xml
?我正在谈论
settings.xml
我正在使用bitbucket管道和公共Docker映像构建一个项目。由于各种原因,通过选项将用户名和密码传递给mvn会容易得多,如原始帖子中所述。有办法吗?谢谢!我使用bitbucket管道和一个公开可用的Docker文件来提供构建环境,因此我希望避免将用户名和密码硬编码到settings.xml文件中。上面建议的解决方案应该很有效。接下来:我还可以参数化repo id,例如,$id(inside settings.xml)?答案是“是”--存储库标识符也可以是一个参数。我已经为此创建了一个方便的docker映像。很好的技巧!非常感谢。您能否使用
部署
更改
安装