我怀疑这很简单,但是我无法从Maven命令行或Eclipse将任何项目部署到远程Artifactory存储库。我可以使用Artifactory Web UI进行成功部署,但是当我在Maven settings.xml文件中指定相同的用户帐户('admin')时,它将失败,并显示“错误代码403,禁止访问”。我正在使用Artifactory的开源版本5.11.0。 “密码加密策略”设置为“必需”。
这是~/.m2/settings.xml
文件中的服务器摘要:
<server>
<id>dmrepo</id>
<username>admin</username>
<password>encrypted password obtained from the Artifactory UI</password>
</server>
这是项目pom.xml
文件的部署部分:
<distributionManagement>
<repository>
<id>dmrepo</id>
<name>myrepo-releases</name>
<url>http://server:port/libs-release-local</url>
</repository>
</distributionManagement>
如果我使用mvn
参数重新运行-e
,则堆栈跟踪中的最后一个错误是:
由以下原因引起:org.apache.maven.wagon.authorization.AuthorizationException:拒绝访问http://server:port/libs-release-local/path/to/jar/jarFile-version.jar,ReasonPhrase:禁止访问。
当我查看Artifactory和Tomcat日志文件时,在失败的部署尝试期间,我绝对看不到任何日志,这使我想知道请求是否甚至到达了该服务器,但是错误代码403是活动的“您可以“不这样做”响应来自 somewhere ,而不是一般性的“无法访问该URL”错误。另外,我可以使用同一台计算机上的浏览器来访问同一主机和端口,因此我认为这可能不是防火墙问题。
我已经审查了其他类似的问题,但似乎都没有解决这个特定情况。 JFrog用户指南建议检查存储库中的include&exclude过滤器,但是include设置为**/*
,exclude为空白,这对我来说似乎是正确的。用户指南中的另一个建议是可能存在“权限”问题,但是它没有说明哪些权限或如何检查和更改权限。
更新
通过@Ariel请求的curl
命令的输出(略述)进行了更新:
curl -i -vvv -u 'admin:<password>' -T <filename.jar> <hostname>:<port>/<repo_name>/<package>/<version>/<filename>
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Trying <IP_address>...
* TCP_NODELAY set
* Connected to <hostname> (<IP_address>) port <port> (#0)
* Server auth using Basic with user 'admin'
> PUT /<repo_name>/<package>/<version>/<filename> HTTP/1.1
> Host: <hostname>:<port>
> Authorization: Basic <Base64_encoded admin:password>
> User-Agent: curl/7.54.0
> Accept: */*
> Content-Length: 14364
> Expect: 100-continue
>
< HTTP/1.1 100 Continue
HTTP/1.1 100 Continue
} [14364 bytes data]
* We are completely uploaded and fine
< HTTP/1.1 403 Forbidden
HTTP/1.1 403 Forbidden
< Content-Type: text/html;charset=utf-8
Content-Type: text/html;charset=utf-8
< Content-Language: en
Content-Language: en
< Content-Length: 983
Content-Length: 983
< Date: Wed, 27 Jun 2018 00:26:15 GMT
Date: Wed, 27 Jun 2018 00:26:15 GMT
< Connection: close
Connection: close
<
{ [983 bytes data]
100 15347 100 983 100 14364 6380 93227 --:--:-- --:--:-- --:--:-- 93272
* Closing connection 0
<!doctype html><html lang="en"><head><title>HTTP Status 403 – Forbidden</title><style type="text/css">h1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} h2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} h3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} body {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} b {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} p {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;} a {color:black;} a.name {color:black;} .line {height:1px;background-color:#525D76;border:none;}</style></head><body><h1>HTTP Status 403 – Forbidden</h1><hr class="line" /><p><b>Type</b> Status Report</p><p><b>Description</b> The server understood the request but refuses to authorize it.</p><hr class="line" /><h3>Apache Tomcat/8.5.23</h3></body></html>
答案 0 :(得分:1)
除了尝试使用HTTPS代替HTTP之外,还要仔细检查URL。通过CURL输出,看来您没有达到Artifactory。您的请求已在Tomcat级别停止,这通常意味着Artifactory的URL不正确。您可以尝试:http://server:port/ 人工工厂 / libs-release-local /看看是否可行吗?