用程序上传JAR包到Nexus3

文章目录

  • 前言
  • 单独上传一个JAR包到Nexus3
    • 上传非SNAPSHOT包
    • 上传SNAPSHOT包
  • 上传一个Maven项目的JAR包到Nexus3
    • mvn deploy:deploy-file
    • mvn deploy
  • Troubleshooting
  • 用程序从Nexus3下载JAR包
  • 参考文档

前言

在Nexus3中,不再支持通过网页来上传JAR包和POM文件。
可以通过maven-deploy-plugin来上传JAR包到Nexus3上。

单独上传一个JAR包到Nexus3

下面列出不依靠POM文件,单独上传一个JAR包到Nexus3上的例子。

上传非SNAPSHOT包

Example: 上传demo-1.0.0.jar包到Nexus3上的maven-releases仓库。

mvn deploy:deploy-file -DgroupId=com.example \
                       -DartifactId=demo \
					   -Dversion=1.0.0 \
					   -DgeneratePom=true \
					   -Dpackaging=jar \
					   -DrepositoryId=nexus-releases \
					   -Durl=http://localhost:8081/repository/maven-releases \
					   -Dfile=demo-1.0.0.jar

上传SNAPSHOT包

Example: 上传demo-1.0.0-SNAPSHOT.jar包到Nexus3上的maven-snapshots仓库。

mvn deploy:deploy-file -DgroupId=com.example \
                       -DartifactId=demo \
					   -Dversion=1.0.0-SNAPSHOT \
					   -DgeneratePom=true \
					   -Dpackaging=jar \
					   -DrepositoryId=nexus-snapshots \
					   -Durl=http://localhost:8081/repository/maven-snapshots \
					   -Dfile=demo-1.0.0-SNAPSHOT.jar

说明: repositoryId 为Maven settings.xml中的servers/server/id

**注意:**上传的SNAPSHOT包会自动带有时间戳,但是如果用Maven从Nexus更新依赖时,下载到.m2下的依赖包会自动去掉时间戳。但是如果自己写程序从Nexus上下载JAR包,需要自己处理时间戳的问题。可以参考用程序从Nexus3下载JAR包。

上传一个Maven项目的JAR包到Nexus3

下面列出通过Maven POM文件来上传Maven项目的JAR包的例子。

mvn deploy:deploy-file

在Maven项目根目录运行mvn deploy:deploy-file命令。

mvn deploy:deploy-file -DgeneratePom=false \
                       -DrepositoryId=nexus-releases \
					   -Durl=http://localhost:8081/repository/maven-releases \
					   -DpomFile=pom.xml \
					   -Dfile=target/demo-1.0.0.jar

mvn deploy

更简单的做法是,在pom.xml中使用maven-deploy-plugin:

<plugin>
	<groupId>org.apache.maven.pluginsgroupId>
	<artifactId>maven-deploy-pluginartifactId>
	<version>2.8.2version>
plugin>

再在pom.xml中声明distributionManagement

<distributionManagement>
	<repository>
		<id>nexus-releasesid>
		<name>Nexus Release Repositoryname>
		<url>http://localhost:8081/repository/maven-releases/url>
	repository>
	<snapshotRepository>
		<id>nexus-snapshotsid>
		<name>Nexus Snapshot Repositoryname>
		<url>http://localhost:8081/repository/maven-snapshots/url>
	snapshotRepository>
distributionManagement>

之后只需要运行mvn deploy 命令就可以将项目编译产生的JAR包发布到Nexus3上。

如果是SNAPSHOT包,会自动发布到maven-snapshots,并自动带有时间戳;如果不是SNAPSHOT包,会自动发布到maven-releases。

注意:distributionManagement/repository/iddistributionManagement/snapshotRepository/id 要和Maven settings.xml的servers/server/id 保持一致。

Troubleshooting

  • 如果deploy失败,请检查是否设置了MAVEN_HOME。
  • 不要在.m2 目录下运行命令,复制jar包到外面一个干净的文件夹下,再在该文件夹下运行命令。
  • 路径中不要包含中文和空格。

用程序从Nexus3下载JAR包

请参见用程序从Nexus3下载JAR包

参考文档

  • https://support.sonatype.com/hc/en-us/articles/115006744008-How-can-I-programmatically-upload-an-artifact-into-Nexus-3-

  • https://support.sonatype.com/hc/en-us/categories/202673428-Nexus-Repository-Manager-3

  • http://maven.apache.org/plugins/maven-deploy-plugin/

  • https://maven.apache.org/plugins/maven-deploy-plugin/plugin-info.html

  • http://maven.apache.org/plugins/maven-deploy-plugin/usage.html

你可能感兴趣的:(Nexus)