软件开发中有项目构建生命周期的概念,比如清理,编译,打包,部署等。Maven抽象并为Java开发规范了这些概念,在每个生命周期会调用特定的插件,最终实现项目的构建。
Maven有三套生命周期:
我们这里主要介绍default生命周期。
下面列出的是构建生命周期中比较主要的阶段(注意这个列表不是完整的):
实际上我们使用Maven命令时,大多数情况都是在调用各个生命周期阶段,下面是调用默认生命周期的几个例子。
清理项目,打包。我们一般用这条命令生成我们最终需要的jar(或war)包。
mvn clean package
清理项目,发布项目。
mvn clean deploy
每个Maven插件都会定义插件目标,插件目标实际上就是插件要实现的构建功能,一个功能对应一个插件目标。
例如很常用的maven-dependency-plugin
,这个插件用于分析项目的依赖结构,它定义了一些插件目标,包括dependency:analyze
、dependency:tree
等。
注:插件目标的写法是:插件名作为前缀,目标名作为后缀。
参与构建的插件需要和Maven生命周期进行绑定,实际上上文说过Maven各个生命周期会调用默认插件,比如编译阶段调用maven-compiler-plugin
,调用的实际上就是这个插件的目标:compiler:compile
。
我们也可以在pom.xml
中进行额外的配置,将我们需要的其他插件绑定到某个特定的生命周期,这里就不具体介绍了,针对特定的插件,通常都会有在文档中说明其用法。
下面是命令行中调用插件目标的例子。
mvn dependency:tree
实际上就是使用mvn 插件目标
的方式进行调用就可以了。