在maven插件执行中禁用目标

all*_*rog 5 java plugins maven

我有一个设置,我的大多数项目都需要为编译和testCompile目标运行xtend插件.我在pluginManagement部分描述它:

<plugin>
    <groupId>org.eclipse.xtend</groupId>
    <artifactId>xtend-maven-plugin</artifactId>
    <version>2.5.3</version>
    <executions>
        <execution>
            <goals>
                <goal>compile</goal>
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

现在,有些项目不需要一个目标或另一个目标.我已经尝试了继承的标签,随机属性玩,但没有工作.如何覆盖执行以仅包含所需目标?

更新:故事的结论是不能禁用个人目标.可以管理的最小范围是execution.

bla*_*ild 10

通常,您只能使用技巧禁用执行:

将执行阶段设置为不存在阶段(dont-execute).但请注意,您必须使用两个不同的执行ID才能允许单独关闭两个目标:

<plugin>
    <groupId>org.eclipse.xtend</groupId>
    <artifactId>xtend-maven-plugin</artifactId>
    <version>2.5.3</version>
    <executions>
        <execution>
            <id>xtend-compile</id>
            <goals>
                <goal>compile</goal>
                <goal>testCompile</goal>
            </goals>
        </execution>
        <execution>
            <id>xtend-testCompile</id>
            <goals>
                <goal>testCompile</goal>
            </goals>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

子模块:

<plugin>
    <groupId>org.eclipse.xtend</groupId>
    <artifactId>xtend-maven-plugin</artifactId>
    <version>2.5.3</version>
    <executions>
        <execution>
            <id>xtend-testCompile</id>
            <phase>dont-execute</phase>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

在您的特定情况下,您当然也可以skipXtend在每次执行中使用配置属性来跳过执行,但只是阻止插件执行任何操作:

<plugin>
    <groupId>org.eclipse.xtend</groupId>
    <artifactId>xtend-maven-plugin</artifactId>
    <version>2.5.3</version>
    <executions>
        <execution>
            <id>xtend-testCompile</id>
            <configuration>
                <skipXtend>xtend-testCompile</skipXtend>
            </configuration>
        </execution>
    </executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)

  • 您还可以将 `dont-execute` 替换为 `none`,这似乎可以被 IntelliJ 更好地理解,但没有记录 (2认同)