【问题标题】:Maven settings.xml with an Artifactory <server/> using SSH keys for authentication带有 Artifactory <server/> 的 Maven settings.xml,使用 SSH 密钥进行身份验证
【发布时间】:2020-02-21 22:01:03
【问题描述】:

使用 Artifacory 生成的 maven 设置,我可以运行 mvn deploy,构建完成,工件部署成功。

由于能够将公钥上传到 Artifactory(请参阅:https://jfrog.com/article/ssh/),我希望将生成的~/.m2/settings.xml 中的用户名/密码换成一对私有密钥/密码(请参阅:https://maven.apache.org/settings.html#Servers) .

不幸的是,从用户名/密码切换到 privateKey/密码短语我收到以下“未授权”错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project my-project: Failed to retrieve remote metadata com.test:my-project:1.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata com.test:my-project:1.0-SNAPSHOT/maven-metadata.xml from/to my-artifactory (https://na.artifactory.xxxx.com:443/artifactory/my-artifactory-local): Not authorized -> [Help 1]

Artifactory 是否支持来自 Maven 的 privateKey/passphrase 身份验证?或者,是否可以使用用户名/密码(可能是 API 密钥?)以外的其他内容来允许 Maven 进行身份验证?

【问题讨论】:

    标签: maven artifactory


    【解决方案1】:

    我不知道如何让公钥身份验证与 Artifactory 和 Maven 一起使用,但至少在 Artifactory 6.15.1 中,您可以为您的帐户使用 Artifactory API 密钥而不是密码。在 Artifactory Web UI 中,单击您的登录名以打开您的个人资料,输入您当前的密码以解锁您的个人资料,然后复制 API 密钥并将其粘贴到 Maven settings.xml&lt;servers&gt; 部分,替换 ARTIFACTORY_USERNAME 和以下示例中的 ARTIFACTORY_API_KEY:

       <servers>
           <server>
               <id>central</id>
               <username>ARTIFACTORY_USERNAME</username>
               <password>ARTIFACTORY_API_KEY</password>
           </server>
           <server>
               <id>snapshots</id>
               <username>ARTIFACTORY_USERNAME</username>
               <password>ARTIFACTORY_API_KEY</password>
           </server>
       </servers>
    

    【讨论】:

    • 无论如何,我可以传递在 unix env 上设置的环境变量并被 maven build 拾取?比如 :export ARTIFACTORY_USERNAME=xxxxxx 和 mvn clean package 会选择那个就好了?
    猜你喜欢
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多