构建生命周期

软件开发中有项目构建生命周期的概念,比如清理,编译,打包,部署等。Maven抽象并为Java开发规范了这些概念,在每个生命周期会调用特定的插件,最终实现项目的构建。

Maven有三套生命周期:

  • clean:清理项目
  • default:构建项目
  • site:建立项目站点

我们这里主要介绍default生命周期。

构建生命周期的阶段

下面列出的是构建生命周期中比较主要的阶段(注意这个列表不是完整的):

  1. 验证 validate:验证一些项目的信息是否正确
  2. 编译 compile:队员代码进行编译
  3. 测试 test:执行单元测试
  4. 打包 package:对编译后的输出进行打包
  5. 校验 verify
  6. 安装 install:将编译打包后的输出安装到Maven本地库
  7. 部署 deploy:将最终的包复制到远程仓库

在命令行中调用生命周期阶段

实际上我们使用Maven命令时,大多数情况都是在调用各个生命周期阶段,下面是调用默认生命周期的几个例子。

清理项目,打包。我们一般用这条命令生成我们最终需要的jar(或war)包。

mvn clean package

清理项目,发布项目。

mvn clean deploy

插件和Maven生命周期

插件目标

每个Maven插件都会定义插件目标,插件目标实际上就是插件要实现的构建功能,一个功能对应一个插件目标。

例如很常用的maven-dependency-plugin,这个插件用于分析项目的依赖结构,它定义了一些插件目标,包括dependency:analyzedependency:tree等。

注:插件目标的写法是:插件名作为前缀,目标名作为后缀。

生命周期和插件目标绑定

参与构建的插件需要和Maven生命周期进行绑定,实际上上文说过Maven各个生命周期会调用默认插件,比如编译阶段调用maven-compiler-plugin,调用的实际上就是这个插件的目标:compiler:compile

我们也可以在pom.xml中进行额外的配置,将我们需要的其他插件绑定到某个特定的生命周期,这里就不具体介绍了,针对特定的插件,通常都会有在文档中说明其用法。

命令行中调用插件目标

下面是命令行中调用插件目标的例子。

mvn dependency:tree

实际上就是使用mvn 插件目标的方式进行调用就可以了。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap