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

ste*_*f52 27 java pom.xml maven

这是它目前的工作方式,它是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>
[...]
Run Code Online (Sandbox Code Playgroud)

的settings.xml

[...]
    <server>
      <id>internal.repo</id>
      <username>someUser</username>
      <password>somePassword</password>
    </server>
[...]
Run Code Online (Sandbox Code Playgroud)

而我正在努力实现的是找到一种在命令行输入用户名和密码的方法.实现mvn deploy -someUser -somePassword

Via*_*mov 28

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

在你的~/.m2/settings.xml你应该有以下

<settings>
    <servers>
        <server>
            <id>${repo.id}</id>
            <username>${repo.login}</username>
            <password>${repo.pwd}</password>
        </server>
    </servers>
</settings>  
Run Code Online (Sandbox Code Playgroud)

然后你就

mvn -Drepo.id=myRepo -Drepo.login=someUser -Drepo.pwd=somePassword clean install

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

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


Rob*_*lte 27

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

<username>${internal.repo.username}</username>
Run Code Online (Sandbox Code Playgroud)

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

  • 我不知道我是否称之为黑客攻击,Maven的核心功能是允许变量替换 (4认同)
  • 我正在使用 bitbucket 管道和公共 Docker 映像构建一个项目。由于各种原因,通过选项将用户名和密码传递给 mvn 会更容易,如原始帖子中所述。有什么办法可以做到这一点吗? (3认同)

alo*_*ine 5

这也有效:

<server>
  <id>${repo.id}</id>
  <username>${repo.username}</username>
  <password>${repo.password}</password>
</server>
Run Code Online (Sandbox Code Playgroud)