用法

使用 GnuPG 对工件进行签名

使用 GnuPG 对项目的所有附加工件进行签名。

您需要事先配置默认密钥。

gpg也需要在搜索路径上。

首先,您将插件添加到您的pom.xml中,如下所示:

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

然后在命令行上指定密码。像这样:

mvn verify -Dgpg.passphrase=thephrase

如果您未指定密码,它将提示您输入密码。

注意:当将 GPG 插件与 Maven 发布插件结合使用时,您可能需要像这样指定密码:

mvn release:perform -Darguments=-Dgpg.passphrase=thephrase

这解释了这样一个事实,即发布插件分叉 Maven 和当前 Maven 会话的系统属性很遗憾不会自动传播到分叉的 Maven 会话(另请参见MGPG-9)。

在 settings.xml 中配置密码

您可以将密码以明文或加密文本的形式放在本地settings.xml中,而不是在命令行上指定密码。

<settings>
  [...]
  <servers>
    [...]
    <server>
      <id>gpg.passphrase</id>
      <passphrase>clear or encrypted text</passphrase>
    </server>
  </servers>
</settings>

在 settings.xml 中使用键名配置密码

要允许在构建时发现 keyname 和 passphrase,请配置此插件以将keynamepassphraseServerId映射到固定属性。

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>3.0.1</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
            <configuration>
              <keyname>${gpg.keyname}</keyname>
              <passphraseServerId>${gpg.keyname}</passphraseServerId>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  ...
</project>

并使用本地settings.xml通过密钥名发现密码

<settings>
  [...]
  <servers>
    [...]
    <server>
      <id>your.keyname</id>
      <passphrase>clear or encrypted text</passphrase>
    </server>
  </servers>

  [...]
  <profiles>
    <profile>
      <id>my_profile_id</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <properties>
        <gpg.keyname>your.keyname</gpg.keyname>
      </properties>
    </profile>
  <profiles>
</settings>