是否可以在命令行中在Maven Deploy中传递密码?

时间:2015-01-21 16:05:38

标签: java maven pom.xml

这是目前的工作方式,它是Maven Deploy Plugin Usage

的pom.xml

[...]
  <distributionManagement>
    <repository>
      <id>internal.repo</id>
      <name>MyCo Internal Repository</name>
      <url>Host to Company Repository</url>
    </repository>
  </distributionManagement>
[...]

的settings.xml

[...]
    <server>
      <id>internal.repo</id>
      <username>someUser</username>
      <password>somePassword</password>
    </server>
[...]

我想要实现的是找到一种在命令行输入用户名和密码的方法。实现mvn deploy -someUser -somePassword

3 个答案:

答案 0 :(得分:23)

settings.xml被视为个人用户,因此用户名+密码存储在(用户 - )settings.xml中。所以一般来说,没有理由将它们作为参数传递。 (顺便说一下,密码可以在这里加密存储)maven-deploy-plugin没有选项可以通过命令行传递它们。但是,我见过像黑客这样的黑客:

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

现在你可以做-Dinternal.repo.username=someUser

答案 1 :(得分:1)

我将在此处列出完整的解决方案,但是基本上Robert Scholte的解决方案效果很好。

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

<settings>
    <servers>
        <server>
            <id>internal.repo</id>
            <username>${repo.login}</username>
            <password>${repo.pwd}</password>
        </server>
    </servers>
</settings>  

然后您就

mvn -Drepo.login=someUser -Drepo.pwd=SomePassword clean install

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

mvn -Drepo.login=$REPO_LOGIN -Drepo.pwd=$REPO_PWD clean install

答案 2 :(得分:1)

这也有效:

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