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

时间:2015-02-02 22:13:06

标签: java maven maven-3

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

        <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首先部署到远程仓库,然后我签署我的罐子......

我读到插件是按POM文件中定义的顺序执行的,所以我尝试在sign插件后配置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。

2 个答案:

答案 0 :(得分:2)

首先我建议将maven-gpg-plugin更新为更新的版本,因为此版本1.1是2010年。除此之外我建议保留插件的默认值,这意味着{{ 3}}作为deploy生命周期和binding of maven-deploy-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>

答案 1 :(得分:0)

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

我可以知道您使用的是什么版本的Maven?我认为同一阶段的插件应按照Maven 2.0.10(或可能更早)之后的定义运行。但由于maven-deploy-plugindeploy阶段的默认绑定,我不清楚订购是否有效