针对一个 Maven 的 Java 项目,我们执行 mvn deploy 命令时想要把生成的 jar 包上传到 Maven 仓库(本文将使用私有的 Nexus 仓库)中去。所要用到的插件 Maven Deploy Plugin ,本文实际就是讲述如何用该插件上传 jar 包到 Maven 仓库,更多用法请参考该插件的官方文档。
本文关键性的两个配置文件是 pom.xml 和 settings.xml。前者配置仓库的地址,后者中配置用户名和密码。要确定 Maven 使用了哪个 settings.xml 文件,用 mvn -X
查看,比如下面的输出
[DEBUG] Reading global settings from /usr/local/Cellar/maven/3.8.3/libexec/conf/settings.xml [DEBUG] Reading user settings from /Users/yanbin/.m2/settings.xml
Maven 还允许在执行 mvn 命令时用 -s 或 --settings 参数指定 settings.xml 文件,如 mvn deploy --settings setting.xml
所以对于 settings.xml 文件的修改,可修改全局的,用户的或参数 --settings 指定的。
来一个实际的应用场景,假如我们要上传 jar 包(根据是否为 SNAPSHOT 包) 到下方相应的仓库中
- https://nexus.example.com/repository/maven-releases: release 包,即版本号不是 *-SNAPSHOT
- https://nexus.example.com/repository/maven-snapshots: snapshot 包,即版本号为 *-SNAPSHOT
瞧瞧可采用的几种方式
基本的操作方式
下面是一个完整的 pom.xml 文件
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>blog.yanbin</groupId> <artifactId>kafka-common</artifactId> <version>1.0.0-SNAPSHOT</version> <name>kafka-common</name> <distributionManagement> <repository> <id>private-release</id> <url>http://nexus.example.com/repository/maven-releases</url> </repository> <snapshotRepository> <id>private-snapshot</id> <url>http://nexus.example.com/repository/maven-snapshots</url> </snapshotRepository> </distributionManagement> </project>
< project xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns = "http://maven.apache.org/POM/4.0.0" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > blog . yanbin < / groupId > < artifactId > kafka - common < / artifactId > < version > 1.0.0 - SNAPSHOT < / version > < name > kafka - common < / name > < distributionManagement > < repository > < id > private - release < / id > < url > http : //nexus.example.com/repository/maven-releases</url> < / repository > < snapshotRepository > < id > private - snapshot < / id > < url > http : //nexus.example.com/repository/maven-snapshots</url> < / snapshotRepository > < / distributionManagement > < / project &g |