构建的环节
- 清理:将以前编译得到的旧的class字节码文件删除
- 编译:将Java源程序编译成class字节码文件
- 测试:自动测试,自动调用junit程序
- 报告:测试程序执行的结果
- 打包:动态Web工程打成war包,Java工程打成jar包
- 安装:将打包得到的文件复制到仓库中指定位置
部署:将动态Web工程生成的war包复制到Servlet容器的指定目录下,使其可以自动化构建
安装Maven
检查确定环境变量“JAVA_HOME”没有错误
- 将Maven下载或解压至一个非中文无空格的目录下
- 配置Maven相关的环境变量
- MAVEN_HOME或M2_HOME
- PATH
- 验证Maven是否配置成功,使用命令“mvn -v”
- 在setting.xml中更改localRepository到除c盘的其他位置
- 在setting.xml中更改远程仓库
设置通过Maven创建的工程的JDK版本
- 打开settings.xml文件
- 找到profiles标签
- 加入如下配置
```
jdk-1.7 true 1.7
在编译器中设置Maven
Eclipse
找到工具栏window下的preference中的maven
- 在maven中分别设置Installations和User Settings
- 在Installations中add本机中的maven
在User Settings中将setting.xml改为本机所装的maven的setting.xml
Maven的核心概念
约定的目录结构
- POM
- 坐标
- 依赖
- 仓库
- 生命周期/插件/目标
- 继承
- 集合
Maven工程的目录结构
- 执行与构建过程相关的Maven命令必须进入pom.xml所在的目录
- 在编译时Maven仓库没有对应需要的包或插件会联网下载
- 在Maven的setting.xml中更改Maven仓库的位置
“
- mvn clean:清理(会删除target目录)
- mvn compile:编译主程序(生成target目录及class子目录)
- mvn test-compile:编译测试程序(生成target目录及test-class子目录)
- mvn test:执行测试
- mvn package:打包(生成一个报告文件夹以及一个jar包在target目录中)
- mvn install:将自己写的jar包安装到Maven仓库中(在自己写的Maven工程目录下执行)
- mvn site:生成站点
-
POM(Project Object Model)
pom.xml是Maven工程的核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置(相当于web.xml对于动态Web工程)
Maven中的坐标
使用下面三个值在Maven仓库中唯一定位一个Maven工程
groupid:公司或组织的域名倒序+项目名
<groupid>com.atguigu.maven</groupid>
- artifactid:模块名
<artifactid>Hello</artifactid>
- version:版本
<version>1.0.0</version>
Maven坐标与仓库中路径的对应关系:
<groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.0.0.RELEASE</version>org/springframework/spring-core/4.0.0.RELEASE/spring-core-4.0.0.RELEASE.jar
仓库
分类
- 本地仓库:当前电脑上部署的仓库目录
远程仓库
Maven自身需要的插件
- 第三方框架或工具的jar包
-
依赖
依赖的范围
compile范围依赖
- 是否对主程序有效(main):有效
- 是否对测试程序有效(test):有效
- 是否参与打包:参与
- test范围依赖(Junit)
- 是否对主程序有效(main):无效
- 是否对测试程序有效(test):有效
- 是否参与打包:不参与
provided范围依赖(servlet-api.jar)
- 是否对主程序有效(main):有效
- 是否对测试程序有效(test):有效
- 是否参与打包:不参与
- 是否参与部署:不参与
依赖的传递性
注意:非compile范围的依赖不会传递依赖的排除
依赖排除的设置方式 ```org.springframework spring-core 4.0.0.RELEASE coompile
```
依赖的原则
解决模块工程质检的jar包冲突原则
- 就近原则
- 相同距离,先声明者优先
统一管理依赖版本号(properties标签)
<properties><spring-version>4.0.0.RELEASE</spring-version></properties>//在dependency中使用<dependency><groupId></groupId><artifactId></artifactId><version>${spring-version}</version></dependency>
继承
需求情景:比如test范围的依赖不能传递,例如Junit各个工程使用的版本号可能不同,这时需要统一管理,则使用继承的方式。
操作步骤:
- 创建一个Maven工程作为父工程,打包方式为pom
在子工程中声明对父工程的引用
<parent><groupId></groupId><artifactId></artifactId><version></version>//以当前文件为基准的父工程pom.xml文件的相对路径<relativePath>../Parent/pom.xml</relativePath></parent>
将子工程的坐标中与父工程坐标中重复的内容删除
在父工程中统一管理Junit等依赖 ```
5. 在子工程中删除Junit依赖的版本号部分<a name="1IjYM"></a>### 聚合1. 作用:一键安装各个模块工程1. 配置方式:在一个总的聚合工程中配置 各个参与聚合的模块
<a name="QKB51"></a>### Web工程自动部署(即使用mvn deploy命令部署到服务器上)在pom.xml中设置:
<configuration></configuration></configuration>
```
