当前位置:首页> 正文

maven仓库怎么配置|如何发布maven项目到中央仓库

maven仓库怎么配置|如何发布maven项目到中央仓库)

# 概述

用maven已经一段时间,也搭建了公司内部的maven环境。然而有一些通用的可以开源的代码想放到公网的仓库中,以便可以随时使用(公司网络因为经常切换,导致maven库常有无法导入的情况)。

# 注册Sonatype OSSRH

关于如何注册,我补充几点:

项目groupId怎么写?如果你是个人的名义,然后代码是放到github上面的(比如是https://www.github.com/username/projectName的格式),那么推荐groupId写成:com.github.username, 不然可能会被拒绝(我就是一开始没有写对,被拒绝了。。。)当project的status为RESOLVED时才算是ok,如下图所示

maven仓库怎么配置(如何发布maven项目到中央仓库

# 修改pom.xml

账号注册完成,同时也创建了project后,就可以修改pom.xml了。

首先加入name,description,scm,developers等信息

<name>${project.groupId}:${project.artifactId}</name><url>https://github.com/0604hx/nerve-tools</url><description></description><licenses>    <license>        <name>The Apache License, Version 2.0</name>        <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>    </license></licenses><developers>    <developer>        <name>0604hx</name>        <email>zxingming@foxmail.com</email>        <roles>            <role>developer</role>        </roles>        <timezone>+8</timezone>    </developer></developers><scm>    <connection>scm:git:https://github.com/0604hx/nerve-tools.git</connection>    <developerConnection>scm:git:https://github.com/0604hx/nerve-tools.git</developerConnection>    <url>https://github.com/0604hx/nerve-tools</url>    <tag>v${project.version}</tag></scm>

然后添加distributionManagement

<distributionManagement>    <snapshotRepository>        <id>ossrh</id>        <url>https://oss.sonatype.org/content/repositories/snapshots</url>    </snapshotRepository>    <repository>        <id>ossrh</id>        <name>Maven Central Staging Repository</name>        <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>    </repository></distributionManagement>

接着添加plugins

<plugins>    <plugin>        <groupId>org.sonatype.plugins</groupId>        <artifactId>nexus-staging-maven-plugin</artifactId>        <version>1.6.3</version>        <extensions>true</extensions>        <configuration>            <serverId>ossrh</serverId>            <nexusUrl>https://oss.sonatype.org/</nexusUrl>            <autoReleaseAfterClose>true</autoReleaseAfterClose>        </configuration>    </plugin>    <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-javadoc-plugin</artifactId>        <version>2.10.3</version>        <executions>            <execution>                <id>attach-javadocs</id>                <goals>                    <goal>jar</goal>                </goals>            </execution>        </executions>    </plugin>    <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-source-plugin</artifactId>        <executions>            <execution>                <id>attach-sources</id>                <goals>                    <goal>jar-no-fork</goal>                </goals>            </execution>        </executions>    </plugin>    <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-gpg-plugin</artifactId>        <version>1.6</version>        <executions>            <execution>                <id>sign-artifacts</id>                <phase>verify</phase>                <goals>                    <goal>sign</goal>                </goals>            </execution>        </executions>    </plugin></plugins>

# 修改maven的setting.xml

增加你的帐密信息

maven仓库怎么配置|如何发布maven项目到中央仓库

然后设置gpg的profile

maven仓库怎么配置|如何发布maven项目到中央仓库

此时要先安装gpg,详细的说明请看:http://central.sonatype.org/pages/working-with-pgp-signatures.html

# 执行mvn deploy

执行以下命令

mvn deploy -Dmaven.test.skip=true -e

等待结果即可。来个截图哈

maven仓库怎么配置|如何发布maven项目到中央仓库

如果deploy时出现以下错误

gpg: no default secret key: No secret key

则表示你没有创建secret key,此时创建key即可。

如果出现这样的错误:

No public key:Key with id

就说明你没有上传keys到公共服务器,上传就行了:

maven仓库怎么配置|如何发布maven项目到中央仓库

# 发布项目资源

上一步完成后,其实这是将我们的资源上传到oss.sonatype而已,我们还有将其真正地发布出去。步骤如下:

登录到oss.sonatype.com点击 Staging Repositories,可以看到我们刚刚上传的资源,如下图所示

maven仓库怎么配置|如何发布maven项目到中央仓库

选中相应的资源|处于open状态),然后点击上方的“release”按钮,会弹出确认框,直接确认即可。

上一步成功后,就表示发布完成。此时去https://issues.sonatype.org(就是你一开始创建的issue)中留言,告诉管理员你已经release了。等审核通过后,就可以在中央仓库中搜索出你的项目(是不是很激动,很有成就感^_^)。

maven仓库怎么配置(如何发布maven项目到中央仓库

展开全文阅读

相关内容