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

时间:2016-04-24 13:55:01

标签: maven

这是一个非常愚蠢的问题,但我在配置POM上的maven-gpg-plugin时无法正常工作。基本上我只希望它在我运行mvn deploy时签署工件,以便在我运行clean install时不要求我的密码(解密我的私钥)。在github上下载我的项目的任何人都应该能够运行clean install,即使没有我的私钥也是合理的。

好的,所以我想这样做:

<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>

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

1 个答案:

答案 0 :(得分:3)

在部署之前,Maven lifecycle中没有名为pre-deploy的阶段。它是在MNG-3869中提出的,但是它被关闭为“不会修复”,并在MNG-4330中也提到过。

目前,这是profile的工作。在以下配置中,maven-gpg-plugin仅在激活deploy配置文件时执行,例如在命令行中使用mvn clean deploy -Pdeploy

这样,当您要部署时,可以激活此配置文件。但是,当用户运行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>