深入探讨Maven构建生命周期及插件机制

简介: 深入探讨Maven构建生命周期及插件机制

😀前言

在现代软件开发中,构建和管理项目成为了一个核心环节。Apache Maven 不仅仅是一个便捷的项目构建工具,它还提供了一个全面的框架来理解和掌控软件项目的构建过程。通过定义明确的构建生命周期和灵活的插件机制,它极大地简化了构建和项目管理过程。在本篇文章中,我们将深入探讨 Maven 的构建生命周期和其插件机制,通过一步步的解析来帮助你更好地理解和使用 Maven

🧑个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力😉😉


深入探讨Maven构建生命周期及插件机制

一句话: Maven 构建生命周期描述的是一次构建过程经历了多少个事件

生命周期的3 大阶段

clean

清理工作

default

核心工作,例如编译,测试,打包,部署等

site

产生报告,发布站点等

生命周期是分阶段执行的

一句话: 项目构建生命周期分很多阶段,并不是每次都完整执行,而是根据用户的要求来执行的【比如你执行compile, 那么就执行到complie 这个阶段,如果你执行install, 则会执行compile->test->package->install】

举例说明

1、演示compile

2、演示install

maven 插件

介绍

1、插件与生命周期内的某个阶段绑定,在执行到对应生命周期时, 由对应插件来完成任务/功能.

2、maven 插件很多,先看一张图:

3、通过插件可以自定义其他功能

4、文档: http://maven.apache.org/plugins/index.html

自定义插件-应用实例

需求: 在pom.xml 加入自定义插件,能够在对maven_D 项目打包时,能输出主程序和测试程序的源码

完成步骤
  1. 当前package 只会得到项目的jar

  1. 修改D:\java_projects\maven_D\pom.xml, 加入maven 插件并配置(注意: 加入自定义插件后,可能会爆红,重启项目即可.)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         韩顺平Java 工程师
         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.wyx</groupId>
    <artifactId>maven_D</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <!-- 解读
            1. option 默认是false , 即不隐藏
            2. option 设置为true , 即隐藏-->
            <optional>false</optional>
            <!-- scope 设置为test, 让他在test 范围有效-->
            <scope>compile</scope>
        </dependency>
    </dependencies>
    <!--在build 时,自定义的插件-->
    <build>
        <plugins>
            <plugin>
                <!-- 插件坐标-->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <goals>
                            <!-- 对主程序输出源码打包-->
                            <goal>jar</goal>
                            <!-- 对测试程序输出源码打包-->
                            <goal>test-jar</goal>
                        </goals>
                        <!-- 在generate-test-resources 阶段执行-->
                        <phase>generate-test-resources</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
  1. 观察一下maven 项目管理器

  1. 再次执行maven-D 的intall 操作, 会得到两个新的jar ,分别包含了主程序和测试程序的源码。(说明: 测试时,需要保证src/main/… 和src/test/… 两个目录下有java 源代码,否则不会生成源码jar)

  1. 解压得到jar , 可以看到源码了.

maven 插件-maven 构建生命周期关系图

图解

  1. 在maven 项目构建生命周期中,每个阶段的执行都有相应的插件完成
  2. 各个插件执行过程中,会附带输出内容,比如jar/war/xml/源码
  3. 程序员可以使用maven 默认的插件,也可以自定义插件,完成定制任务.
  4. 自定义插件引入成功, 是可以看到

😄总结

通过深入解析 Maven 的构建生命周期和插件机制,我们不仅掌握了 Maven 项目构建的核心概念,也学会了如何利用插件来定制和优化我们的构建过程。我们学习了如何清理项目,理解了默认生命周期中各个阶段的职责,以及如何生成项目报告和站点。

同时,我们还详细探讨了 Maven 插件的作用和使用方式,包括如何通过配置插件来输出项目和测试的源代码,这为我们提供了一个更灵活和强大的构建工具。

希望通过本文,您不仅对 Maven 有了更深入的理解,也能够更加熟练和高效地利用 Maven 来管理和构建您的项目。记得,实践是最好的老师,不妨尝试自己创建和配置 Maven 项目,探索更多的 Maven 插件和功能,将其充分应用到您的项目中,从而更好地掌握 Maven 的强大功能。


文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论😁

希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读🍻

如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力🤞


目录
相关文章
|
1天前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven构建生命周期包括验证、编译、测试、打包、检查、安装和部署等阶段,用于项目构建与发布。标准生命周期有清洁、默认和站点三个阶段。清洁周期清除编译输出,默认周期涵盖验证、编译、测试、打包、验证质量、安装到本地仓库及部署到远程仓库。站点周期则生成并部署项目文档。
|
2天前
|
Java 测试技术 项目管理
Maven 构建生命周期
Maven的构建生命周期包括验证、编译、测试、打包、检查、安装和部署等阶段,用于项目构建与发布。它有三个标准生命周期:Clean(如clean目标,清除编译输出),Default(验证、编译、测试、打包、验证质量、安装到本地仓库、部署到远程仓库)和Site(生成项目文档和站点,然后部署到远程服务器)。每个生命周期阶段按顺序执行,确保项目管理的标准化和自动化。
|
3天前
|
XML Java 测试技术
Maven 构建 & 项目测试
本文介绍了如何使用Maven构建和测试Java应用。在`C:/MVN/consumerBanking`项目中,`pom.xml`配置了JUnit作为测试框架。执行`mvn clean package`命令进行构建,Maven会清理目标目录,编译源码和测试代码,运行测试用例,最后生成`consumerBanking-1.0-SNAPSHOT.jar`。测试报告位于`surefire-reports`文件夹。添加新Java类`Util.java`到项目后,更新`App.java`以使用`Util`类。
|
5天前
|
Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性:当bus-core-api项目构建完成后,app-web-ui和app-desktop-ui项目自动构建。这两个项目依赖bus-core-api的1.0-SNAPSHOT版本。通过Maven,团队能高效管理项目间的依赖关系,实现无缝集成和更新。
|
10天前
|
XML Java 测试技术
Maven 构建 & 项目测试
该文介绍了如何使用Maven进行Java应用的构建与测试。在`C:/MVN/consumerBanking`项目中,`pom.xml`配置了JUnit依赖。Maven默认创建了源码和测试文件,通过命令`mvn clean package`进行构建,生成`consumerBanking-1.0-SNAPSHOT.jar`。测试报告在`surefire-reports`文件夹。新增`Util`类并更新`App`后,执行`mvn clean compile`编译,然后运行`java -cp . com.companyname.bank.App`显示&quot;Hello World!&quot;。
|
10天前
|
Java Maven
Maven 构建 Java 项目
使用Maven的`maven-archetype-quickstart`插件在C:\MVN下创建Java应用,命令包括`groupId`, `artifactId`, 和 `archetypeArtifactId`参数。生成的项目包含src/main/java和src/test/java目录,分别用于存放源代码和测试代码,还有src/main/resources用于资源文件。默认提供App.java主类和AppTest.java测试类。按照预设结构组织文件,Maven将自动管理构建过程。
|
11天前
|
Java 测试技术 Maven
Maven 插件
Maven插件负责执行生命周期中的阶段,如clean、default(build)、site。生命周期阶段是Maven的标准接口,实际操作由相应插件实现,如maven-clean-plugin执行clean阶段。Maven是一个基于插件的框架,插件用于生成jar/war、编译代码、运行单元测试、生成文档和报告。通过`mvn [plugin-name]:[goal-name]`调用插件目标,如`mvn compiler:compile`用于编译Java代码。
|
12天前
|
XML Java Maven
Maven 构建配置文件
Maven的构建配置文件用于定制不同环境的构建方式,如pom.xml中的activeProfiles或profiles元素定义。配置文件分项目级、用户级和全局级,通过命令行、设置.xml、环境变量、操作系统设置或文件存在与否激活。例如,src/main/resources下的env.properties(默认)、env.test.properties(测试)和env.prod.properties(生产)用于测试,展示配置文件如何影响构建行为。示例中使用AntRun插件演示配置应用。
|
13天前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven的构建生命周期包括验证、编译、测试、打包、检查、安装和部署等阶段,用于项目构建与发布。它有三个标准生命周期:Clean(清除目标目录)、Default(验证、编译、测试、打包、验证质量、安装和部署)和Site(生成项目文档和站点)。每个阶段由插件目标组成,如clean、package和dependency:copy-dependencies,这些目标可以绑定到特定阶段或独立执行。命令行中,阶段和目标的执行顺序按照出现的顺序进行。
|
4天前
|
Java Apache Maven
Maven 项目文档
在 `C:/MVN` 目录下创建 Maven 项目 `consumerBanking` 使用命令:`mvn archetype:generate -DgroupId=com.companyname.bank -DartifactId=consumerBanking -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false`。为解决 `mvn site` 命令执行时的 `NoClassDefFoundError`

推荐镜像

更多