Maven简介
- Maven 是一个项目管理和构建工具,将项目开发和管理抽象成一个项目对象模型(POM)
- 项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构 建、报告和文对象档。
传统项目需要寻找jar包并导入,不同人员之间jar包使用也不同,工程维护比较麻烦。因此maven提供了一种统一的项目开发结构,并提供了快捷的jar包管理
Maven模型
这是一个简单的maven项目结构(webapp是其那段所需,暂且可以不管),通过在pom.xml文件导入jar包,插件。
而pom.xml文件项目jar包导入也存在联系(依赖管理)
maven常用命令(代开文件按住shift+右击鼠标点击Powershell窗口可快速使用)
- compile :编译
- clean:清理
- test:测试
- package:打包
- install:安装
我们使用上面命令需要在磁盘上进入到项目的 pom.xml 目录下
mvn compile
依赖管理
依赖管理其实就是管理你项目所依赖的第三方资源(jar包、插件)。如之前我们项目中需要使用JDBC和Druid的话,就需要 去网上下载对应的依赖包(当前之前是老师已经下载好提供给大家了),复制到项目中,还要将jar包加入工作环境这一系列 的操作。
maven坐标
什么是坐标?
Maven 中的坐标是资源的唯一标识 使用坐标来定义项目或引入项目中需要的依赖
Maven 坐标主要组成
- groupId:定义当前Maven项目隶属组织名称(通常是域名反写,例如:com.itheima)
- artifactId:定义当前Maven项目名称(通常是模块名称,例如 order-service、goods-service)
- version:定义当前项目版本号
1.1依赖配置(导入依赖)也可以导入自己配制的依赖,只需要将属性进行名称添加
<!-- 设置当前项目所需依赖jar-->
<dependencies>
<!— 设置具体依赖-->
<dependency>
<!— 依赖所属集群id-->
<groupId>junit</groupId>
<!— 依赖所属项目id-->
<artifactId>junit</artifactId>
<!--依赖版本号 -->
<version>4.12</version>
</dependency>
</dependencies>
⚫
1.2依赖传递
- 依赖具有传递性:
- 直接依赖:当前项目通过依赖配置建立的依赖关系
- 间接依赖:如果被依赖资源如果依赖别的资源,则当前项目间接依赖其他资源
依赖冲突之间,路径优先(层越浅,优先级越高),路径相同声明优先,位置在前先依赖
特殊优先,在pom.xml文件下配置两个相同类型不同版本,后配置覆盖前配置
1.3依赖管理
- 可选依赖:是当前依赖不透明(不被他人查看)如
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> <!--optional默认为false,更改为true则不别别人查看--> <optional>true</optional> </dependency>
- 排除依赖:可以排除依赖主动断开以来资源
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> <exclusions> <exclusion> <groupId></groupId> <artifactId></artifactId> </exclusion> </exclusions> </dependency>
1.4依赖范围<scope>(compile test provide runtime)
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
1.5生命周期与插件
- 项目构建生命周期分为(每个周期又有许多周期)
- clean:清理工作
- default:核心工作如compile,install,package等
- site:产生报告,发布站点等。这套声明周期一般不会使用。
clean生命周期
- pre-clean 执行一些需要在clean之前完成的工作
- clean 移除所有上一次构建生成的文件
- post-clean 执行一些需要在clean之后立刻完成的工作
同一套生命周期内,执行后边的命令,前面的所有命令会自动执行。例如默认(default)生命周期如下
当我们执行 install (安装)命令时,它会先执行 compile 命令,再执行 test 命令,再执行 package 命令,最后执行 install 命令。
当我们执行 package (打包)命令时,它会先执行 compile 命令,再执行 test 命令,最后执行 package 命令。 默认的生命周期也有对应的很多命令,其他的一般都不会使用,我们只关注常用的:
default每一次执行都会将前面的周期一同执行
插件与生命周期进行关联,在执行到对应生命周期时执行对应插件功能
<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>
</goals>
<phase>generate-test-resources</phase>
</execution>
</executions>
</plugin>
</plugins>
</build