前言
如果项目是以jar
包的形式使用,普通的工具类或者springboot
的可执行包,都需要上传到远程仓库保存共享。
使用Maven上传
Maven
中提供了<distributionManagement>
标签,可以非常方便上传.
一个简单的示例:
<distributionManagement>
<snapshotRepository>
<id>swb</id>
<url>http://repo.cnswb.com/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
这里配置了一个snapshotRepository
,就是开发中使用最多的快照仓库.
使用mvn deploy
命令即可实现快照版上传.
注
这里的上传可能会受到限制,比如远程仓库设置了不允许匿名操作,那可能就会出现权限错误,此时需要在全局设置中配置server
用户名密码信息,它们通过id
一一对应.这里id
是swb
,那么在需要登录信息时,就会在servers
中找到对应的id
为swb
的server
信息(包含用户名密码)来鉴权.
distributionManagement
仓库配置
除了snapshotRepository
,还有个repository
与之对应,也就是发布版.
它和snapshotRepository
的子标签完全一样.
上例中只是展示了关键标签,其完整信息是:
<snapshotRepository>
<id>swb-snapshot</id>
<name>swb-snapshot</name>
<layout>default</layout>
<uniqueVersion>true</uniqueVersion>
<url>http://repo.cnswb.com/repository/maven-snapshots/</url>
</snapshotRepository>
规则
如果只配置了一个仓库,那么此工程的版本号命名必须遵循:
- 如果是
snapshotRepository
,版本号必须是以-SNAPSHOT
结尾 - 如果是
repository
,版本号必须不是以-SNAPSHOT
结尾
如果两种仓库都配置了,那么会根据版本号选择合适的仓库上传.这是最为合乎情理的方式.
其他配置
relocation
不常用,因为很多人根本不会去看这个.
这是一个纯展示的标签,不会对本工程的deploy
造成影响,只是用来告诉开发者本工程座标的调整信息:
<relocation>
<groupId>org.example</groupId>
<artifactId>hello_maven</artifactId>
<version>1.1-SNAPSHOT</version>
<message>原hello_maven已废弃,请使用</message>
</relocation>
downloadUrl
项目下载页面的网址。 如果未提供,则会将用户转到
url
提供的主页。 这样做是为了帮助查找由于许可限制而不在存储库中的工件。
<downloadUrl>http://${another_repository_host}</downloadUrl>
site
部署项目网站所需的信息。
<site>
<id>${id}</id>
<name>${name}</name>
<url>http://${host}</url>
</site>
status
不要人为在本地配置!!!上传时MAVEN自动接管,虽然看不见效果在哪
表示在远程存储库中提供此工件的状态,它会通过将其防止在存储库中的工具进行更新,因此不要在本地配置.
它是一个枚举项:
- none: 默认
- converted: 存储库从
Maven 1 POM
转换此值- partner: 从合作伙伴Maven 2存储库直接同步
- deployed: 已从Maven 2实例部署
- verified: 已手工处理,验证为正确且最终的