我正在尝试将工件部署到受基本身份验证保护的存储库。
我指定
<distributionManagement>
<repository>
<id>some.repo</id>
<name>Some Repository</name>
<url>https://foo.bar</url>
</repository>
</distributionManagement>
Run Code Online (Sandbox Code Playgroud)
在pom.xml
和
<servers>
<server>
<id>some.repo</id>
<username>user</username>
<password>{encoded password}</password>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)
在settings.xml
但是当我运行时mvn deploy
它失败并出现错误:Not authorized , ReasonPhrase:. -> [Help 1]
如果我使用
<server>
<id>some.repo</id>
<configuration>
<httpHeaders>
<property>
<name>Authorization</name>
<value>Basic (hash)</value>
</property>
</httpHeaders>
</configuration>
</server>
Run Code Online (Sandbox Code Playgroud)
相反 - 它有效。
使用 Wireshark 检查后,我发现在第一个场景(使用登录名/密码)中,Maven 不会Authorization
向 HTTP 请求添加标头。
这是正确的行为吗?我在配置中遗漏了什么吗?
好吧,在这种情况下,这不是 Maven 的问题,而是服务器端的问题:服务器没有发送Connection: keep-alive
header。有了这个标头,授权流程就可以工作了。