美文网首页繁琐的任务简单化maven
繁琐的任务简单化,Maven的插件机制

繁琐的任务简单化,Maven的插件机制

作者: alcohol和cat | 来源:发表于2019-08-05 19:48 被阅读2次

    Maven的生命周期与Maven插件是项目绑定的,生命周期可以理解为项目构建步骤的集合,它定义了各个构建环节的执行顺序,有了这个顺序,Maven 就可以自动化的执行构建命令。

    Maven 的核心程序中定义了抽象的生命周期,生命周期中各个阶段的具体任务是由插件来完成的。有三套相互独立的生命周期,各个构建环节执行顺序不能打乱,必须按照既定的正确顺序来执行。

    Clean Lifecycle:在进行真正的构建之前进行一些清理工作

    Default Lifecycle:构建的核心部分,编译、测试、打包、安装、部署等等。

    Site Lifecycle:生成项目报告,站点,发布站点。

    这三个都是相互独立的。你可以仅仅调用 clean 来清理工作目录,仅仅调用 site 来生成站点。当然,也可以直接运行 mvn claen install site 运行所有这三套生命周期。Maven默认地将一些默认插件的目标与Maven的生命周期维系在了一起,比如default的compile这个阶段就是和maven-compiler-plugin这个插件的compile目标维系着不可分割的关系。

    为了不让用户不用任何配置就能进行一般程度的项目构建,Maven默认给自己生命周期的核心阶段绑定了自己的插件。

    clean如下:

    site如下:

    最麻烦的就是最核心的default:

    通过 Maven 的生命周期我们可以了解到,不同的生命周期绑定不同的插件;同时我们知道,下载下来的maven核心的东西不过3-4M,它主要就是通过插件来完成这些工作的,一旦碰到没有的插件,它会跑到相应的地方下载,然后来完成整个过程。那么在我们的项目中如何使用插件呢?

    打开http://maven.apache.org/plugins/index.html网址,我们可以看到apache下面的很多插件,apache下面的插件是比较正规的,它里面的信息非常详细。下面我们来看看里面有个source的插件的用法。

    Source插件是对源代码进行打包的一个插件,默认情况下,它会将生成的源代码放在工程目录的target下面。

    Source插件具有五个目标:

    source:aggregateaggregrates sources for all modules in an aggregator project.

    source:jaris used to bundle the main sources of the project into a jar archive.

    source:test-jaron the other hand, is used to bundle the test sources of the project

    into a jar archive.

    source:jar-no-forkis similar to jar but does not fork the build lifecycle.

    source:test-jar-no-forkis similar to test-jar but does not fork the build lifecycle.

    在我们的工程pom.xml中,在后面引入下面这段配置:

    <build>

    <plugins>

    <plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-source-plugin</artifactId>

    <version>2.1.2</version>

    </plugin>

    </plugins>

    </build>

    上面这段配置就是对源码进行打包的插件,我们运行source:jar-no-fork,那么在项目的目录底下的target会生成一个类似于user-core-0.0.1-SNAPSHOT-sources.jar这样的文件,即项目的源文件。那么如何将这个插件与特定的生命周期绑定呢?我们来看下面这段配置:

    <build>

    <plugins>

    <plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-source-plugin</artifactId>

    <version>2.1.2</version>

    <executions>

    <execution>

    <phase>package</phase>

    <goals>

    <goal>jar-no-fork</goal>

    </goals>

    </execution>

    </executions>

    </plugin>

    </plugins>

    </build>

    通过这段配置,大家可以用mvn package将项目打包的同时会将源代码进行打包。图示说明:

    Apache Maven里面还有很多有用的插件,大家可以自己去试一下,里面说明很详细,大家只要按着官方文档进行配置,一般情况下是没问题的

    相关文章

      网友评论

        本文标题:繁琐的任务简单化,Maven的插件机制

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