12

我们使用的是 TeamCity 9.1 和默认捆绑的 Maven 版本 3.0.5

在构建中,我们使用 Maven 与 Nexus 服务器进行交互。

我们想加密 Maven settings.xml 文件中的密码,如本文所述: http ://maven.apache.org/guides/mini/guide-encryption.html

这需要一个 settings-security.xml 文件,该文件应与 Maven settings.xml 位于同一文件夹中。setting.xml 文件保存在 TeamCity 中,并作为自定义“用户设置选择”文件部署到服务器 - 所以我不知道它在代理上的部署位置。

我们应该在哪里保存 settings-security.xml 文件?这是否应该手动部署到所有代理?如果是这样,它应该在哪个文件夹中?(我们有 Windows 和 Linux 代理)

我不确定在 TeamCity 中使用加密的 Maven 密码的最佳做法是什么,所以我会提供任何帮助。

谢谢

4

1 回答 1

5

我不知道它在代理上的部署位置”..您可以在构建日志输出中找到它..只需搜索设置..使用用户设置文件,它们通常存储在临时目录中构建代理。

当您尝试使用(根据加密指南)加密您的密码时:

mvn --encrypt-password my_password

它期望找到:settings-security.xml;如果这不存在,你会得到。

[ERROR] Error executing Maven.
[ERROR] java.io.FileNotFoundException: /home/krbuild/.m2/settings-security.xml (No such file or directory)
[ERROR] Caused by: /home/krbuild/.m2/settings-security.xml (No such file or directory)

因此,安全文件需要存储在您打算在其上运行构建配置的每个代理上(而不是在 VCS 中)。仍然没有对此功能的专门支持;见TW-39595

解决方法是设置代理属性,例如

path.to.maven.security=/path/to/file/security-settings.xml

然后在您的 Maven 构建步骤中引用它:

-Dsettings.security=%path.to.maven.security%
于 2017-11-27T12:15:45.557 回答