# Maven Package 如何使用 GPG 签名

**URL:** <https://www.isharkfly.com/t/maven-package-gpg/787>\
**Category:** 软件技术\
**Tags:** java\
**Created:** [December 24, 2020, 12:38pm UTC](https://www.isharkfly.com/t/maven-package-gpg/787 "2020-12-24T12:38:13Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [December 24, 2020, 12:38pm UTC](https://www.isharkfly.com/t/maven-package-gpg/787/1 "2020-12-24T12:38:13Z")

</div>

在将 Maven 的包上传到中央仓库并且创建发行版之前需要对包进行 GPG 签名。

如果你使用的是 Window 操作系统，请参考： [如何在 Windows 上创建一个新的 GPG key](https://www.isharkfly.com/t/windows-gpg-key/745) 页面中的内容来对 GPG key 生成器进行安装，并且创建一个 key。

需要注意的时候，你创建的 Key 还要上传到 Key 的公钥仓库中，具体的办法请参考文章：[GPG 使用 Maven 签名后发送到中央仓库提示 Upload your public key and try the operation](https://www.isharkfly.com/t/gpg-maven-upload-your-public-key-and-try-the-operation/785) 中的内容。

当你完成所有操作后，你就可以对你的 POM 文件进行修改了。

## 对 POM 文件进行修改

对 POM 进行有几个地方需要进行修改，有些地方的修改是一次性的。

我们假设你现在的 POM 不具有任何部署条件。

我们也是参考了官方的配置文件说明：[Redirecting...](https://central.sonatype.org/pages/apache-maven.html)

首先你的版本号是不能包含有 -SNAPSHOT 这个关键字的。

可以使用下面的命令：

```auto
mvn versions:set -DnewVersion=0.0.2

```

这个 mvn 的命令将会搜索你系统中的版本，并且将版本进行重命名并且统一。

![maven-pub-01](https://www.isharkfly.com/images/transparent.png)

从控制台的输出中，我们已经看到版本号进行了调整。

## 添加 maven-gpg-plugin 插件

在 pom 文件中，添加 maven-gpg-plugin 插件到插件列表中。

这个插件的位置是位于 build 下面的。

具体内容入下，你可以不需要对任何内容进行修改，如果你有高版本的话，也可以使用高版本。

```auto
<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-gpg-plugin</artifactId>
      <version>1.5</version>
      <executions>
        <execution>
          <id>sign-artifacts</id>
          <phase>verify</phase>
          <goals>
            <goal>sign</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

```

### 添加 .m2 目录下的 settings.xml

需要添加的内容如下：

```auto
<settings>
  <profiles>
    <profile>
      <id>ossrh</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.executable>gpg2</gpg.executable>
        <gpg.passphrase>the_pass_phrase</gpg.passphrase>
      </properties>
    </profile>
  </profiles>
</settings>

```

需要注意的是可以执行的文件，在上面我们使用了 gpg2，如果你的操作系统中没有这个的话，你有可能会使用 gpg，这个与你的安装有关。

可以在 Windows 下运行 cmd，以确定 gpg 被添加到你的系统中了。

秘钥部分为最开始你创建的秘钥，这个是在 Kleopatra 中可以找到的。

根据你需要安装的秘钥，拷贝上面的 Key-ID 填到这里即可。

![maven-pub-02](https://www.isharkfly.com/images/transparent.png)

完成所有上面的配置后运行命令：

```auto
mvn clean deploy

```

然后等待服务器的反馈结果。

一般来说需要几个小时后你的库才会被全世界都看到。

![maven-pub-03](https://www.isharkfly.com/images/transparent.png)

是不是很激动呀。

鼓励所有有条件的公司和个人都可以这样将开源项目上传到中央 Maven 仓库中。
