Maven学习笔记
Maven是概念
概念
Maven是一款服务于Java平台的自动化构建工具
构建
- 概念:从java源代码,jsp文件,图片,css,js文件开始生成一个可运行的软件包的过程。
- 步骤
- 清理
- 编译
- 测试
- 打包
- 安装
- 部署
2、Maven安装
下载
http://maven.apache.org/download.cgi
安装
- 插件依赖JAVA_HOME环境变量,需要配置
- 解压文件
- 配置maven环境变量
- 安装后使用 mvn -v查看是否安装成功。
3、创建一个maven项目
使用命令创建
mvn-Barchetype:generate-DarchetypeGroupId=org.apache.maven.archetypes-DgroupId=com.cc.maven -DartifactId=maven-helloword
IDEA集成maven
-
file->setting 搜索maven(或者直接查找Build Tools->maven)
-
按照自己的maven配置,图片为我的配置。
3.file->new->module->maven设置GroupId和AtifactId后下一步即可
maven编译项目
mvn package
maven打包项目
mvn package
maven常用命令
mvnclean:清理
mvncompile:编译主程序
mvntest-compile:编译测试程序
mvntest:执行测试
mvnpackage:打包
mvninstall:安装jar到本地仓库
POM
ProjectObjectModel(项目对象模型),将Java工程的相关信息封装为对象,作为便于操作和管理的模型。
Maven工程的核心配置。
仓库
- 仓库废物本地仓库、远程仓库、中央仓库、私服、仓库镜像
- 仓库中的文件
- Maven自身需要的插件
- 第三方框架或工具的jar包
- 我们自己开发的jar包
maven中的坐标
通过groupid,artifactid,version确定需要依赖的jar包
依赖
-
依赖是Maven中最关键的部分,我们使用Maven主要就是使用它的依赖管理功能
-
maven中使用dependencies包裹的dependency添加依赖
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.7.RELEASE</version>
</dependency>
</dependencies>
- 依赖的范围
- Compile(默认)
- 对主程序是否有效:有效
- 对测试程序是否有效:有效
- 是否参与打包:参与
- Test
- 对主程序是否有效:无效
- 对测试程序是否有效:有效
- 是否参与打包:不参与(junit)
- Provided
- 对主程序是否有效:有效
- 对测试程序是否有效:有效
- 是否参与打包:不参与
- 是否参与部署:不参与
- Compile(默认)
- 依赖的原则
- 路径最短者优先
- 路径相同则先声明者优先
- 统一的版本声明
<properties>
<spring.version>5.0.7.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
4、maven的生命周期
Clean生命周期(三个phase(阶段))
- pre-clean:执行一些需要在clean之前完成的准备工作
- clean:移除上一次构建生成的问题件
- post-clean:执行一些需要在clean之后需要完成的工作。
Site生命周期
- pre-site,
- site
- post-site
- site-deploy
5、Maven继承机制
为什么需要继承机制?
由于非compile范围的依赖信息是不能在“依赖链”中进行传递的,所以有需要的工程只能去单独去配置,如果项目
需要将各个模块的非comipie范围的依赖(junit)进行统一的版本管理,那么需要使用继承机制来将依赖信息统一
提取到父工程中进行统一管理。
使用步骤
- 建立父工程:跟普通的javamaven工程一样,只是打包方式需要设置为pom
- 添加依赖管理
- 在子工程中引入父工程
- 在子工程中添加依赖
- 子工程中依赖的版本信息不需要添加,统一在父工程管理。