什么是Maven
1.简介:
maven翻译为:专家,内行。
maven是一个项目管理构建工具。专门用于管理项目构建、依赖管理。
主要两个功能:
- 1.项目构建
帮助项目做很多事情,测试,命令等,IDEA已经整合了 - 2.依赖管理(重点)
希望通过配置的方式来导入依赖,而不是通过手动导包的方式。
1.1项目构建
- 传统方法
- maven方法
将项目构建的过程进行标准化,每个阶段使用一个命令完成。
- 1.命令介绍
- dean:
- compile:
- package:
- 2.构建优点:
1.2依赖管理
- 什么是依赖?说白了就是jar包,第三方jar包。
- 什么是依赖管理?
1.2.1 传统项目的依赖管理
- 手工拷贝jar包添加到工程中的问题:
- 1.jar包版本冲突
- 2.从网上找jar包,非常不方便。
- 3.jar包添加到工程中导致工程过大。
1.2.2 使用maven的依赖管理
- 使用maven的好处:
- 1.通过pom.xml文件对jar包的版本进行统一管理,可避免版本冲突。
- 2.maven团队维护了一个非常全的maven仓库(中央仓库),
- 3.一步构建:通过一个命令完成构建过程。
- 4.可以跨平台
- 5.maven有利于大型团队的开发效率,降低项目的维护成本。
其他的一些构建工具
MK
Gradle——Interj IDE
2.下载
maven.apache.org/download.cpi
解压后的文件目录。bin/conf/lib/….
- 配置环境变量:MAVEN_HOME和path
3.maven仓库
网址:mvnrepository.com(jar包下载的网址)
在电脑上配置maven本地仓库,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
文件路径C:\Users\用户.m2下面,
配置远程仓库
那么每次从哪里找?配置文件中有一个默认的位置:conf/settings.xml中有一个<LocalRepository>
每次会先从这个路径找jar包依赖。中央仓库:
国内maven镜像:阿里云和开源中国都有。
在settings.xml中有个<mirror>
标签,可以在里面配置镜像url。
4.手动使用
project 目录(必须掌握):
·src
- main
- java:存放java文件
- resources :存在资源,入spring,hibernate配置文件等
- webapp:web项目的webroot文件夹,存放网页资源(jsp/css等)
- test
- java:存放测试文件
- resources:测试资源文件
· target:
目标文件输出位置,
· pom.xml:
maven项目核心配置文件:pom.xml中的配置
<!-- 固定的版本 -->
<modelVersion>4.0.0</>
<!--组织名称,一般为包名-->
<groupId>
<!--项目名称,project-->
<artifactId>xxx</>
<!--项目版本号 当前项目版本号,第一个数字:大版本;第二个数字,当前大版本下的一个小版本;第三个数字:常规更新、修复bug-->
<version>0.0.1</>
<!-- 依 赖 -->
<dependencies>
<dependency>
复制官网的代码即可
</>
</>
Maven命令的执行:
在DOM窗口: mvc conpile
main下的java文件:会在target目录下自动创建一个classes文件夹。会把java文件自动编译 成 .class字节码文件,还有其他资源配置文件(src/resource下)。一并放入classes中。
test:下的文件:test文件下的不会编译成字节码文件。
在DOM窗口:mvc clean
会把输出的文件全部删除。
在DOM窗口:mvc test
会在target目录下生成:
- test-classes,将test目录下的文件编译后放入其中(还有src/resource下的资源文件)。
- surfire-reports:
- surfire:
在DOM窗口 : mvc package
完成打包操作,会在taget目录下生成一个包(可以是war也可以是jar包)
自动运行 编译 / 测试 之后,都通过,才会打包成功。(打包的方式,需要在pom.xml中增加配置:<packaging>war 或者 jar</>
)(war包需要web.xml,否则会报错)
所以正确的操作是:/src/main/webapp/web.xml和WEB-INF,然后再使用命令:mvn package,就会生成war包和相应的资源。
在DOM窗口:mvn install
放入仓库
在DOM窗口:clean compile
先清理再编译
在DOM窗口:clean test
先清理,再测试。
依赖的作用范围:
在官网上找示例:
<>
</>
1、compile:编译范围
指A在编译时依赖B,此范围是默认依赖范围。
2、provided:编译时需要,运行时不需要。
比如servlet api 是tomcat容器提供。provided依赖只有
3、runtime:在运行和测试的时候需要,但在编译时不需要
比如jdbc驱动,运行时才会加载这个驱动。
4、test:在编译和运行时都不需要,只有在测试编译和测试运行阶段可用
比如junit测试框架。
5.综合IDEA使用
- 新建project的时候选择maven
- 填写groupId/artifactId
只需要在pom.xml中配置几个核心基础包即可:因为其他的依赖包都会根据核心包的依赖树,来自动寻找。
1.spring web mvc
2.mybatis
3.mybatis对spring的支持
4.数据库连接的依赖:DBCP或者c3p0
5..spring tx/jdbc/test
pom.xml中:
<!-- 先整合Sping和Springmvc -->
<!--再整合Mybatis-->
Maven的聚合工程
建一个项目,然后 再新建一个modelu,然后选择parent项目。
一般父项目不编写代码,只是将子项目聚合在一起,所以父项目可以只配置环境,子项目中会继承父项目的pom.xml文件,子项目中就不需要导入各种依赖了。