我有一个Maven工件存储在Artifactory上的受保护存储库中。我在settings.xml
中设置了用户凭据。与此同时,我已经以允许匿名访问某些公共存储库的方式配置Artifactory。
当我现在尝试使用Maven下载工件时,我收到以下错误消息:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-dependency-plugin:2.1:get (default-cli)
on project artifactory: Couldn't download artifact: Could not find artifact
XXX:common:jar:2.2.1-RELEASE in artifactory-XXX (http://XXX/artifactory/XXX)
当我在Artifactory中禁用匿名访问时,一切都按预期工作。
因此,Maven似乎没有尝试使用提供的用户凭据搜索工件,因为它无法在Artifactory服务器的公共存储库中找到它。
我是否遗漏了一些Artifactory配置,或者是否无法在同一台服务器上同时拥有公共存储库和受保护的存储库?
答案 0 :(得分:1)
您可以查看Artifactory UI - >管理员 - >安全配置 - >如果选中“隐藏未授权资源的存在”复选框?
如果是这样,这可以解释这个问题。选中此项后,Artifactory将不会显示未授权用户的工件,并将返回404.如果这确实是问题,您可以设置maven to use a preemptive authentication以便从第一个请求进行身份验证。以下是在.m2/settings.xml
中配置抢先身份验证的代码段:
<server>
<id>artifactory</id>
<configuration>
<httpConfiguration>
<all>
<usePreemptive>true</usePreemptive>
</all>
</httpConfiguration>
</configuration>
<username>...</username>
<password>...</password>
</server>
如果这不是问题,在收到此失败消息后,您在Artifactory中的artifactory.log
和request.log
中看到了什么?