Maven 中央仓库是由 Sonatype 维护的,提交流程比较尴尬,我们需要使用他的 JIRA 系统,通过提交 Issue 来进行发布流程。
Sonatype 地址是:https://issues.sonatype.org/secure/Dashboard.jspa
注册 Sonatype 账户
需要先注册一个账户,这个账户需要牢记,因为需要在接下来 Maven 的 setting.xml 中的配置,以及登陆 oss.sonatype 都要用到。
Project 选择:Community Support
Isuse Type 选择:New Project
Group Id:就是我们通常 Java 中的 GroupID,如果使用域名的话,要验证域名的所有权。所以可以使用:com.github.xyz 这种。
Project URL 地址:使用 GitHub 地址即可。如:https://github.com/smallmenu/java-fun
SCM url 地址:使用 GitHub Git 地址即可。如:https://github.com/smallmenu/java-fun.git
Summary 和 Description 根据需要填写
接下来,你会进入和英文对话环节,主要是通过该 Issue 的评论进行的。
他会进行一些审查等操作。最后会告诉你:com.github.xyz has been prepared,然后就可以准备发布了。
安装 GPG
下载:https://www.gnupg.org/download/
1 2 3
| gpg --version 查看版本 gpg --list-keys 查看公钥 gpg --gen-key 生成密钥对
|
需要将你的公钥发布到 PGP 服务器(可能会发布失败,可以网上找几个靠谱的再试试):
1
| gpg --keyserver hkp://pool.sks-keyservers.net --send-keys 公钥ID
|
配置 Maven Setting.xml
加入 Server 段信息,用户名密码是你注册 Sonatype 的账户信息。
1 2 3 4 5
| <server> <id>oss</id> <username>username</username> <password>xxx</password> </server>
|
配置项目的 pom.xml 文件
除了常规的配置,增加一些配置。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| <developers> <developer> <name>smallmenu</name> <email>smallmenu@gmail.com</email> </developer> </developers>
<scm> <connection>scm:git@github.com:smallmenu/java-fun.git</connection> <developerConnection>scm:git@github.com:smallmenu/java-fun.git</developerConnection> <url>git@github.com:smallmenu/java-fun.git</url> </scm>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${compile.version}</source> <target>${compile.version}</target> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.1.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> </execution> </executions> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.1</version> <executions> <execution> <id>default-deploy</id> <phase>deploy</phase> <goals> <goal>deploy</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
<distributionManagement> <snapshotRepository> <id>oss</id> <url>https://oss.sonatype.org/content/repositories/snapshots/</url> </snapshotRepository> <repository> <id>oss</id> <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> </repository> </distributionManagement>
<profiles> <profile> <id>release</id> <properties> <maven.test.skip>true</maven.test.skip> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-help-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>show-profiles</id> <phase>compile</phase> <goals> <goal>active-profiles</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>3.2.1</version> <executions> <execution> <id>oss</id> <phase>package</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>cobertura-maven-plugin</artifactId> <version>2.7</version> <configuration> <formats> <format>html</format> <format>xml</format> </formats> <check/> </configuration> </plugin> <!-- Gpg Signature --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.6</version> <executions> <execution> <id>oss</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> <plugin> <groupId>org.sonatype.plugins</groupId> <artifactId>nexus-staging-maven-plugin</artifactId> <version>1.6.8</version> <extensions>true</extensions> <configuration> <serverId>oss</serverId> <nexusUrl>https://oss.sonatype.org/</nexusUrl> <autoReleaseAfterClose>true</autoReleaseAfterClose> </configuration> </plugin> </plugins> </build> </profile> </profiles>
|
发布项目
1
| mvn clean install deploy -P release
|
登陆验证 oss.sonatype
同样使用注册的 Sonatype 账户登陆 https://oss.sonatype.org/
如果执行成功,在这里能看到你发布的项目版本和信息。
发布成功后就可以搜索到,以我的仓库为例:
1 2 3 4 5
| <dependency> <groupId>com.github.smallmenu</groupId> <artifactId>java-fun</artifactId> <version>0.x.x</version> </dependency>
|