Java 可以在命令行的Maven Deploy中传递密码吗?
这就是它目前的工作方式,也是 pom.xmlJava 可以在命令行的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
[...]
<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映像。很好的技巧!非常感谢。您能否使用部署更改安装?