mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库。本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。
我们需要配置POM的<distributionManagement>来指定Maven分发构件的位置,如下:
<!-- 定义snapshots库和releases库的nexus地址 --> <distributionManagement> <repository> <!-- 库的id --> <id>nexus-releases</id> <!-- 库的url --> <url>https://172.17.103.59:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>nexus-snapshots</id> <url>https://172.17.103.59:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement>
如果是快照版本,执行mvn deploy时会自动发布到快照版本库中。而使用快照版本的模块,在不更改版本号的情况下,直接编译打包时,maven会自动从镜像服务器上下载最新的快照版本。
如果是正式发布版本,那么在执行mvn deploy时会自动发布到正式版本库中,而使用正式版本的模块。在不更改版本号的情况下,编译打包时,如果本地已经存在该版本的模块则使用本地的而不是主动去镜像服务器上下载。
需要注意的是,settings.xml中server元素下id的值必须与POM中repository或snapshotRepository下id的值完全一致。将认证信息放到settings下而非POM中,是因为POM往往是它人可见的,而settings.xml是本地的。代码如下:
<settings> ... <servers> <server> <id>nexus-releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>nexus-snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers> ... </settings>
本文介绍了Maven <distributionManagement>标签的使用,以及注意事项。如何安装构件到本地仓库,如何分发构件至仓库。