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

null

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如下:

null

site如下:

null

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

null

通过 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中,在后面引入下面这段配置:

org.apache.maven.plugins

maven-source-plugin

2.1.2

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

org.apache.maven.plugins

maven-source-plugin

2.1.2

package

jar-no-fork

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

null

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

打开APP阅读更多精彩内容