maven deploy 400 Bad Request
2020-08-27 本文已影响0人
洋洋洒洒看东西
将一个maven项目发布到私有的nexus服务器,很简单,就是这样一个命令即可
mvn deploy
但是在首次尝试时遇到了一个400错误
Transfer failed for http://yourhost/nexus/content/groups/public/path/to/your/project/1.0/project-1.0.pom 400 Bad Request
一番检查发现是因为pom.xml中配置错了发布地址
<properties>
<releases.url>http://yourhost/nexus/content/groups/public</releases.url>
</properties>
....
<distributionManagement>
<repository>
<id>private-nexus</id>
<url>${releases.url}</url>
</repository>
</distributionManagement>
需要将release.url变量改成一个允许发布的地址。
怎么找这样的地址呢?在私服nexus中可以看到仓库分为
- group
- hosted
- virtual
- proxy
我们一开始设置的release url是group类型的地址,而这个地址是不能够用于发布的,因为它只是将各个参考group/聚合在一起的呀。
我们只能选择hosted类型的仓库进行发布,这里我们根据项目的特点,选择releases那个仓库。
因为这个库的Deployment Policy是Allow Redeploy
,所以能够进行发布。
我们在Summary中查看distributionManagement所需的信息
image.png用其中的url替换我们项目pom文件中的内容,即
<properties>
<releases.url>http://yourhost/nexus/content/repositories/releases</releases.url>
</properties>
....
<distributionManagement>
<repository>
<id>private-nexus</id>
<url>${releases.url}</url>
</repository>
</distributionManagement>
再次执行 mvn deploy
就可以看到我们的jar包被成功发布到私有仓库了。
PS:因为发布到私有仓库是需要账号密码的,所以你需要在自己的~/.m2/settings.xml中指定server的id和账号密码,其中id要和项目中的id一致。