Maven插件教程(1)—clean插件

作者: 飞扬小初 | 来源:发表于2017-08-15 15:41 被阅读60次

当我们构建maven工程的时候,为了不让先前的构建输出影响到本次构建,一般需要将将先前的构建文件夹和文件删除。maven中使用clean插件来完成这项任务。
不妨先尝试clean一下maven项目:
mvn clean

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building utils 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ utils ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.207 s
[INFO] Finished at: 2017-08-15T15:19:27+08:00
[INFO] Final Memory: 7M/123M
[INFO] ------------------------------------------------------------------------

Process finished with exit code 0

当我们调用clean阶段,clean生命周期被自动调用,这个生命周期只有一个clean的目标,利用clean插件来完成这个目标——删除构建文件夹,一般而言,这个构建文件夹是项目中的target文件夹。

自动调用clean插件

由于clean是独立于default生命周期的,所以clean无法被default生命周期自动调用,因而一般来说必须在default生命周期被调用之前调用。有没有办法可以做到让default生命周期自动调用clean插件来完成clean的目标呢?

为了实现这个功能,我们可以在POM文件内加入如下配置:

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>2.5</version>
                <executions>
                    <execution>
                        <id>auto-clean</id>
                        <phase>initialize</phase>
                        <goals>
                            <goal>clean</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

以上配置会在initialize阶段调用clean插件,这个执行被命名为auto-clean,也就是其id。

验证一下,敲入mvn package,可以看到如下结果:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building utils 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-clean-plugin:2.5:clean (auto-clean) @ utils ---
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ utils ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] Copying 0 resource
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ utils ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ utils ---
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory F:\BitBucket\utils\src\test\resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ utils ---
[INFO] Nothing to compile - all classes are up to date
[INFO] 
[INFO] --- maven-surefire-plugin:2.12.4:test (default-test) @ utils ---
[INFO] No tests to run.
[INFO] 
[INFO] --- maven-jar-plugin:2.4:jar (default-jar) @ utils ---
[INFO] Building jar: F:\BitBucket\utils\target\utils-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.167 s
[INFO] Finished at: 2017-08-15T15:28:13+08:00
[INFO] Final Memory: 10M/155M
[INFO] ------------------------------------------------------------------------

可以发现,clean在初始化阶段被自动调用了。

跳过文件夹删除

有时候,你可能会不希望clean插件删除target目录,怎么实现呢?

<configuration>
    <skip>true</skip>
</configuration>

可以通过在plugin下加入这个配置,此时无论是强制调用clean还是自动调用clean,都不会删除target目录了。

新增删除目录

那如果希望能够删除额外的目录呢?此时可以在configuration中配置filesets,通过这个配置就可以新增需要额外删除的目录了。

<configuration>
    <skip>false</skip>
    <filesets>
        <fileset>
            <directory>${basedir}/report</directory>
        </fileset>
    </filesets>
</configuration>

相关文章

网友评论

    本文标题:Maven插件教程(1)—clean插件

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