美文网首页
Maven中如何跳过不支持skip参数的插件执行

Maven中如何跳过不支持skip参数的插件执行

作者: 司青玄 | 来源:发表于2022-03-09 17:49 被阅读0次

    我们知道,很多maven官方插件都支持skip参数,命令行指定skip=true即可跳过此插件的执行,非常方便。但是很多第三方的插件根本就不支持skip参数,无法通过命令行传参的方式跳过插件的执行。

    我们可以用一些非官方的方式绕过这个限制。总体思路为,将你想要跳过的插件的phase参数指定为一个不存在的phase,这样maven在执行的时候就会忽略这个插件。例如:

        
    <properties>
        <mvn.jarvis.skip>package</mvn.jarvis.skip>
    </properties>
    <plugin>
        <groupId>com.baidu.jarvis</groupId>
        <artifactId>jarvis-pkg-maven-plugin</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <configuration>
            <outputDirectory>../output</outputDirectory>
        </configuration>
        <executions>
            <execution>
                <phase>${mvn.jarvis.skip}</phase>
                <goals>
                    <goal>package-tarball</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
    

    注意看<phase>标签,我们使用了一个属性变量来占位,并且默认值为package,这样在不显式传参时就会在package阶段正常执行此插件。当我们想要跳过时,只需要:

    mvn clean package -Dmvn.jarvis.skip=none
    

    即可,因为maven并不存在名为none的phase, 因此本次构建就会忽略这个插件(目标)的执行。

    为什么非要跳过?因为这个插件要消耗2s多的构建时间,而我在本地构建时并不需要这个插件的产出结果,但是在公司服务器上却必须要执行。用这种方法,可以让项目在服务器上CI时正常打包,在本地构建时临时跳过,加快构建速度,节省宝贵时间。

    相关文章

      网友评论

          本文标题:Maven中如何跳过不支持skip参数的插件执行

          本文链接:https://www.haomeiwen.com/subject/muatdrtx.html