运行 部署到远程仓库之前的 Maven 插件

Run Maven plugin just before deploy to remote repo

在我的 Maven 项目中,我使用 pgp 插件来签署我的 jars。我只需要在部署到远程仓库时执行此操作,而不是在安装到本地仓库时执行此操作。所以我尝试将阶段设置为部署。

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.1</version>
            <executions>
                <execution>
                    <id>sign-artifacts</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>sign</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

使用该配置,maven 首先部署到远程仓库,然后签署我的 jars...

我读到插件是按照它们在 POM 文件中定义的顺序执行的,所以我尝试在签署插件之后配置 deploy-plugin,但这没有任何效果

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.1</version>
            <executions>
                <execution>
                    <id>sign-artifacts</id>
                    <phase>deploy</phase>
                    <goals>
                        <goal>sign</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
            <executions>
                <execution>
                    <phase>deploy</phase>
                    <goals>
                        <goal>deploy</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

如何实现标志插件不是在安装时执行,而是在工件上传前部署时执行?我正在使用 maven3.

我看到项目将 gpg-plugin 置于 verify 阶段。

请问您使用的是什么版本的Maven?我相信同一阶段的插件应该 运行 以便在 Maven 2.0.10(或可能更早)之后定义它。但是,由于 maven-deploy-plugindeploy 阶段的默认绑定,我不清楚排序是否有效

首先,我建议更新 maven-gpg-plugin to an more up-to-date version cause this version 1.1 is of 2010..Apart from that i would suggest to keep the defaults of the plugins which means the binding of maven-deploy-plugin as the deploy life cycle and for the maven-gpg-plugin verify 生命周期阶段,如果您有集成测试,这并不理想。在这种情况下,定义一个仅在发布情况下激活的配置文件以防止与集成测试混淆是有意义的。

<plugin>
  <inherited>true</inherited>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-deploy-plugin</artifactId>
  <version>2.8.2</version>
  <configuration>
    <updateReleaseInfo>true</updateReleaseInfo>
  </configuration>
  <executions>
    <execution>
      <goals>
        <goal>deploy</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>
      <goals>
        <goal>sign</goal>
      </goals>
    </execution>
  </executions>
</plugin>