Maven
1.1 什么是 Maven
Maven 的正确发音是[?mev?n],而不是“马瘟”以及其他什么瘟。Maven 在美国是一个口语化的词
语,代表专家、内行的意思。
一个对 Maven 比较正式的定义是这么说的:Maven 是一个项目管理工具,它包含了一个项目对象模
型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管
理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标
(goal)的逻辑。
Maven 是项目管理工具 对软件项目提供构建与依赖管理
Maven是Apache下的Java开源项目
1.2Maven 核心特性
项目设置遵循统一的规则,保证不同开发环境的兼容性
强大的依赖管理,项目依赖组件自动下载、自动更新
可扩展的插件机制,使用简单,功能丰富
Maven 的依赖管理:传统工程jar包放在项目中,maven开发的工程根据jar的坐标找到jar仓库。
仓库检索网站https://search.maven.org/
项目的一键构建:我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。
Maven 的使用
1.官网下载:Maven – Download Apache Maven
下载第二个
2.解压到D盘
3.添加环境变量
变量名:MEVEN_HOME
变量值:D:\apache-maven-3.8.1
在Path中添加:%MANEN_HOME%\bin
确保环境变量中有JAVAHOME
4.打开命令行窗口 输入mvn -v
maven项目标准目录结构
src/main/java目录 | 核心代码 |
src/main/resources | 配置文件部分 |
src/test/java目录 | 测试代码部分,如 JUnit 测试类 |
src/test/resources | 测试配置文件,如 spring, hibernate 配置文件 |
src/main/webapp | 页面资源 ,js,css,图片等等 |
target | 项目输出的目录,用于存储jar,war文件 |
target/classes | 字节码(.class)的编译输出目录 |
pom.xml | maven 项目核心配置文件 |
Maven常用命令
命令 | 用途 |
mvn archetype:generate | 创建Maven工程结构 |
mvn compile | 编译源代码 |
mvn test | 执行测试用例 |
mvn clean | 清除产生的项目 |
mvn package | 项目打包 |
mvn install | 安装至本地仓库 |
1.clean
clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
2.compile
compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class 文件输出到 target
目录下。
3.test
test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。也会编译src/main/java的代码
4.package
package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web 工程打成 war
包。
5.install
install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war 包发布到本地仓库。会执行compile,test,package,把项目放在了本地仓库
Maven生命周期
Maven概念模型
项目对象模型 (Project Object Model)
一个 maven 工程都有一个 pom.xml 文件,通过 pom.xml 文件定义项目的坐标、项目依赖、项目信息、
插件目标等。
赖管理系统(Dependency Management System)
通过 maven 的依赖管理对项目所依赖的 jar 包进行统一管理。
比如:项目依赖 junit4.9,通过在 pom.xml 中定义 junit4.9 的依赖即使用 junit4.9,如下所示是 junit4.9
的依赖定义:
<!-- 依赖关系 -->
<dependencies>
<!-- 此项目运行使用 junit,所以此项目依赖 junit -->
<dependency>
<!-- junit 的项目名称 -->
<groupId>junit</groupId>
<!-- junit 的模块名称 -->
<artifactId>junit</artifactId>
<!-- junit 版本 -->
<version>4.9</version>
<!-- 依赖范围:单元测试时使用 junit -->
<scope>test</scope>
</dependency>
Maven坐标
GroupId:机构或者团体的英文,采用 逆向域名 形式书写
ArtifactId:项目名称 说明其用途,例如:cms,oa...
Version: 版本号,一般采用 版本+单词 形式 例如1.1.0.RELEASE
idea 开发 maven 项目
1 打开?File?Settings 配置 maven
在没网时会加载本地的
2 idea 中创建一个 maven 骨架的 Java工程
3 idea 中创建一个 maven 骨架的 web工程