①. Maven 简介
①. Maven概述
- ①. Maven是Apache软件基金会组织维护的一款自动化构建工具。主要有两个作用:
- maven工程对jar包的管理过程
- 项目的一键构建
-
②. maven工程对jar包的管理过程
-
③. 项目的一键构建
- 先来说说什么是构建?指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建
- 一键构建指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作
②. maven的安装
-
①. 确保安装了java环境:maven本身就是java写的,所以要求必须安装JDK。查看java环境变量:echo %JAVA_HOME%
-
③. 配置 Maven 的环境变量:
MAVEN_HOME=d:/apache-maven-3.3.9 或者 M2_HOME=d:/apache-maven-3.3.9
path=%MAVEN_HOME%/bin; 或者%M2_HOME%/bin;
- 1
- 2
- ④. 验证是否安装成功 mvn -v
③. 原生Maven演示:
- ①. 如果没有添加上junit测试的依赖,只要类名和方法名,类名和方法名是test开头的,maven约定会去执行,当我们在项目下执行mvn test,会发现如下的"coming…"进行了输出
- ②. 如果引入了junit测试,那么①的说明变了,我们会按照junit的测试来
②. Maven的核心概念
①. Maven目录结构
- ①. maven中约定的目录结构图解:
- ②. 各个目录结构详解:
Maven工程的目录结构
(1). src/main/java —— 存放项目的.java 文件
(2). src/main/resources —— 存放项目资源文件,如 spring, hibernate 配置文件
(3). src/test/java —— 存放所有单元测试.java 文件,如 JUnit 测试类
(4). src/test/resources —— 测试资源文件
(5). target —— 项目输出位置,编译后的 class 文件会输出到此目录
(6). pom.xml——maven 项目核心配置文件
注意:如果是普通的 java 项目,那么就没有 webapp 目录
②. pom.xml
-
①. modelVersion:Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0
-
②.
groupId:
组织id,一般是公司域名的倒写,格式可以为
- 域名倒写,例如 com.baidu
- 域名倒写+项目名,例如com.baidu.appolo
-
③.
artifactId:
项目名称,也是模块名称对应groupId中项目中的子项目 -
④.
version:
项目的版本号。如果项目还在开发中,是不稳定版本,通常在版本后带 -SNAPSHOT。version使用三位数字标识,例如1.1.0 -
⑤. name:项目的名称
-
⑥. packaging:项目打包的类型,可以使 jar、war、rar、ear、pom,默认是 jar(一般父工程设置为pom,子工程设置为jar),web项目是war包
-
⑦.
dependencies | dependency
:Maven 的一个重要作用就是管理jar包,为了一个项目可以构建或运行,项目中不可避免的,会依赖很多其他的jar包,在Maven中,这些 jar 就被称为依赖,使用标签dependency来配置。而这种依赖的配置正是通过坐标来定位的,由此我们也不难看出,maven 把所有的 jar包也都视为项目存在了 -
⑧.properties:是用来定义一些配置属性的,例如project.build.sourceEncoding(项目构建源码编码方式),可以设置为UTF-8,防止中文乱码,也可定义相关构建版本号,便于日后统一升级(配置属性)
<properties>
<!--源码编译jdk版本-->
<maven.compiler.source>1.8</maven.compiler.source>
<!--运行代码的jdk版本-->
<maven.compiler.target>1.8</maven.compiler.target>
<!--项目构建使用的编码,避免中文乱码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!--生成报告的编码-->
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
</properties>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
-
⑨.build:表示与构建相关的配置,例如设置编译插件的jdk版本(构建)
-
⑩.
parent:
在Maven中,如果多个模块都需要声明相同的配置,例如:groupId、version、有相同的依赖、或者相同的组件配置等,也有类似Java的继承机制,用parent声明要继承的父工程的pom配置(继承) -
⑩①.
modules:
在Maven的多模块开发中,为了统一构建整个项目的所有模块,可以提供一个额外的模块,该模块打包方式为pom,并且在其中使用modules聚合的其它模块,这样通过本模块就可以一键自动识别模块间的依赖关系来构建所有模块,叫Maven的聚合 -
⑩②. description:描述信息
-
⑩③. relativePath
- 父项目的pom.xml文件的相对路径。默认值为…/pom.xml。maven首先从当前构建项目开始查找父项目的pom文件,然后从本地仓库,最有从远程仓库。RelativePath允许你选择一个不同的位置
- 如果默认…/pom.xml没找到父元素的pom,不配置relativePath指向父项目的pom则会报错
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0--> <modelVersion>4.0.0</modelVersion> <!--groupId、artifactId、version三个元素生成了一个Maven项目的基本坐标, 在众多的maven项目中可以唯一定位到某一个项目。 坐标也决定着将来项目在仓库中的路径及名称 --> <groupId>com.atguigu.gulimall</groupId> <artifactId>gulimall</artifactId> <version>0.0.1-SNAPSHOT</version> <!--名称--> <name>gulimall</name> <!--描述--> <description>聚合</description> <!--打包--> <packaging>pom</packaging>
<span class="token comment"><!--模块--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>modules</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>gulimall-member<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>gulimall-order<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>gulimall-coupon<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>gulimall-ware<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>gulimall-product<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>renren-fast<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>renren-generator<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>gulimall-common<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>module</span><span class="token punctuation">></span></span>gulimall-gateway<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>module</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>modules</span><span class="token punctuation">></span></span> <span class="token comment"><!--插件--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>build</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>plugins</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>plugin</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>groupId</span><span class="token punctuation">></span></span>org.springframework.boot<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>artifactId</span><span class="token punctuation">></span></span>spring-boot-maven-plugin<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>configuration</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>fork</span><span class="token punctuation">></span></span>true<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>fork</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>addResources</span><span class="token punctuation">></span></span>true<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>addResources</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>configuration</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>plugin</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>plugins</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>build</span><span class="token punctuation">></span></span>
</project>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--Maven模型的版本,对于Maven2和Maven3来说,它只能是4.0.0--> <modelVersion>4.0.0</modelVersion> <!--父工程的坐标--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.8.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <!--公司名或组织名的域名倒序--> <groupId>com.atguigu.gulimall</groupId> <!--模块名--> <artifactId>gulimall-order</artifactId> <!--版本号--> <version>0.0.1-SNAPSHOT</version> <!--名称--> <name>gulimall-order</name> <!--描述--> <description>谷粒商城-订单服务</description>
<span class="token comment"><!--配置信息--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>properties</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>java.version</span><span class="token punctuation">></span></span>1.8<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>java.version</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>spring-cloud.version</span><span class="token punctuation">></span></span>Greenwich.SR3<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>spring-cloud.version</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>properties</span><span class="token punctuation">></span></span> <span class="token comment"><!--依赖--></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>dependencies</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>groupId</span><span class="token punctuation">></span></span>com.atguigu.gulimall<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>artifactId</span><span class="token punctuation">></span></span>gulimall-common<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>version</span><span class="token punctuation">></span></span>0.0.1-SNAPSHOT<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>version</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>groupId</span><span class="token punctuation">></span></span>org.springframework.boot<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>artifactId</span><span class="token punctuation">></span></span>spring-boot-starter-web<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>groupId</span><span class="token punctuation">></span></span>org.springframework.cloud<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>artifactId</span><span class="token punctuation">></span></span>spring-cloud-starter-openfeign<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>groupId</span><span class="token punctuation">></span></span>org.springframework.boot<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>groupId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>artifactId</span><span class="token punctuation">></span></span>spring-boot-starter-test<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>artifactId</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span>scope</span><span class="token punctuation">></span></span>test<span class="token tag"><span class="token tag"><span class="token punctuation"></</span>scope</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>dependency</span><span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span>dependencies</span><span class="token punctuation">></span></span>
</project>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
③. 仓库repository
- ①. 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包,优先从本地仓库查找
说明:
默认本地仓库位置在u s e r . d i r / . m 2 / r e p o s i t o r y , {user.dir}/.m2/repository, </span><span class="katex-html"><span class="base"><span class="strut" style="height: 1em; vertical-align: -0.25em;"></span><span class="mord"><span class="mord mathdefault">u</span><span class="mord mathdefault">s</span><span class="mord mathdefault">e</span><span style="margin-right: 0.02778em;" class="mord mathdefault">r</span><span class="mord">.</span><span class="mord mathdefault">d</span><span class="mord mathdefault">i</span><span style="margin-right: 0.02778em;" class="mord mathdefault">r</span></span><span class="mord">/</span><span class="mord">.</span><span class="mord mathdefault">m</span><span class="mord">2</span><span class="mord">/</span><span style="margin-right: 0.02778em;" class="mord mathdefault">r</span><span class="mord mathdefault">e</span><span class="mord mathdefault">p</span><span class="mord mathdefault">o</span><span class="mord mathdefault">s</span><span class="mord mathdefault">i</span><span class="mord mathdefault">t</span><span class="mord mathdefault">o</span><span style="margin-right: 0.02778em;" class="mord mathdefault">r</span><span style="margin-right: 0.03588em;" class="mord mathdefault">y</span><span class="mord cjk_fallback">,</span></span></span></span></span>{user.dir}表示 windows 用户目录。<br> <img src="https://img-blog.csdnimg.cn/20190902144607448.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RaODQ1MTk1NDg1,size_16,color_FFFFFF,t_70" alt="在这里插入图片描述"><img src="https://img-blog.csdnimg.cn/20190902144845836.png" alt="在这里插入图片描述"></p>
- ②. 远程仓库
- 中央仓库:在maven软件中内置一个远程仓库地址http://repo1.maven.org/maven2,它是中央仓库,服务于整个互联网,它是由Maven团队自己维护,里面存储了非常全的jar包,它包含了世界上大部分流行的开源项目构件
- 私服:在局域网环境中部署的服务器,为当前局域网范围内的所有Maven工程服务。公司中常常使
- 中央仓库的镜像:架设在不同位置,欧洲,美洲,亚洲等每个洲都有若干的服务器,为中央仓库分担流量。减轻中央仓库的访问,下载的压力。所在洲的用户首先访问的是本洲的镜像服务器
④. Maven的生命周期
- ①. maven 对项目构建过程分为三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,这三套生命周期分别是:
- Clean Lifecycle 在进行真正的构建之前进行一些清理工作
- Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等
- Site Lifecycle 生成项目报告,站点,发布站点
- ②.对于我们程序员而言,无论我们要进行哪个阶段的构建,直接执行相应的命令即可,无需担心它前边阶段是否构建,Maven都会自动构建。这也就是Maven这种自动化构建工具给我们带来的好处
⑤. Maven常用命令
-
①. mvn clean:将target目录删除,但是已经 install 到仓库里的包不会删除
-
②. mvn compile:编译(执行的是主程序下的代码)
-
③. mvn test:测试(不仅仅编译了src/main/java下的代码,也编译了java/test/java下的代码)
-
④. mvn package:打包(执行的时候回打成war包,编译了src/main/java下的代码,也编译了java/test/java下的代码)
-
⑤. mvn install:安装(执行的时候回打成war包,编译了src/main/java下的代码,也编译了java/test/java下的代码,将这个包安装到了本地仓库中)
-
⑥. mvn deploy:部署(需要配置才能执行)
注意:
运行Maven命令时一定要进入pom.xml文件所在的目录!
⑥. 插件plugings
什么是插件?
maven提供的功能,用来执行清理、编译、测试、报告、打包的程序
-
①. clean插件
maven-clean-plugin:2.5
clean阶段是独立的一个阶段,功能就是清除工程目前下的target目录 -
②. resources插件
maven-resources-plugin:2.6
resource插件的功能就是把项目需要的配置文件拷贝到指定的目当,默认是拷贝src\main\resources目录下的件到classes目录下 -
③. compile插件
maven-compiler-plugin
compile插件执行时先调用resouces插件,功能就是把src\mainjava源码编译成字节码生成class文件,并把编译好的class文件输出到target\classes目录下 -
④. test测试插件
单元测试所用的compile和resources插件和主代码是相同的,但执行的目标不行,目标testCompile和testResources是把src\test\java下的代码编译成字节码输出到target\test-classes,同时把src\test\resources下的配置文件拷贝到target\test-classes -
⑤. package打包插件
maven-jar-plugin
这个插件是把class文件、配置文件打成一个jar(war或其它格式)包 -
⑥. deploy发布插件
maven-install-plugin
发布插件的功能就是把构建好的artifact部署到本地仓库,还有一个deploy插件是将构建好的artifact部署到远程仓库
⑦. 坐标gav
-
①.Maven把任何一个插件都作为仓库中的一个项目进行管理,用一组(三个)向量组成的坐标来表示。坐标在仓库中可以唯一定位一个Maven项目
-
②.groupId:组织名,通常是公司或组织域名倒序+项目名
-
③.artifactId:模块名,通常是工程名
-
④.version:版本号
(需要特别指出的是,项目在仓库中的位置是由坐标来决定的:groupId、artifactId和version决定项目在仓库中
的路径,artifactId和version决定jar包的名称)
⑧. 依赖dependency
-
①. 一个Maven项目正常运行需要其它项目的支持,Maven会根据坐标自动到本地仓库中进行查找。对于程序员自己的Maven项目需要进行安装,才能保存到仓库中
-
②. 不用maven的时候所有的jar都不是你的,需要去各个地方下载拷贝,用了maven所有的jar包都是你的,想要谁,叫谁的名字就行。maven帮你下载
⑨. maven概念模型图
③. Idea相关配置
①. idea集成maven插件 掌握
- ①.idea中maven配置(全局setting),找打configure下的settings
- ②. 找到Maven将对应的改成本地仓库中的地址
-
③. -DarchetypeCatalog=internal
这个参数的意思是:
如果我们使用maven为我们提供好的骨架来创建maven工程,一般是要联网的.
为了在不联网的情况下我们可以正常创建工程,配了这样一个参数,只要我们之前联网下载过之前相关创建工程的插件,它就会从本地仓库找到对应插件,而不会联网下载
-
④. 局部setting
②. 使用骨架创建maven的java工程
- ①. 选择创建一个新工程
- ②. 选择骨架构成
③. idea 中创建一个maven的web工程
- ①. 打开 idea,选择创建一个新工程
- ②. 选择 idea 提供好的 maven 的web 工程模板
- ③.这个窗口基本上不用修改什么,但是这样会比较慢,有时候如果网速不好,就会卡的比较久,这是因为maven这个骨架会从远程仓库加载archetype元数据,但是archetype又比较多,所以比较卡,这时候可以加个属性archetypeCatelog=internal,表示仅使用内部元数据:
- ④. 点击 Finish 后开始创建工程,耐心等待,直到出现如下界面。
- ⑤. 手动添加 src/main/java 目录,如下图右键 main 文件夹NewDirectory
- ⑥. 创建一个新的文件夹命名为java
- ⑦. 点击 OK 后,在新的文件夹 java 上右键Make Directory as Sources Root
④. 创建一个maven的web工程(不用骨架)
- ①. 点击new,点击project
-
②. 点击maven
-
③. 点击next后,填写对应的信息,一直next
-
④. 创建后页面如下
-
⑤. 添加webapp - -WEB-INF - - web.xml
⑤. Servlet冲突问题
- ①. 创建一个 Servlet(有jar包冲突问题发生)、直接打开hello_maven工程的pom.xml文件,再添加坐标
- ②. 解决jar包冲突问题
出现的原因是:pom.xml中导入的jar包和maven自带的tomcat中的jar包发生了冲突
<!--放置的都是项目所要依赖的jar包-->
<!--provided的意思是编译时使用它,运行时不使用-->
<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>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
⑥. tomcat插件和jdk插件
- ①. 点击setting,进行一系列的配置
- ②. 只需要打tomcat7和jdk会自动出来提示
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8888</port>
</configuration>
</plugin>
<!--jdk插件-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<target>1.8</target>
<source>1.8</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
⑦. maven 工程运行调试
- ①. 端口占用处理
问题:
重新执行 tomcat:run 命令重启工程,重启之前需手动停止 tomcat,否则报下边的错误:
- ②. 断点调试:点击如图所示选项
- ③. 在弹出窗口中填写如下信息
- ④. 如上图红框选中的两个按钮,左侧是正常启动,右侧是 debug 启动
⑧. tomcat配置
-
①. 点击右上角下拉框,选择Edit Configurations,编辑配置
-
②. 添加tomcat的配置
-
③. 配置tocat服务器,命名,选择tomcat版本,等想配置的信息;最关键的是需要将项目部署出去,可以直接击fix
-
④. 选择war explored,开发阶段我们都选择这个
-
⑤. 当然也可以手动选择要部署出去的项目,特别是有多个项目的情况
-
⑥. 配置项目结构,特别是要注意依赖的包需要部署到WEB-INF的lib目录下
-
⑦. 这步可以点击这里:点击这里以后你运行tomcat后jsp页面修改可以不用重新运行
-
⑧. 配置项目结构,特别是要注意依赖的包需要部署到WEB-INF的lib目录下
-
⑨. 运行后可以得到如下的结果
- ⑩. war和war exploded的区别
-
war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布
-
war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式
-
在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来
⑨. IDEA中导入Maven工程(module)
-
①. 新建一个空的project作为工作空间
-
②. 在项目结构中导入或移除 module
-
③. 选择要导入的Module:
-
④. 选择导入方式
-
⑤. 选择要导入的项目
-
⑥. 设置导入module所使用的JDK
-
⑦. 导入后项目结构
-
⑧. 导入后视图
⑩. 修改目录结构
- ①. maven有一个很重要的功能是规范项目,标准的项目结构如下所示
- ②. 但是你会发现默认创建的项并非是完整的,如写源代码的目录没有,添加方法如下:
当前项目结构如下:
- ③. 添加相应的目录,选择打开项目结构:
蓝色:源代码
绿色:测试
资源文件(配置信息)
测试资源文件
被排除的(打包时被忽视)
- 1
- 2
- 3
- 4
- 5
- ④. 目标位置右键添加目录