maven-gpg-plugin 的正确执行阶段?

Lua*_*ico 3 maven

这是一个非常愚蠢的问题,但是我无法maven-gpg-plugin在 POM 上配置以正常工作。基本上,我希望它仅在我运行时才对工件进行签名mvn deploy,以免在运行clean install. clean install即使没有我的私钥,任何在 github 上下载我的项目的人都应该能够运行,这似乎是合理的。

好的,所以我想这样做:

<plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>1.6</version>
        <executions>
                <execution>
                        <id>sign-artifacts</id>
                        <phase>deploy</phase>
                        <goals>
                                <goal>sign</goal>
                        </goals>
                </execution>
        </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为 OSS Sonatype 会抱怨工件未签名。如果我用deploy阶段替换(应该可以正常工作)阶段ìnstall,那么它会在我运行时为 OSS Sonatype 正确签名mvn deploy,但是即使在我运行时它也会运行mvn install(我不希望)。我错过了什么?

Tun*_*aki 5

在部署之前执行pre-deployMaven 生命周期中没有调用阶段。它是在MNG-3869中提出的,但这被关闭为“不会修复”,并且也在MNG-4330 中提到

目前,这是一个profile的工作。在下面的配置中,maven-gpg-plugin只有在deploy配置文件被激活时才会执行,例如在命令行中使用mvn clean deploy -Pdeploy.

这样,当您要部署时,您可以激活此配置文件。但是当用户运行 a 时mvn clean install,它不会被激活。

<profiles>
  <profile>
    <id>deploy</id>
    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-gpg-plugin</artifactId>
          <executions>
            <execution>
              <id>sign-artifacts</id>
              <phase>verify</phase>
              <goals>
                <goal>sign</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </build>
  </profile>
</profiles>
Run Code Online (Sandbox Code Playgroud)