Maven 插件在构建过程中执行多次

问题描述 投票:0回答:2

我有一个具有多个重叠配置文件的 Maven 项目。我想在每次构建开始时显示活动配置文件。所以我将以下内容放入

pom.xml <build>
部分:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-help-plugin</artifactId>
    <version>2.1.1</version>
    <executions>
        <execution>
            <id>display-active-profiles-at-start-of-build</id>
            <phase>validate</phase>
            <goals>
                <goal>active-profiles</goal>
            </goals>
        </execution>
    </executions>
</plugin>

问题是插件在构建过程中执行多次:

  1. 在构建开始时(在
    validate
    阶段)。
  2. jar:jar
    执行时。
  3. source:jar
    之后/在
    pre-integration-test
    期间(?),当Jetty启动时。

指定

<phase>initialize</phase>
时会出现类似的结果。有没有办法让它只在构建开始时运行?

maven-2 maven maven-plugin
2个回答
5
投票

它执行多次的原因是因为您的一个插件正在执行另一个生命周期作为其魔力的一部分。

source:jar
绝对可以做到这一点,正如 其文档所指定的那样。

在之前调用生命周期阶段生成源的执行 自行执行。

jar:jar
通常不会,但可能你有另一个插件可以衍生出另一个生命周期。

在生成源 jar 的情况下,通常不需要另一个生命周期,插件作者通过实现

jar-no-fork
mojo 认识到了这一点。

您可以按照此处描述的步骤将其替换为默认的

jar
mojo -> http://maven.apache.org/plugins/maven-source-plugin/usage.html


0
投票

我在自动化竹制管道上也遇到过类似的问题。我通过在我的 pom.xml 上设置特定的 maven-source-plugin 版本解决了这个问题

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.2.1</version>
  </plugin>

根本原因与我的 Java 版本(Java 8)有关。由于缺少插件定义/版本,显然maven会自动选择一个不兼容的maven-source-plugin来使用。

© www.soinside.com 2019 - 2024. All rights reserved.