Apache Maven生命周期和插件目标概念、定义项目描述信息和生成site站点

本文介绍了Maven的相关知识。Maven设定三个生命周期,让构建过程自动化,不同生命周期执行独立,同一生命周期执行后续环节会先执行前面环节。其核心负责调度,具体工作由插件完成,一个插件对应多个目标。还说明了可在pom.xml定义项目描述信息并生成site站点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 生命周期

1.1 作用

为了让构建过程自动化完成,Maven设定了三个生命周期,生命周期中的每一个环节对应构建过程中的一个操作

Maven设定了三个生命周期,一个生命周期的每一环对应构建过程中的一个操作

  • 不同的生命周期的执行是独立的,比如命令mvn clean package,执行Clean生命周期和Default生命周期
  • 同一生命周期,执行后面的环节,会自动执行前面的环节。比如命令mvn install,会先按顺序执行Default生命周期install环节前面的所有环节(compile、package等),再最终执行install环节

1.2 三个生命周期

生命周期名称作用各个环节
Clean清理操作相关pre-clean
clean
post-clean
Site生成站点相关。站点是一组静态页面,是对项目进行简要说明的,比如项目介绍、开发人员、依赖信息pre-site
site
post-site
deploy-site
Default主要构建过程validate
generate-sources
process-sources
generate-resources
process-resources:复制并处理资源文件,至目标目录,准备打包
compile:编译项目main目录下的源代码
process-classes
generate-test-sources
process-test-sources
generate-test-resources
process-test-resources:复制并处理资源文件,至目标测试目录
test-compile:编译测试源代码
process-test-classes
test:使用合适的单元测试框架运行测试。这些测试代码不会被打包或部署
prepare-package
package:接受编译好的代码,打包成可发布的格式,如jar
pre-integration-test
integration-test
post-integration-test
verify
install:将包安装至本地仓库,以让其它项目依赖
deploy:将最终的包复制到远程的仓库,以让其它开发人员共享;或者部署到服务器上运行(需借助插件,例如:cargo)

2. 插件和目标

2.1 插件

Maven的核心程序仅仅负责宏观调度,不做具体工作。具体工作都是由Maven插件完成的。例如:编译就是由maven-compiler-plugin-3.10.1.jar插件来执行的

2.2 目标

一个插件可以对应多个目标,而每一个目标都和生命周期中的某一个环节对应

Default生命周期中有compile和test-compile两个和编译相关的环节,这两个环节对应compile和test-compile两个目标,而这两个目标都是由maven-compiler-plugin-3.10.1.jar 插件来执行的

3. 定义项目描述信息和生成site站点

3.1 项目描述信息介绍

Maven可以在pom.xml定义项目描述信息,包括:

  • 公司或组织信息
  • 项目许可证
  • 开发成员信息
  • SCM信息
  • issue管理信息

可以将整个项目相关信息收集起来,生成HTML页面,组成一个可以直接访问的站点。即Maven的site生命周期

3.2 在pom.xml中定义项目描述信息

示例如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.hh</groupId>
  <artifactId>maven-learn</artifactId>
  <version>0.1</version>
  
  <name>my-project</name>
  <description>my project test</description>
  <url>https://www.my-project.com</url>
  
  <organization>
    <name>my-company</name>
    <url>https://www.my-company.com</url>
  </organization>
  
  <licenses>
    <license>
      <name>Apache License, Version 2.0</name>
      <url>https://www.apache.org/licenses/LICENSE-2.0</url>
    </license>
  </licenses>
  
  <developers>
    <developer>
      <name>dev-test</name>
      <email>dev-test@163.com</email>
      <organization>my-company</organization>
      <organizationUrl>https://www.my-company.com</organizationUrl>
    </developer>
  </developers>
  
  <scm>
    <connection>scm:git:git://github.com/my-project/my-project-core.git</connection>
    <developerConnection>scm:git:ssh://git@github.com/my-project/my-project-core.git</developerConnection>
    <url>https://github.com/my-project/my-project-core</url>
  </scm>
  
  <issueManagement>
    <system>GitHub</system>
    <url>https://github.com/my-project/my-project-core/issues</url>
  </issueManagement>
  
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-site-plugin</artifactId>
            <!-- 默认的是3.3版本,执行mvn site会报:java.lang.NoClassDefFoundError: org/apache/maven/doxia/siterenderer/DocumentContent -->
            <version>3.12.0</version>
        </plugin>
      </plugins>
    </pluginManagement>

  </build>

</project>

3.3 生成site站点

执行mvn clean site,生成的site站点位于target/site目录下,打开target/site/index.html文件,显示如下:

site站点首页

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值