Here是artifactory-maven-plugin
的配置示例:
<build>
<plugins>
...
<plugin>
<groupId>org.jfrog.buildinfo</groupId>
<artifactId>artifactory-maven-plugin</artifactId>
<version>2.6.1</version>
<inherited>false</inherited>
<executions>
<execution>
<id>build-info</id>
<goals>
<goal>publish</goal>
</goals>
<configuration>
<deployProperties>
<gradle>awesome</gradle>
<review.team>qa</review.team>
</deployProperties>
<publisher>
<contextUrl>https://oss.jfrog.org</contextUrl>
<username>deployer</username>
<password>{DESede}...</password>
<repoKey>libs-release-local</repoKey>
<snapshotRepoKey>libs-snapshot-local</snapshotRepoKey>
</publisher>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在这种情况下,我必须手动设置contextUrl
,userName
和password
。虽然标准maven部署插件使用setting.xml
中的这些参数(就像那样):
<servers>
<server>
<username>username</username>
<id>server-id</id>
<password>pass</password>
</server>
</servers>
为什么jfrom没有使用来自setting.xml
的用户名,网址,...等?有没有办法只指定没有pass和username的服务器ID?
当然有人可以在设置xml中定义属性并在插件定义中使用它们,但在这种情况下,这些属性可以很容易地与所有项目共享,并在第三方构建期间由任何人输出到控制台。
<properties>
<username></username>
</properties>
答案 0 :(得分:0)
official documentation实际上暗示了一种不同的方法:
确保您的Artifactory发布商凭据安全
如果您希望保持Artifactory发布者凭据(username
和password
)的安全(而不是在插件配置中将它们作为自由文本提供),我们建议将它们存储为环境变量或系统属性,并使其具有插件在需要时读取它们。由于通常的Maven部署不支持settings.xml
中的环境变量或系统属性,因此此功能对于Maven Artifactory插件是唯一的。
因此,确实引用settings.xml
中定义的服务器ID的预期功能未实现。
一方注意:为了实施良好实践,应通过Continuous Integration服务器(即Jenkins)以自动方式执行Maven存储库的部署。在这种情况下,CI服务器的Artifactory插件(即Artifactory Jenkins Plugin)将以安全的方式处理它,仅在一个地方(CI服务器)集中此机制,在用户管理和治理之后,避免意外操作从本地机器。否则可能出错的事情(从本地机器发布):
将它放在pom.xml
中可能确实以某种方式暴露于上述问题(团队中的某些人可能错误地触发它),而自动化流程和门将确保某些步骤。
答案 1 :(得分:0)
我同意建立一个自动构建框并使用jenkins / hudson或类似产品将是理想的选择。如果你时间紧张,仍然想要一些更安全的东西,你可以考虑设置ssh身份验证。文档如下:
https://www.jfrog.com/confluence/display/RTF/SSH+Integration