Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 访问需要基本身份验证的Artifactory/Maven Repo_Maven 2_Basic Authentication_Artifactory - Fatal编程技术网

Maven 2 访问需要基本身份验证的Artifactory/Maven Repo

Maven 2 访问需要基本身份验证的Artifactory/Maven Repo,maven-2,basic-authentication,artifactory,Maven 2,Basic Authentication,Artifactory,我有一个基于基本身份验证的人工回购协议。如何配置settings.xml以允许访问 <mirrors> <mirror> <id>artifactory</id> <mirrorOf>*</mirrorOf> <url>https://myserver.example.com/artifactory/repo</url> <

我有一个基于基本身份验证的人工回购协议。如何配置settings.xml以允许访问

<mirrors>
    <mirror>
        <id>artifactory</id>
        <mirrorOf>*</mirrorOf>
        <url>https://myserver.example.com/artifactory/repo</url>
        <name>Artifactory</name>
    </mirror>
</mirrors>
<servers>
    <!--
        This server configuration gives your personal username/password for
        artifactory. Note that the server id must match that given in the
        mirrors section.
    -->
    <server>
        <id>Artifactory</id>
        <username>someArtifactoryUser</username>
        <password>someArtifactoryPassword</password>
    </server>

人工制品
*
https://myserver.example.com/artifactory/repo
人工制品
人工制品
某个人工用户
someArtifactoryPassword

因此,server标记是artifactory用户的用户凭据,但我还需要提供另一个用户/密码以通过基本身份验证。我该把它放在哪里

用户名和密码会在服务器设置中显示。我认为您的问题在于,您是通过其名称(Artifactory)而不是其id(Artifactory)来指定服务器的

我建议您将服务器设置放在用户设置中,而不是全局设置中。您还可以在Maven 2.1.0+中加密密码,有关详细信息,请参阅

更新:您使用的是什么版本的Artifactory?基本身份验证失败的原因是多方面的。这显然已在2.0.7和2.1.0中修复

从讨论中可以看出,a是通过命令行传递属性的,例如

-Dhttp.proxyHost=proxy -Dhttp.proxyPort=8080 -Dproxy.username=... -Dhttp.password=... 
更新:要让您的Maven安装通过防火墙连接,您需要配置settings.xml的proxy部分,请参阅此部分以获取有关如何进行此操作的一些提示


Update2:您可以在服务器设置中设置其他属性,请参阅此了解一些背景信息。我还没有机会对此进行测试,但从博客和相关内容来看,您似乎可以在服务器设置上设置authenticationInfo,如下所示:

<server>  
  <id>Artifactory</id>
  <username>someArtifactoryUser</username>
  <password>someArtifactoryPassword</password>
  <configuration>  
    <authenticationInfo>
      <userName>auth-user</userName>
      <password>auth-pass</password>
    </authenticationInfo>
  </configuration>  
</server> 

人工制品
某个人工用户
someArtifactoryPassword
授权用户
授权通行证

我能够使用以下配置启用HTTP基本身份验证-通过手动写入。在我的情况下,我使用它作为穷人的暂存存储库来访问我计算机上的构建工件

    <server>
        <id>go</id>
        <configuration>
            <httpHeaders>
                <property>
                    <name>Authorization</name>
                    <!-- Base64-encoded "guest:guest" -->
                    <value>Basic Z3Vlc3Q6Z3Vlc3Q=</value>
                </property>
            </httpHeaders>
        </configuration>
    </server>

去
授权
基本Z3Vlc3Q6Z3Vlc3Q=

解决明文密码问题的提示:

  • 访问并登录到Artifactory
  • 登录后,单击屏幕右上角的用户名
  • 在em Unlockbutton中输入密码,然后单击clique,启用加密密码
  • 复制将显示在屏幕下部的标记,并将其粘贴到settings.xml文件中。如果您希望只复制密码,请确保它与下面显示的标记完全相同,包括密码开头的“\”
  • 记住在POM.xml中使用服务器id调整标记,该id定义在标记中
  • 点击更新按钮并准备好!在下一个项目发布时检查是否一切都会顺利进行

大多数情况下,发生这种情况的原因如下

  • 在~/.m2/conf或~/.m2目录中找不到Settings.xml
  • Settings.xml不包含访问工件的正确凭据
    用户名
    API密钥
  • 无法使用给定凭据访问Settings.xml中提到的Artifactory
您可以看到Maven在哪些目录中查找什么。。。使用-e-X选项运行将显示以下详细信息

有时Settings.xml文件可能放在不同的目录中,因此当您在本地构建时,maven无法在~/.m2或~/.m2/conf目录中找到它。例如,如果项目使用buildkite,它可能位于buildkite在构建过程中可以访问的目录中。在这种情况下,只需将相同的Settings.xml文件复制到~/.m2即可

要查找aritifactory,请使用您的电子邮件/密码登录到url,然后转到profile并找到用户名和API密钥,如图中所示

然后在Settings.xml中检查存储库是否正确


感谢Maven提供的加密提示。。。不过,名称/标识冲突不是问题所在。问题仍然是,我有两组凭据要使用。代理设置可能适用于配置我的Maven以通过服务器。我试着把它们放在合适的位置,但运气不好。您上面提到的问题似乎是关于让Artifactory通过防火墙进行通信。在我的例子中,我试图让Maven与位于basic auth后面的人工制品进行通信。我将继续尝试代理设置,并发布任何更新。谢谢。对不起,我以为我已经发布了一个到代理迷你指南的链接,再次看我的答案,似乎没有。如果在settings.xml中配置代理设置,Maven就可以跳出防火墙。但是,通过防火墙意味着什么呢?(听起来不是很密集)。在我的例子中,我的本地框中有Maven,而Artifactory位于“myserver.example.com”上的https上。使用我的浏览器进行测试时,我可以在“myserver.example.com”上看到JAR URL,但基本的身份验证登录对我提出了挑战。实际上有一个防火墙,但我通过了本地箱上的VPN客户端。我知道这一点,因为我可以用浏览器手动获取JAR。如果你在浏览器中查看,你会看到你是否正在使用代理连接到网络(在IE的工具->互联网选项…->连接->局域网设置->代理服务器和Firefox的工具->选项->高级->网络设置…)。如果您使用的是代理,则需要为代理主机和端口配置具有相同值的Maven代理设置,用户名和密码将是您的域用户和密码。当密码为空时,常规方式(不带配置元素的用户名和密码)似乎不起作用,这确实有效!