maven(项目管理工具)
- jar包
- 单元测试
- 打包命令
- 一件构建(编译--compile,测试--test,打包--package,安装--install,发布--deploy)
与传统方式的对比
-
传统:jar包在项目中,所占的磁盘空间很大
-
maven开发的jar包不在项目中(通过jar包的坐标(pom.xml中配置)寻找到jar包仓库),工程需要的jar包都可以从仓库中获取
-
maven对jar包的管理就很好的体现了代码可重用的思维
依赖管理:maven工程对jar包的管理过程
maven的安装
需要配置环境变量(在此之前,需要配置好JAVA_HOME,即java的环境变量的配置)
新建系统变量-->变量名:MAVEN_HOME;值:解压后maven的文件路径(不需要到bin)
在系统变量的PATH中新建:%MAVEN_HOME%\bin(注意是:'\')
检测maven安装成功
(win+R)输入cmd–>mvn -v(如果显示当前maven的版本即表明安装成功)
仓库中中的种类:本地仓库(local)、远程仓库(私服)–b2b、中央仓库(center)
- 本地仓库默认的在C盘(系统盘符)中
- 如果本地仓库中没有,则会联网去中央仓库(放置了几乎所有开源的jar包)中下载
- 远程仓库(私服)-->一般公司中会使用远程仓库(需要电脑和服务器在同一个局域网中),如果私服中没有所需要的jar包,则会从中央仓库中下载(或从本地上传)
- maven默认的本地仓库是C盘(系统盘符)往往资源非常有限,且寻找起来比较麻烦,所以建议重新配置本地仓库存放的位置
配置自定义的本地仓库
- 在maven目录下的conf中的settings.xml中配置(约53行的位置下进行配置)
<!--Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>E://maven//LocalWarehouse</localRepository>
maven标准目录结构
- src/main/java目录 核心代码部分
- src/main/resources 配置文件部分
- src/test/java目录 测试代码部分
- src/test/resources 测试配置文件部分
- src/main/webapp 页面资源,js,css图片等等
maven常用的命令(需要在命令行提示符中运行项目的目录)
1.clear--清除原始的target文件(编译后的文件),公司中拿到别人的项目时一般需要重新进行重新编译
2.complie--编译重新生成target文件
3.test--编译重新生成target文件且编译生成test的字节码文件
4.package--编译重新生成target文件且编译生成test的字节码文件,且对项目进行打包(.war)
5.install--编译重新生成target文件且编译生成test的字节码文件,且对项目进行打包(.war),并安装到本地仓库中
maven的生命周期
clean(清楚项目编译信息)-->compile-->test-->package-->install-->depoly
清理生命周期-->默认生命周期(后面的会把前面的都执行一遍)
POM项目对象模型(pom.xml)<–>依赖管理模型
POM包含的信息
项目自身信息
项目运行所以来的jar包信息
项目运行环境信息:比如jdk,tomcat信息
依赖管理模型(Dependency)
<dependency>
<groupId>公司组织的名称</groupId>
<artifactId>项目名</artifactId>
<version>版本号</version>
</dependency>
maven的两大功能;
1.依赖管理
2.一键构建
eclipse对maven的配置(windows–>Preferences)
选择配置好的settings.xml目录就好啦
在创建maven工程的时候可以跳过使用骨架
创建好之后会报错(因为eclipse不会自动配置好web.xml)
解决办法
maven工程servlet实例之jar包冲突
-
我们在写servlet的时候需要导入相应的jar包(pom中书写对应的坐标)
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> </dependency> </dependencies>
-
但是我们知道,在我们安装的tomcat文件夹下的lib中已经包含有servlet和jsp对应的jar包
-
所以使用tomcat的时候就会出现报错
-
故要在jsp和servlet中配置作用域(以致于在代码编写的时候不报错)
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
如果本地仓库中没有jar包
从中央仓库中获取对应的坐标(需要联网)(https://mvnrepository.com/)