Maven发布本地文件到私服

young 2 2025-12-17

配置

setting.xml中添加如下配置,如果非admin用户,需要在Nexus中对相应的帐号设置密码

<server>
  <id>releases</id>
  <username>admin</username>
  <password>admin123</password>
</server>
<server>
  <id>snapshots</id>
  <username>admin</username>
  <password>admin123</password>
</server>

命令

mvn deploy:deploy-file -DgroupId=groupId -DartifactId=artifactId -Dversion=version -Dpackaging=packaging -Dfile=deployFile -Durl=http://host:port/browse -DrepositoryId=id
  • groupId,artifactId,version对应上传的文件对应的坐标
  • packaging为文件类型,pom或者jar
  • deployFile为要上传的文件路径,可以是相对路径,也可以是绝对路径
  • host:port为maven私服的地址,也可以是域名,browse为对应的容器,一般为maven-releases(正式版本)和maven-snapshots(快照版本)
  • repositoryId为上面settings.xml中的id

需要注意的是,如果当前终端的本地仓库中已经有了对应的版本,那么是无法上传的,会抛出异常信息Cannot deploy artifact from the local repository

例如:

pom文件发布到快照仓库

mvn deploy:deploy-file -DgroupId=com.aliyun -DartifactId=tea -Dversion=1.2.3-log-SNAPSHOT -Dpackaging=pom -Dfile=tea-1.2.3-log-SNAPSHOT.pom -Durl=http://host:port/repository/maven-snapshots/ -DrepositoryId=snapshots

pom文件发布到正式仓库
mvn deploy:deploy-file -DgroupId=com.aliyun -DartifactId=tea -Dversion=1.2.3 -Dpackaging=pom -Dfile=tea-1.2.3-log-SNAPSHOT.pom -Durl=http://host:port/repository/maven-releases/ -DrepositoryId=releases

jar文件发布到快照仓库

mvn deploy:deploy-file -DgroupId=com.aliyun -DartifactId=tea -Dversion=1.2.3 -Dpackaging=jar -Dfile=tea-1.2.3-log-SNAPSHOT.pom -Durl=http://host:port/repository/maven-snapshots/ -DrepositoryId=snapshots

jar文件发布到正式仓库
mvn deploy:deploy-file -DgroupId=com.aliyun -DartifactId=tea -Dversion=1.2.3 -Dpackaging=jar -Dfile=tea-1.2.3-log-SNAPSHOT.pom -Durl=http://host:port/repository/maven-releases/ -DrepositoryId=releases