如何将jar包上传到Maven中央仓库

背景

日常工作中经常会出现这样的场景,你需要将自己的服务暴露给其他合作同事使用,在系统规模较小时,打成jar包并且提供给其他合作方使用可以解决这类问题,但是随着系统规模的扩张,通过jar包互传不但容易丢失,还可能造成依赖方之间版本号不一致,这时候就需要使用maven来统一管理服务依赖,一般企业有两种方式,一种是上传到中央仓库,一种是搭建私服。

整体流程

  1. 在sonatype提交发布工单(Issue)
  2. 配置gpg秘钥
  3. 配置pom.xml和setting.xml
  4. mvn clean deploy

1.在snoatype注册账号并提交issue工单

如何将jar包上传到Maven中央仓库_第1张图片

概要:Publish new maven package
描述:create new package
groupId:可以随便填,sonatype工作人员会根据你填写的project-url帮你修改为固定的groupId
project-url:项目所在地址,如果是gitlab或者gitee就填git对应地址
scm-url:和project-url保持一致即可
其他项:随便填
等待五分钟后系统会给你发邮件告知你可以进行验证了,有两种方式,一种是创建指定git仓库,另一种是添加一个txt文本到你的域名解析里,两种方式都是为了验证你的项目属于你,如下图所示。
如何将jar包上传到Maven中央仓库_第2张图片
验证通过后,同样会发邮件给你
如何将jar包上传到Maven中央仓库_第3张图片

2.安装并设置gpg密钥

gpg的作用是生成密钥对,会用于后续我们组件发布的校验。
下载地址: https://www.gnupg.org/download/,在安装完成后,需要创建密钥对,UI和命令的模式二者选一即可。
UI模式:
运行kleopatra程序,新建密钥对,自己填的密码要记住,后面每次deploy都要进行验证。
如何将jar包上传到Maven中央仓库_第4张图片
命令行模式:
生成key:gpg --gen-key
Real name: 名字
Email address: 邮箱(自己的邮箱
You selected this USER-ID:
Change (N)ame, (E)mail, or (O)kay/(Q)uit? o
之后往下,会让你输入用户名和邮箱,还有一个Passphase(密码输入两次,务必牢记,后续要用到)
查看公钥:
gpg --list-keys
pub rsa2048 2020-06-30 [SC] [expires: 2022-06-30]
85B594371E0A38D70243B1E927EDC1D952E45334
uid [ultimate] aaa [email protected]
sub rsa2048 2020-06-30 [E] [expires: 2022-06-30]
发布公钥:pub 下面那一长串就是key
gpg --keyserver hkp://keyserver.ubuntu.com:11371 --send-keys 85B594371E0A38D70243B1E927EDC1D9

3.配置setting.xml,添加server配置

如何将jar包上传到Maven中央仓库_第5张图片
这个id要和下面pom添加的distributionManagement的仓库id保持一致

4.配置pom.xml

4.1 父pom进行替换,可以减轻很多配置包袱

<parent>
  <groupId>org.sonatype.ossgroupId>
  <artifactId>oss-parentartifactId>
  <version>7version>
parent>

4.2 添加构建仓库路径,打包插件

<distributionManagement>
		<snapshotRepository>
			<id>ossrhid>
			<url>https://s01.oss.sonatype.org/content/repositories/snapshotsurl>
		snapshotRepository>
		<repository>
			<id>ossrhid>
			<url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/url>
		repository>
	distributionManagement>
	<build>
		<plugins>
			<plugin>
				<groupId>org.sonatype.pluginsgroupId>
				<artifactId>nexus-staging-maven-pluginartifactId>
				<version>1.6.7version>
				<extensions>trueextensions>
				<configuration>
					<serverId>ossrhserverId>
					<nexusUrl>https://s01.oss.sonatype.org/nexusUrl>
					<autoReleaseAfterClose>trueautoReleaseAfterClose>
				configuration>
			plugin>
			<plugin>
				<groupId>org.apache.maven.pluginsgroupId>
				<artifactId>maven-source-pluginartifactId>
				<version>2.2.1version>
				<executions>
					<execution>
						<id>attach-sourcesid>
						<goals>
							<goal>jar-no-forkgoal>
						goals>
					execution>
				executions>
			plugin>













			<plugin>
				<groupId>org.apache.maven.pluginsgroupId>
				<artifactId>maven-gpg-pluginartifactId>
				<version>1.5version>
				<executions>
					<execution>
						<id>sign-artifactsid>
						<phase>verifyphase>
						<goals>
							<goal>signgoal>
						goals>
					execution>
				executions>
			plugin>
		plugins>
	build>

5.执行deploy

执行 mvn clean deploy -U 即可打包发布

6.依赖拉取

依赖拉取需要指定仓库,因为从2021.2开始,所有新构建包统一上传到s01.oss.sonatype.org,而不是oss.sonatype.org,如果不配置的话,会去默认的oss.sonatype.org拉取。

    <repositories>
        <repository>
            <id>ossrhid>
            <url>https://s01.oss.sonatype.org/content/repositories/snapshotsurl>
        repository>
        <repository>
            <id>ossrh1id>
            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/url>
        repository>
    repositories>

你可能感兴趣的:(java,jar,maven,java)