Maven是什么
项目管理工具,包含了一个项目对象模型(POM Project Object Model)
Maven能解决什么问题
1.jar包冲突
2.Java文件编译成二进制class字节码文件
3.提示代码错误,减少bug
4.打包
Maven优势
核心功能:
1.依赖管理,就是Maven对jar包的管理过程。
传统的web工程开发的CRM项目编译后占据内存很大,jar包在项目中。
Maven开发的项目jar包不在项目中,而是在jar包仓库中,通过jar包坐标引用。Maven节省了磁盘空间,满足了代码可重用的要求。
2.一键构建
项目都会经过编译、测试、运行、打包、安装、部署等一系列过程。
这些过程都交给Maven进行,就是一键构建。
jar包坐标放在pom.xml中
复制Maven项目路径DOS窗口打开后执行Maven命令
mvn tomcat:run 项目直接运行起来了
Maven安装
配置maven
自动化构建工具
Make》Ant》Maven》Gradle
清理
编译
测试
报告
打包
部署
自己配置maven
点击下载maven.后解压到指定目录下,配置环境变量。
注意:Win10系统mvn -version命令不是内部命令 也不是可运行的程序,可以简单粗暴删除MAVEN_HOME,直接在Path中加入bin路径(如D:\NEW\apache-maven-3.6.3\bin)。
IDEA配置:
配置这个参数后即使断网也可以创建maven项目
settings.xml可以配置:例如仓库地址等。
如果本地仓库没有会去中央仓库下载,公司可以自己创建远程仓库(私服),就可以通过局域网到私服下载。
修改pom.xml后实时下载,源码和说明文档不用自动下载,分配内存基本不用改动。
Maven标准目录结构
项目可以分为:
- 核心代码部分
- 配置文件部分
- 测试代码部分
- 测试配置文件
Maven项目标准目录结构
src/main/java目录:核心代码部分
src/main/resources目录:配置文件部分
src/test/java目录:测试代码部分
src/test/resources目录:测试配置文件
src/main/webapp 页面资源,js,css,图片等(如果是JavaWeb项目)
常用命令
mvn clean: 删除target目录
mvn compile:编译
mvn test:测试,test和正式的都会重新编译
mvn package:打包,打出来的包放在target下,pom.xml下package标签指定类型。
mvn install:正式测试都编译,打包后会把包放到本地仓库。
mvn deploy:发布
Maven生命周期
默认生命周期
编译compile》测试test》打包package》安装install》发布deploy
越往后面执行命令时,前面会重新执行一遍。
清理生命周期
清理clean
站点生命周期
实际开发用的不多
双击执行命令,生命周期外的命令可以按图示操作:
概念模型图
项目对象模型:项目自身信息
项目运行依赖的jar包信息
项目运行环境信息,比如jdk、Tomcat
依赖管理模型
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
三个最基本信息公司组织名称,项目名,版本号
默认生命周期:compile,test,package,install,deploy
每个构建项目命令对应Maven底层的一个插件
IDEA集成Maven
前期:已经安装好Maven工具,配置完成。
new project,如果使用骨架可以按图示勾选,然后继续选择下面的,例如quickstart
如果main下没有resource文件夹,可以自己创建然后:
推荐不使用骨架
创建web工程
main上创建Java文件夹,然后右键mark as source root即可。
IDEA各文件夹放置文件要求非常严格
解决jar包冲突
Maven JAR包冲突问题排查及解决方案(重点)
加上scope限定作用域
编译时不起作用
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
只在测试时起作用
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
maven工程运行环境修改
可以用mvn 命令直接运行tomcat7:run
学习整理于Maven基础篇(IDEA版)
.