这似乎在上周有效,现在却没有。

  • 我们使用 Artifactory 作为我们的 Maven 存储库。
  • 我正在使用 deploy:deploy-file 部署一个 jar 和 pom目标
  • 我们的 Artifactory 存储库需要身份验证才能部署。

  • 我可以通过在命令行的服务器 URL 中嵌入我的凭据来部署到存储库:
     $ mvn deploy:deploy-file \ 
         -Durl=http://deployer:swordfish@repo.veggiecorp.com/artifactory/ext-release-local \ 
         -Dfile=crypto.jar \ 
         -DpomFile=pom.xml \ 
         -Did=VeggieCorp 
      yadda...yadda...yadda... 
      [INFO] ------------------------------------------------------------------------ 
      [INFO] BUILD SUCCESS 
      [INFO] ------------------------------------------------------------------------ 
      [INFO] Total time: 0.962s 
      [INFO] Finished at: Mon Aug 20 10:06:04 CDT 2012 
      [INFO] Final Memory: 4M/118M 
      [INFO] ------------------------------------------------------------------------ 
    

    但是,整个部署都会被记录下来,并且我的凭据将在日志中可见。因此,我希望无需我的凭据即可在命令行上进行部署。为此,我有一个 $HOME/.m2/settings.xml文件:
    <settings> 
        <proxies> 
            <proxy> 
                <active>true</active> 
                <protocol>http</protocol> 
                <host>proxy.veggiecorp.com</host> 
                <port>3128</port> 
                <nonProxyHosts>*.veggiecorp.com</nonProxyHosts> 
            </proxy> 
        </proxies> 
        <servers> 
            <server> 
                <id>VeggieCorp</id> 
                <username>deployer</username> 
                <password>swordfish</password> 
            </server> 
        </servers> 
        <profiles> 
            <profile> 
                <id>VeggieCorp</id> 
                <activation> 
                     <activeByDefault>true</activeByDefault> 
                </activation> 
                <repositories> 
                    <repository> 
                        <id>VeggieCorp</id> 
                        <name>VeggieCorp's Maven Repository</name> 
                        <releases> 
                            <enabled>true</enabled> 
                            <updatePolicy>always</updatePolicy> 
                            <checksumPolicy>warn</checksumPolicy> 
                        </releases> 
                        <snapshots> 
                            <enabled>false</enabled> 
                            <updatePolicy>always</updatePolicy> 
                            <checksumPolicy>warn</checksumPolicy> 
                        </snapshots> 
                        <url>http://repo.veggiecorp.com/artifactory/ext-release-local</url> 
                        <layout>default</layout> 
                    </repository> 
                </repositories> 
            </profile> 
        </profiles> 
        <activeProfiles> 
            <activeProfile>VeggieCorp</activeProfile> 
        </activeProfiles> 
    </settings> 
    

    现在,我将再次尝试部署,但不将用户名和密码放在 URL 中:
     $ mvn deploy:deploy-file \ 
         -Durl=http://repo.veggiecorp.com/artifactory/ext-release-local \ 
         -Dfile=crypto.jar \ 
         -DpomFile=pom.xml \ 
         -Did=VeggieCorp 
    yadda...yadda...yadda 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] BUILD FAILURE 
    [INFO] ------------------------------------------------------------------------ 
    [INFO] Total time: 0.751s 
    [INFO] Finished at: Mon Aug 20 10:17:15 CDT 2012 
    [INFO] Final Memory: 4M/119M 
    [INFO] ------------------------------------------------------------------------ 
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy-  file (default-cli) on project crypto: 
     Failed to deploy artifacts: Could not transfer artifact   
        com.veggiecorp:crypto:jar:2.0.0 from/to remote-repository  
        (http://mvn.veggiecorp.com/artifactory/ext-release-local): 
        Failed to transfer file: 
        http://mvn.veggiecorp.com/artifactory/ext-release-local/com/veggiecorp/crypto/2.0.0/crypto-2.0.0.jar. 
        Return code is: 401, ReasonPhrase:Unauthorized. -> [Help 1] 
    

    (我已重新格式化输出以使其更易于查看。我收到 401“未经授权”错误)

    那么,我做错了什么?为什么我不能使用我的 .settings.xml文件来做我的凭据?代理部分确实有效,因为它可以从主 Maven 存储库下载所需的插件。

    请您参考如下方法:

    您需要提供repositoryId=VeggieCorp (不是 id )属性,以便 maven 知道来自哪个 <server>配置它必须读取凭据。

    $ mvn deploy:deploy-file \ 
     -Durl=http://repo.veggiecorp.com/artifactory/ext-release-local \ 
     -Dfile=crypto.jar \ 
     -DpomFile=pom.xml \ 
     -DrepositoryId=VeggieCorp 
    

    http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!