目录
1、什么是maven
maven是apache公司推出的一款项目自动化构建、管理工具
maven作用主要体现
1、通过一组命令对项目进行自动化构建、管理 2、它可以对项目中的依赖进行统一管理 3、通过它可以构建聚合项目(一个完整的工程有很多小模块构成,每一个小模块就是一个独立的应用)
2、如何配置maven
maven不需要安装,解压缩即可使用,但要注意需要与idea的版本配套使用 2021之前的idea----->3.5.2 2021.6月以后------->3.6.3
配置步骤
1、在本地计算机中创建目录。充当maven的本地仓库,用于管理所有的依赖与插件 2、将maven解压 3、修改maven文件中conf目录下的settings.xml文件,进行maven本地仓库的配置 a、修改本地仓库位置 <localRepository>F:/D118MavenFile/Maven</localRepository> //如果老马发了maven的包,就直接改这个位置 4、修改maven的中央仓库地址 如果使用某个依赖时,如果本地没有,maven会自动连接中央仓库进行下载,将maven仓库镜像改为阿里云 <!-- 阿里云中央仓库 --> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror> 5、在系统环境变量中配置Maven 6、测试maven是否完成 cmd---> mvn -v
3、Maven项目的基本结构
项目名称
src---------------------------它包含所有的代码及配置文件 main----------------------它主要是包含运行时的java代码及配置文件 java-------------------------它主要包含运行时的java源文件 resources--------------------它主要包含运行时的配置文件 test---------------------它主要是包含测试时的java代码及配置文件 java-------------------------它主要包含测试时的java源文件 resources--------------------它主要包含测试时的配置文件 pom.xml-----------------------它是Maven它是maven项目的核心配置文件,它 用于配置maven的各种依赖以及各种maven插件
4、maven命令
首先通过cmd进入当前项目所在目录
1、mvn compile 作用:将java源代码编译成字节码文件,生成target目录 (所有编译后的文件都会包含在该目录中) 2、mvn clean 作用:将编译后的target目录清除掉 3、mvn test 作用:运行src/test/java中的测试代码,并且生成测试报告 4、mvn package 作用:将项目打包(可以打包成war,jar) 5、mvn install 作用:将打好的jar安装到本地maven仓库中,其他项目就可以引用这些jar
注意事项
所有maven命令在第一次执行时,都需要联网下载命令相关的插件才能使用(下一次就好)
5、Maven中仓库的概念
Repository:仓库
作用:管理各种依赖(jar)
maven中的仓库主要有三种:
1、本地仓库 位置: 在当前计算机中的某一个目录中 作用:提供依赖给当前计算机中的所有项目使用 2、私服 位置: 一般是在公司的服务器中 作用:提供依赖给当前公司的所有开发者使用 3、中央仓库: 位置:在互联网上,由一些大的软件公司在维护 作用:给全世界的开发人员提供依赖
6、在idea中配置maven
全局配置
settings---->Build, Execution, Deployment-->Build Tools-->Maven 找到maven的安装目录 F:/D118MavenFile/mavenbao/apache-maven-3.5.2
2、在idea中创建maven项目时,需要根据maven的骨架生成maven项目结构, 默认情况下,maven会联网查找骨架生成maven项目结构 存在的问题: 1、创建项目就需要联网 2、如果每一次创建项目都联网生成骨架会特别慢 @@@所以,我们一般将maven配置成根据本地骨架生成maven的项目结构 配置步骤: 1、在网上下载maven的骨架配置文件 archetype-catalog.xml 2、将该文件放到maven的本地仓库的指定目录下: 注意:如果使用的是我的本地仓库,仓库中就已经包含有该方法 org\apache\maven\archetype\archetype-catalog\3.0.1目录 @@@ 注意,如果目录不存在,直接创建一个即可 3、在idea中配置如下代码: settings-->Build.execution,deploment-->build Tools--maven--Runner -DarchetypeCatalog=local //玛德 这前面的-也要带上就是因为掉了杠报错一上午
在idea中创建一个maven工程
idea搜索快捷键:ctrl+f
@@@@@@@@@创建基于maven的web工程 1、创建maven的web应用 选择骨架的快捷键: org.apache.maven.w 2、修改项目结构 main目录缺少java,resources可以自己新建 3、修改jsp 4、导入servlet-api的依赖才能创建servlet <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <!--指定依赖的有效范围--> <scope>provided</scope> </dependency> 5、创建servlet 6、编写页面显示结果 姓名是:${requestScope.name} ---------结果会显示表达式,并不会解析 @@@@@原因是因为:maven工程中,jsp页面会默认忽略掉el表达式不会进行解析 解决方案:在jsp页面的指令中配置如下代码即可 <%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %> 7、如果要使用标签库,也需要导包 standerd jstl
7、配置scope属性的作用
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <!--指定依赖的有效范围--> <scope>provided</scope> </dependency>
作用:它用于指定当前依赖在哪些范围中有效
scope的应用范围包含下列几种
如果不指定scope的范围,默认是compile
编译阶段 | 测试阶段 | 运行阶段 | 例子 | |
---|---|---|---|---|
compile | Y | Y | Y | spring-core |
provided | Y | Y | - | servlet-api |
test | - | Y | - | Junit |
runtime | - | Y | Y | JDBC驱动 |
system | Y | Y | - | 本地Maven仓库之外 |
tomcat目录中本身就包含有servlet-api这个依赖,但这个依赖只会在运行阶段才加载,编译阶段是不会加载的,为了让程序通过编译,所以我们需要导入servlet-api的依赖 但是如果将我们手动导入的依赖应用范围设为compile,它会在“编译阶段”,“测试阶段”,“运行阶段”都会使用这个依赖,而tomcat本身自带的servlet-api的依赖也会在运行阶段加载,此时就会导致冲突出错 为了解决这个问题:我们需要设置依赖仅在编译、测试阶段使用,运行阶段不使用
一般在Tomact中已经包含的依赖都要设置provided,来避免冲突