maven lifecycle 与 plugin

本文详细解析Maven的三种生命周期:default、clean和site,介绍各阶段的关键步骤,如clean、validate、compile、test、package、verify、install和deploy。同时,探讨Maven插件与依赖管理,包括资源文件过滤、编译、web部署及配置技巧。

lifecycle

maven的生命周期分为3种

1.default

2.clean

3.site

大概流程如图所示

其中比较重要的几个步骤有以下几个

1.clean

用于清除之前构建生成的所有文件

其中具体为清楚了Target目录中的所有文件,包括该目录

i.e:删除了install生成的所有文件

2.validate

用于验证项目是否真确,并且其说有必要信息是否都可用

3.compile

编译项目的源代码,主要是java文件

一般是编译scr/main/java或是scr/test/java里面的文件

4.test

用合适的测试框架来进行测试,测试compile中编译出来的代码

测试的东西一般不加包和部署

5.packaging

获取compile中编译好的代码并将其打包成可分类的格式,i.e:JAR

6.vertify

这步是用来验证test

检查test的结果是否满足标准

7.install

将软件包安装到本地存储库中

确保本地其他项目可能需要使用他(eg:装了core才能用oms)

9.deploy

复制最终的包至远程仓库

共享给其它开发人员和项目

PS:在install的时候可能会出现乱码,此时对着install点右键,选择create xxx install

      在command line里写 install -Dmaven.test.skip=true -f pom.xml 然后用新写的命令代替旧的install即可

 

plugin

<dependency>

帮组分析项目依赖

依赖就是在maven里面要用哪个包就在<denpendency>标签里面写东西

一般不用自己写

可以在google里面搜索“maven xxx repository”

或者直接在http://mvnrepository.com/里面搜索xxx

<resources>

将资源文件过滤

resources用来处理资源

compiler用来编译java文件

<jetty>

快速在web上部署

进行调试的时候比较方便和节省时间

<build>

可以分为

<project build>全局配置:为全局有效

<profile build>配置:为针对不同的profile配置

build里面有<resource>和<plugin>两种标签

他们都是把一些默认方法放在其他文件路径的文件放到“src/main/java”里面

<packaging>

打包方式主要有JAR和WAR两种

其中JAR用于比较小的项目,好处为不用依赖包,因为他把应用依赖的所有依赖包和程序打包在一个全量包里,他说packaging的默认方式

WAR适用于需要部署的项目

<scope>

适用范围主要分为test和provided两种

test对测试范围有效

provided对编译和测试过程都有效

 

PS:

1.匹配符**可以匹配路径,*只能匹配名字

2.如果启动失败先看错误信息

3.jetty:run要create一个再运行,不用直接运行,因为直接运行可能会调用到了其他人的profiles

4.运行maven之前先看一块profile的配置环境有没有勾选错别人的环境

### Maven 项目仅有生命周期的情况分析 在 Maven 中,生命周期(Lifecycle)是一个核心概念。Maven 的生命周期定义了一组有序的阶段(Phase),这些阶段按照特定顺序执行[^1]。即使没有显式配置插件或目标(Goal),生命周期仍然可以通过默认绑定的插件和目标来执行一些基本操作。 #### 默认绑定的插件目标 Maven 的生命周期阶段通常会绑定一些默认的插件和目标。例如,在 `default` 生命周期中,某些阶段会自动绑定插件以完成特定任务。以下是一些常见的默认绑定示例: - **compile** 阶段:绑定到 `maven-compiler-plugin` 的 `compile` 目标,用于编译项目的源代码。 - **test** 阶段:绑定到 `maven-surefire-plugin` 的 `test` 目标,用于运行单元测试。 - **package** 阶段:根据项目的打包类型(如 JAR、WAR),绑定到相应的插件(如 `maven-jar-plugin` 或 `maven-war-plugin`)以生成最终的可交付产物。 - **install** 阶段:绑定到 `maven-install-plugin` 的 `install` 目标,将生成的构件安装到本地仓库[^2]。 如果 Maven 项目中没有任何显式的插件或配置,Maven 将依赖这些默认绑定来完成生命周期中的任务。然而,如果没有明确的打包类型或缺少必要的依赖项,可能导致构建失败或无法生成预期的输出。 #### 没有插件或配置时的行为 当 Maven 项目仅包含生命周期而没有插件或配置时,以下情况可能发生: 1. 如果未指定打包类型(如 `<packaging>` 元素缺失),Maven 默认将项目视为 `jar` 类型。 2. 如果项目缺少必要的依赖项,Maven 可能无法正确编译代码或运行测试。 3. 如果生命周期阶段未绑定任何插件目标,则该阶段不会执行任何操作。 #### 示例:仅使用生命周期的 Maven 项目 以下是一个仅包含生命周期的基本 Maven 项目结构: ```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.example</groupId> <artifactId>demo-project</artifactId> <version>1.0-SNAPSHOT</version> </project> ``` 在这种情况下,运行 `mvn clean install` 时,Maven 会尝试执行以下操作: 1. 清理目标目录(`clean` 阶段)。 2. 编译源代码(`compile` 阶段)。 3. 运行单元测试(`test` 阶段)。 4. 打包项目为 JAR 文件(`package` 阶段)。 5. 安装生成的 JAR 文件到本地仓库(`install` 阶段)。 由于未显式配置插件,Maven 将使用默认绑定的插件和目标来完成上述任务。如果项目结构不符合默认约定(如缺少 `src/main/java` 或 `src/test/java` 目录),可能会导致构建失败。 #### 解决方案 如果希望 Maven 项目在仅有生命周期的情况下正常工作,可以采取以下措施: 1. 确保项目结构符合 Maven 的标准目录布局。 2. 明确指定项目的打包类型(如 `<packaging>jar</packaging>`)。 3. 根据需要添加必要的依赖项,确保编译和测试能够顺利完成。 4. 在 `pom.xml` 中显式配置所需的插件及其目标,例如指定编译器版本[^3]。 ```xml <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> </build> ``` 通过以上配置,可以确保 Maven 在执行生命周期阶段时能够正确处理项目。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值