Maven详细教学

一、Maven简介

maven:是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的
依赖管理:就是对jar包的统一管理 可以节省空间
项目一键构建:mvn tomcat:run该代码可以将一个完整的项目运行起来,实现编码 编译 测试(junit) 运行 打包 部署。
好处:
①节省空间,对jar包进行了统一管理,依赖管理
②一键构造
③可跨平台
④应用在大型项目可提高开发效率

二、Maven环境变量配置:

1,我的电脑—>右击属性在这里插入图片描述

2,找到高级系统设置
在这里插入图片描述
3,点击 环境变量
在这里插入图片描述
4,新建 系统变量
在这里插入图片描述
6,需要填的内容为(直接复制粘贴即可,第二个变量值以maven的具体路径为主):

MAVEN_HOME
E:\maven\apache-maven-3.3.9

在这里插入图片描述
maven的具体路径如题所示,到bin这层即可。
在这里插入图片描述
8,找到Path–>编辑–>在最后面加入下面内容,记得前后都有隔开、最后点击确定即可。
;%MAVEN_HOME%\bin;
在这里插入图片描述
9,检验,win+R—>cmd—>mvn -v
若出现以下信息表示安装成功。
在这里插入图片描述

三、引入仓库(若没有,则输入命令的时候需要从互联网上下载,比较麻烦,慢)

maven有三种仓库:
本地仓库(自己维护)、远程仓库(公司维护)、中央仓库(maven团队维护)。
本地仓库的配置只需要修改setting.xml文件即可

将已下载好的东西放到如下位置,该文件里面有所有maven所需要用到的东西
在这里插入图片描述
找到maven–>conf–>setting.xml文件
在这里插入图片描述
需要找到该仓库的位置
在这里插入图片描述
找到setting.xml文件,更改需要查找配置文件的位置,保存一下即可
在这里插入图片描述
运行一个简单的java文件试验一下:
输入命令:mvn tomcat:run
出现以下信息表示运行成功
在这里插入图片描述

四、maven的目录结构

其中pom.xml文件是整个maven项目的核心文件
而setting.xml文件是maven软件的核心文件

在这里插入图片描述

五、maven命令的生命周期

1,maven常用命令:

初始maven文件在这里插入图片描述

mvn tomcat:run 运行maven项目,一键启动

会生成一个target文件夹,该文件夹就是所谓编译之后的文件
运行之后结果如下:在这里插入图片描述

mvn clean 清理编译文件

即,将target文件夹给清除掉
运行结果如下:
在这里插入图片描述

mvn compile 编译主目录src下的java代码

也会生成target文件夹,但是该命令还会将主目录src下的java文件给编译生成.class文件

mvn test 编译并运行了test目录的代码

也会生成target文件夹,但是该命令还会将测试目录test下的java文件给编译生成.class文件

mvn package 打包

运行结果如下:
在这里插入图片描述

mvn install 把项目发布到本地仓库中

即生成war包放到本地仓库中去
运行结果如图所示:
在这里插入图片描述

mvn site 在target目录下,生成site文件夹,里面主要是静态页面
mvn compile 把项目发布到私服上,让其他开发人员与项目共享

compile test package install deploy
例如:当执行test命令时,会自动将compile命令给执行
也就是执行后面的命令,前面的命令也就自动执行
这也就是maven的生命周期

maven的三个生命周期

clean生命周期(clean)
default生命周期(compile test package install)
site生命周期(site)

不同的生命周期的命令可以同时执行
例如:mvn clean package

六 、maven在eclipse中的一些配置

eclipse要用到MARS.2版本
M2e插件:但凡在eclipse上安装的插件都叫M2e插件

更换浏览视图在这里插入图片描述

配置编码环境

在这里插入图片描述

在这里插入图片描述

maven插件的配置

①选择自己的maven软件版本3.3.9

在这里插入图片描述

②修改默认的本地仓库

在这里插入图片描述

创建索引(才能手动添加依赖)

打开maven仓库视图
在这里插入图片描述
在这里插入图片描述

重建索引,右击在这里插入图片描述
如图所示,前面出现小三角表示重建索引成功
在这里插入图片描述

七、创建maven项目

①,新建maven项目
在这里插入图片描述
②,勾选该复选框,跳过骨架选择在这里插入图片描述
③、创建maven工程在这里插入图片描述
④、解决红色感叹号问题
在这里插入图片描述
⑤、(每次创建maven项目都需要自己手动创建)自己手动在src-main-webapp下创建一个WEB-INF文件夹,在该文件夹下随便添加一个web.xml文件即可
在这里插入图片描述
⑥,处理编译版本
有图可知,该版本为1.5,但开发要用到1.8的版本
在这里插入图片描述
添加如下代码到pom.xml文件中,保存一下,即可看见版本变为1.8

	<build><!-- 配置了很多插件 --><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.5.1</version>  <configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>

此时仍会报错,这时需要更新一下maven项目
在这里插入图片描述
最后点一下OK即可
在这里插入图片描述
然后就会发现maven项目下红色感叹号消失了

八、在src/main/java文件夹下创建一个servlet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建完servlet之后会发现有一大堆报错!!!

在这里插入图片描述
①、当创建servlet的时候,编译器会自动将web.xml做一些修改,把头部信息,从而导致信息重复,去掉一个,保存一下即可。
删除代码:xmlns="http://java.sun.com/xml/ns/javaee"
在这里插入图片描述
②.
依赖传递:也就是当你添加一个依赖的时候,若该依赖依赖其他jar包,添加该依赖的时候会直接添加其所依赖的所有的依赖jar包。
方法一:自动添加依赖:
servlet没有导包,需要推荐依赖(jsp所需的一些api)
pom.xml下添加如下代码即可

	<!-- 添加servlet-api,jsp-api --><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</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</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency></dependencies>

同时编译器会自动从本地仓库导入相关jar包
在这里插入图片描述
方法二:手动添加依赖
在这里插入图片描述
①添加jsp依赖
在这里插入图片描述
拓展:可知有五个Scope,也就是依赖范围!!!详细介绍往后翻阅拓展部分
在这里插入图片描述

jsp依赖添加成功观察pom.xml上生成一些代码,也就是jsp-api的依赖
在这里插入图片描述
②添加servlet依赖
在这里插入图片描述
同样,添加依赖之后也会在pom.xml中自动生成一些依赖代码
在这里插入图片描述
③添加junit依赖
在这里插入图片描述
同样,pom.xml文件会多出一些依赖代码,但是这个比较特殊
在这里插入图片描述

九、在eclipse上运行maven项目

在这里插入图片描述

在这里插入图片描述

观察控制台在这里插入图片描述
从web.xml上找到servlet的路径
在这里插入图片描述
在这里插入图片描述

访问即可在这里插入图片描述

案例需求:整合struts2,页面上传一个客户id,跳转页面

①,需要跳转页面,做一个简单的jsp

需要依赖jsp-api、junit、servlet详细依赖配置向上翻阅

由于需要整合struts2,所以需要依赖struts2-core,同样的方法,添加依赖
在这里插入图片描述

在这里插入图片描述

②,在src/main/java文件夹下创建一个Class

在这里插入图片描述

package beyondsq;import com.opensymphony.xwork2.ActionSupport;public class CustomerAction extends ActionSupport {private Long custId;public Long getCustId() {return custId;}public void setCustId(Long custId) {this.custId = custId;}public String findCustomerById(){System.out.println("前端正在登录的客户id为:"+ custId);return SUCCESS;}
}
③、由于需要页面的跳转,需要用到struts的核心配置文件,struts.xml拷到src/main/resources文件夹下

在这里插入图片描述
这里的配置文件有所限制,必须是.action结尾的

struts.xml内容如下:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><!-- 配置常量 --><!-- 字符集 --><constant name="struts.i18n.encoding" value="UTF-8"></constant><!-- 开发模式 --><constant name="struts.devMode" value="true"></constant><!-- 主题 --><constant name="struts.ui.theme" value="simple"></constant><!-- 扩展名 --><constant name="struts.action.extension" value="action"></constant><!-- 通用package --><package name="customer" namespace="/" extends="struts-default"><action name="findById" class="beyondsq.CustomerAction" method="findCustomerById"><result name="success">/sq.jsp</result></action></package>
</struts>
④、由于用到strut2,需要对web.xml配置过滤器

在这里插入图片描述

web.xml文件代码如下:<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"id="WebApp_ID" version="2.5"><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list></web-app>
⑤、由于使用tomcat:run运行的时候,是用tomcat容器运行该项目, 虽然maven就是一个插件,但是tomcat所需要的东西,maven插件里面都有。例如:tomcat里面的lib文件夹里面有jsp-api.jar、servlet-api.jar这两个jar包,而pom.xml里面就已经有这两个jar包了。因为这两个jar包冲突了,也不能把pom.xml里面的依赖给去掉,去掉之后web.xml就会报错,所有此时需要处理jar包冲突问题,此时就需要翻阅上文的拓展部分了,即Scope,依赖范围!!!!

在这里插入图片描述

⑥、然后再build运行一下maven

在这里插入图片描述

⑦、访问网址即可

其中custId可顺便填写

http://localhost:8080/maven-first/findById.action?custId=1014

拓展部分

有前面的Scope可知有五个范围,分别为:compile、provided、runtime、test
其中默认的依赖范围为compile,可以省略不写
上述案例需求可知,将jsp-apiservlet-api的Scope改为provided,它需要这两个jar包,但是tomcat里面本来就有,不需要从自己的maven仓库里使用,所以改成了provided,也就是使用的jar包是来自tomcat。当将maven项目打包(package)的时候,若是provided,则只会出现一个jsp和一个servlet有关jar包这两个包都是tomcat自带的。若是默认compile,则出现两个jsp和servlet包,一个来自tomcat一个来自自己的maven仓库。
test:只是针对junit来说的,若将junit的Scope改为test,则将maven项目打包的时候不会出现junit有关jar包

编译的时候,编译的是src/main/java里面的文件;而junit测试的时候,编译的时候src/test/java里面的文件,也就是junit测试都是写在src/test/java文件夹下的

①Scope为compile依赖时(默认依赖,拿Struts2-core),编译时需要,测试时需要,运行时需要(打包时需要有关jar包)
②Scope改为provided依赖时(拿jsp-api.jar、servlet-api.jar为例子),编译时(compile)需要用到有关jar包,测试时也需要用到有关jar包,
运行时不需要有关jar包(打包时不需要有关jar包)
③Scope改为runtime依赖时(拿j驱动包DBUtil为例子),编译时不需要,测试时需要,运行时需要(打包时需要有关jar包)
④Scope改为test依赖时(拿junit.jar包为例子,junit是开发人员来写的),编译时不需要,测试时需要,运行时不需要(打包时不需要有关jar包)

添加插件(插件也是一个依赖也是一个jar包)

①、更换tomcat端口和访问路径
在这里插入图片描述
在pom.xml下添加如下代码(端口:1014,访问路径:localhost:1014/sq/…):

<plugin><groupId>org.codehaus.mojo</groupId><artifactId>tomcat-maven-plugin</artifactId><version>1.1</version><configuration><port>1014</port><path>/sq</path></configuration>
</plugin>

②、更换tomcat7,此时运行的时候需要:tomcat7:run

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站后台中对html标签的处理

最近做一个CMS&#xff0c;后台中需要使用在线编辑器对新闻进行编辑&#xff0c;然后发表。我用的在线编辑器是CKEditorCKFinder。也许是我为了让CKEditor更本地化吧&#xff0c;改了很多。后来发现在CKEditor中对文字设置字体、颜色、字号大小时文字的<span>标签会出现N…

<各国地图轮廓app>技术支持

如在app使用过程中遇到任何问题&#xff0c;请与开发者联系caohechunhotmail.com

ffplay SDL_OpenAudio (2 channels, 44100 Hz): WASAPI can‘t initialize audio client“

windows下&#xff1a; ffplay 提示"SDL_OpenAudio (2 channels, 44100 Hz): WASAPI can’t initialize audio client" 添加环境变量&#xff1a;SDL_AUDIODRIVERdirectsound

(扩展)欧几里德快速幂

GCD模板 __int64 gcd(__int64 a,__int64 b) {return b0? a:gcd(b,a%b); } 欧几里德算法又称辗转相除法&#xff0c;用于计算两个整数a,b的最大公约数。其计算原理依赖于下面的定理&#xff1a; gcd函数就是用来求(a,b)的最大公约数的。 gcd函数的基本性质&#xff1a; gcd(a,…

Silverlight + WCF异步调用 例子

看大家好像对我的NParsing框架不是很感兴趣&#xff08;写NParsing帖没人顶我&#xff09;&#xff0c;那就给大家来点“甜品”&#xff0c;换换口谓。来说说Silverlight方面的东西。 在Silverlight中数据通信只能用异步。有人会觉得写起来很麻烦&#xff0c;其实不然。也有很简…

小议SqlMapConfig.xml配置文件

①、mybatis-3-config.dtd 主要用于mybatis的核心配文件sqlMapConfig.xml的约束 sqlMapConfig.xml代码如下&#xff1a; <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN&q…

ffmepg 命令提取音视频数据

原文件&#xff1a; 1&#xff1a; 原音频数据提取&#xff08;保留还是mp4的封装格式的&#xff09;&#xff1a; ffmpeg -i test_1920x1080.mp4 -acodec copy -vn audio.mp4 -vn 就是没有视频&#xff0c; -acodec copy 音频拷贝不进行任何转码 原视频数据提取&#xff0…

【7】jQuery学习——入门jQuery选择器之过滤选择器-可见性过滤选择器

这篇什么都不说&#xff0c;看标题就知道了&#xff0c;很简单&#xff0c;就2个选择器&#xff0c;嘿嘿 选择器描述返回$("Element:hidden")选取所有不可见的元素集合元素$("Element:visible")选取所有可见元素集合元素这篇很简单吧&#xff0c;就2个&…

Mybatis中的核心配置文件SqlMapConfig.xml详细介绍

一、properties&#xff08;属性&#xff09; 可以引用java属性文件中的配置信息如下 jdbc.properties代码如下&#xff1a; jdbc.drivercom.mysql.jdbc.Driver jdbc.urljdbc:mysql://localhost:3306/mybatis?characterEncodingutf-8 jdbc.usernameroot jdbc.passwordbeyond…

用Kotlin开发您的第一个应用程序| Android与Kotlin

In the previous article, we learned how to setup Kotlin in the android studio? Now moving to journey ahead we are going to develop our first app with Kotlin. It is the basic app, but it will let you know the structure of the program. 在上一篇文章中&#x…

(只需挨个复制粘贴命令即可部署)在Centos7下搭建文件服务器(VSFTPD)

观看北京尚学堂-百战程序员笔记一、VSFTPD简介 Linux的组件&#xff08;一款软件&#xff09;&#xff0c;安装到Linux后可以通过java代码&#xff08;FtpClient&#xff09;实现文件的上传。基于FTP协议。 由于VSFTPD是基于FTP协议&#xff0c;客户端浏览器是需要通过http协议…

bcd码二进制转十进制_二进制编码的十进制(BCD码)及其加法

bcd码二进制转十进制Prerequisite: Number systems 先决条件&#xff1a; 数字系统 BCD Code (8421 Code): In BCD 8421 code, each decimal digit is represented using a 4-bit binary number. The 4-bit binary numbers have their weights attached as 8, 4, 2, 1 from MS…

LINQ to XML:如何读写XCData

using System;using System.Xml.Linq;namespace ConsoleApplication1 {class Program{static void Main(string[] args){//写入CDATA元素块var doc new XElement("Test",new XElement("User",new XAttribute("name", "chenxizhang"),…

云服务器(Centos)部署SVN

1&#xff0c;安装svn yum install subversion 2&#xff0c;查看版本号 svnserve --version 3&#xff0c;创建SVN版本库&#xff08;在var/svn 文件夹下&#xff09; 新建文件夹 mkdir -p /var/svn/svnrepos 创建版本库 svnadmin create /var/svn/svnrepos 4&#xff0c;修改…

ffmpeg命令mp3中提取pcm格式

原mp3文件: ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm &#xff08;这可能是pcm原格式查不到什么信息但是可以播放的&#xff1a;ffplay -ar 48000 -ac 2 -f s16le 48000_2_s16le.pcm&#xff09; ffmpeg -i buweishui.mp3 -ar 48000 -ac 2 -samp…

bfs广度优先搜索算法_图的广度优先搜索(BFS)

bfs广度优先搜索算法What you will learn? 您将学到什么&#xff1f; How to implement Breath first search of a graph? 如何实现图的呼吸优先搜索&#xff1f; Breadth First Search is a level-wise vertex traversal process. Like a tree all the graphs have verte…

ffmpeg 命令转封装

1&#xff1a; 改变编码格式 原mp4文件:视频是h264 音频是aac 视频转成h265&#xff0c;音频转成mp3&#xff08;容器为mkv&#xff0c;有些容器不一定支持放h265的&#xff09; ffmpeg -i test_60s.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv 播放&#xff1a…

弗林的计算机体系结构分类

计算机体系结构分类 (Classification of computer architecture) According to Flynns there are four different classification of computer architecture, 根据弗林的说法&#xff0c;计算机体系结构有四种不同的分类&#xff0c; 1)SISD(单指令单数据流) (1) SISD (Single…

Assert和异常处理

Assert用于检查不应该发生情况&#xff0c;用来帮助开发人员对问题的快速定位。异常处理用于对程序发生异常情况的处理&#xff0c;增强程序的健壮性、容错性&#xff0c;减少程序使用中对用户不有好的行为&#xff0c;不让(通常也不必)用户知道发生了什么错误。实际开发中&…

ffmpeg 命令裁剪合并

1 mp4格式&#xff1a; 裁剪从一个视频中的1分钟、2分钟、3分钟开始截取10秒 ffmpeg -i test_1280x720.mp4 -ss 00:01:00 -t 10 -codec copy copy1.mp4 ffmpeg -i test_1280x720.mp4 -ss 00:02:00 -t 10 -codec copy copy2.mp4 ffmpeg -i test_1280x720.mp4 -ss 00:03:00 -t 10…