我们正在使用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密码的最佳做法是什么,所以我会提供任何帮助。
谢谢
答案 0 :(得分:3)
“我不知道它在代理上的部署位置”..您可以在构建日志输出中找到它。只需搜索设置..使用用户设置文件,它们通常存储在构建代理程序的 temp 目录中。
当您尝试使用(按照encryption guide )加密密码时:
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%