本期内容
1、maven简介
2、如何使用
3、原理
4、解决的问题
本期内容必须联网,并且网络质量要很好
maven项目默认是没有tomcat依赖的
一、Maven简单介绍
Apache Maven是个项目管理和自动构建工具,基于项目对象模型(POM)的概念。
作用:完成项目的相关操作,如:编译,构造,单元测试,安装,网站生成和基于Maven部署项目
二、如何使用
(1、环境配置
配置方式与jdk配置是基本一致
①、解压
②、配置环境变量
Ⅰ、鼠标右键我的电脑 点开属性:
Ⅱ、 找到高级系统设置,选择环境变量
Ⅲ、新建系统变量MAVEN_HOME,变量值为解压文件后的路径,名没有bin的
Ⅳ、配置path,添加“%MAVEN_HOME%\bin;”
Ⅴ、测试:
按住win+R 出现弹窗 输入cmd 出现一个黑窗口 输入 mvn -version
结果如下就代表maven已经可以使用了
③、配置本地仓库及私有仓库
点击maven文件--》点击conf文件--》点击settings文件
将注释掉的locarepository最后一行copy出来,需要运行,为了在本地可以使用,
自己可以设置一个盘符,为本地仓库↓
设置私有仓库↓:
使用阿里云私服,镜像仓库
<mirror>
<id>alimaven</id>
<mirrorOf>central</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/content/groups/public/</url>
</mirror>
三、原理
当配置结束后
①、通过pom文件的坐标优先读取本地仓库的jar包,如果曾经下载过,那么直接自动导入到当前项目中用
②、如果本地仓库没有,那么就会到阿里云镜像服务器中去找开发需要的jar包,找到了自动下载到本地仓库,并且会引入到项目
③、如果阿里云镜像服务器没有,那么会到国外的maven中央仓库去下载,如果有直接下到本地仓库,并且引入项目使用
④、如果国外maven中央仓库都没有找到,那么肯定是代码问题,会报错
四、maven 的实际操作
目标:在maven中将服务跑动起来,意味着需要在maven项目中导入tomcat相关的jar依赖,
或者说servlet相关的依赖
(1、eclipse中使用maven
首先在eclipse进行配置
在window里点击perferences进行查找maven
在列表中点击installations,接着点击add进行添加
接下来配置用户:
选中User Setting…--》右边选择maven解压文件中的conf中的settings文件,完成
2、创建项目
new一个maven项目,选中Maven Project
接着next,在此过程中,根据以下选择,Internal意思是优先读取本地
next,填写项目名字
(3、项目报错
需要改配置,选中properties
选中project facets,将版本改成以下的
应用完后记得勾选,接着点击下面文件
名字记得与文件名一样,接着🆗与应用关闭就好了
改配置web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"><display-name>Archetype Created Web Application</display-name>
</web-app>
改配置jdbc,1.8版本
最后finish
最后刷新
(4、配置编译
在pom.xml文件中
接下来我们就建一个类DomeServlet
找依赖:
我们需要到中央控制器(https://mvnrepository.com/popular)去搜索,找到servlet api
点进去,我们这就用4.0.0的版本
将以下内容放入pom.xml文件中进行配置编译
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lv.com</groupId>
<artifactId>lv.maven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>lv.maven Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>lv.maven</finalName>
</build>
</project>
接下来我们类就有了servlet插件
可以用坐标的方式使用项目:
<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 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lv.com</groupId>
<artifactId>lv.maven</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>lv.maven Maven Webapp</name>
<url>http://maven.apache.org</url>
<!-- 定义版本号 -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.plugin.version>3.7.0</maven.compiler.plugin.version><!--添加jar包依赖-->
<!--mysql-->
<mysql.version>5.1.44</mysql.version>
<!--5.其他-->
<junit.version>4.12</junit.version>
<servlet.version>4.0.0</servlet.version>
<jackson.version>2.9.3</jackson.version>
<jstl.version>1.2</jstl.version>
<standard.version>1.1.2</standard.version>
<tomcat-jsp-api.version>8.0.47</tomcat-jsp-api.version>
<commons-beanutils.version>1.9.3</commons-beanutils.version>
<dom4j.version>1.6.1</dom4j.version>
<jaxen.version>1.1.6</jaxen.version>
</properties>
<!-- 使用jar包 -->
<dependencies>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version>${jaxen.version}</version>
</dependency><dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>${dom4j.version}</version>
</dependency>
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>${commons-beanutils.version}</version>
</dependency><!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency><dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency><dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
<scope>provided</scope>
</dependency><dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency><dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${standard.version}</version>
</dependency>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-jsp-api</artifactId>
<version>${tomcat-jsp-api.version}</version>
</dependency><dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
<scope>provided</scope>
</dependency><dependency>
<groupId>com.belerweb</groupId>
<artifactId>pinyin4j</artifactId>
<version>2.5.0</version>
</dependency><dependency>
<groupId>com.github.davidcarboni</groupId>
<artifactId>encrypted-file-upload</artifactId>
<version>2.1.0</version>
</dependency>
</dependencies>
<build>
<finalName>lv.maven</finalName>
</build>
</project>
就出现了这么多jar包:
五、解决的问题
不需要一个个的去找jar包
解决了jar包之间的冲突
本期内容结束~