【问题标题】:Run Maven plugin just before deploy to remote repo在部署到远程仓库之前运行 Maven 插件
【发布时间】:2015-02-02 22:13:05
【问题描述】:

在我的 maven 项目中,我使用 pgp 插件对我的 jar 进行签名。我只在部署到远程仓库时才需要这样做,而不是在安装到本地仓库时。所以我尝试设置部署阶段。

        <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 首先部署到远程 repo,然后签署我的 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。

【问题讨论】:

  • 听起来有点棘手......本地安装和远程部署的工件不应该是相同的吗?

标签: java maven maven-3


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 2012-06-10
      • 2013-02-25
      • 1970-01-01
      • 2014-08-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多