Maven入门教程(一)
1.Maven的简介
1.1 什么是maven
是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的。Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
1.2 什么是依赖管理
一个java项目需要外部的第三方jar包来进行支持。我们说这个java项目依赖了这些jar包。
依赖管理就是将项目所依赖的jar包按照一定规则进行规范化管理。
1.2.1 传统项目的依赖管理
传统的依赖管理就是程序员需要什么jar包,去网上进行下载,然后手动添加到工程中。
缺点:
(1) jar包从网上不好找
(2) jar包没有进行统一管理,容易造成jar包重复及版本冲突
(3) jar包全部添加到工程中,造成工程过大
1.2.2 maven项目的依赖管理
maven项目有一个文件叫pom.xml。我们通过在此文件中配置jar包的坐标即可将jar包引入到工程中。Jar包的坐标可从maven仓库中获取。
好处:
(1)通过pom配置来引入jar包,避免了jar包的版本冲突。
(2)Maven团队维护了一个jar包仓库,十分全,避免了去网上寻找jar包的尴尬,节省时间。
1.3 什么是项目构建
项目构建是一个项目从编写源代码到编译,测试,运行,打包,部署,运行的过程。
1.3.1 传统项目构建过程
(1) 在eclipse中新建一个WEB工程。
(2) 进行编码及编写配置文件
(3) 对源代码进行编译运行,生成class文件
(4) 打成war包,部署至tomcat
1.3.2 Maven项目构建过程
一个命令tomcat:run完成对项目的构建。
1.4 Maven好处
(1) 一步构建:一个命令即可启动。
(2) 依赖管理:对jar包统一管理,避免冲突等问题
(3) 跨平台:可在windows及linux下运行
(4) 有利于提高大型项目的团队开发效率
(5) 越来越多的公司使用maven
2.Maven的安装配置
2.1 下载安装
下载地址:http://maven.apache.org/download.cgi
直接解压到一个没有中文没有空格的文件夹里解压后的目录如下:
bin目录:maven的运行文件。mvn.cmd正常运行mvn,mvnDebug.cmd已debug方式运行maven。
boot目录:maven运行需要类加载器。
conf目录:maven的配置文件目录,核心配置文件为其中的setting.xml。
lib目录:maven所需要的jar包。
2.2 Maven环境变量配置
0、注意:配置maven之前,要配置jdk,确保配置jdk的环境变量
1、maven3.3.9这个版本所需的jdk版本必须要1.7以上
2、最终要运行的是maven软件中bin目录的mvn命令
3、系统变量中添加
环境变量的名称:MAVEN_HOME
变量值:就是maven解压的目录C:\Users\hanqing\Downloads\apache-maven-3.6.0
4、把MAVEN_HOME添加到path里
5、验证maven是否配置成功:
打开dos窗口 输入: mvn –v
显示版本号信息即为成功。
2.3 Maven仓库
2.3.1 maven仓库的概述
maven仓库用来存储jar包。maven项目都是从仓库中获取jar包。maven仓库分三种:本地仓库,远程仓库,中央仓库。
本地仓库:用来存储从远程仓库及中央仓库下载的jar包,自己来维护。项目使用的jar包优先从本地仓库获取。本地仓库的默认位置在${user.home}/.m2/repository。${user.home}表示用户所在的位置。
远程仓库:如果本地仓库没有所需要的jar包,默认去远程仓库下载。远程仓库由公司来进行维护又可称为私服。
中央仓库:中央仓库由maven团队来进行维护,服务于整个互联网。其仓库中存储大量的jar包。
2.3.2 修改本地仓库位置
本地仓库的配置在settings.xml文件中修改。
2.3.3 三种仓库的关系
本地项目需要jar包,先从本地仓库中获取,如果本地仓库中没有,则从私服中获取,如果私服没有,则从中央仓库获取。获取到后,本地仓库及远程仓库各存储一份。如果没有远程仓库,本地仓库则直接从中央仓库获取,然后在本地仓库存储一份。
3.目录,命令及生命周期
3.1 Maven的目录结构
maven工程具有一定的目录规范,如下:
src/main/java -------------------存放项目的.java文件
src/main/resources -----------存放项目资源文件,如一些配置文件
src/test/java --------------------存放所有单元测试的java文件,如junit测试类。
src/test/resource --------------测试资源文件
target------------------------------项目输出位置,编译后的class文件会输出到此目录
pom.xml--------------------------maven项目的核心配置文件
3.2 Maven的常用命令
3.2.1 clean
clean是清除命令,执行clean会删除target下文件。
cmd下执行 mvn clean
3.2.2 compile
compile用来将src/main/java下的文件编译为class文件,并输出到target中。
cmd下执行 mvn compile
3.2.3 test
test 用来将src/main/test下的文件进行编译,同时执行一次。
cmd下执行 mvn test
3.2.4 package
打包,将项目进行打包,如果是jar打包为jar,war打包为war。
3.2.5 install
把项目打包成war包或jar包发布到本地仓库
3.2.6 tomcat:run
一键启动
3.3 Maven的生命周期
3.3.1 maven的三种生命周期
maven对项目的构建分为三套相互独立的生命周期。
cleanLifecycle:在项目构建前,先进行一些清理工作。
defaultLifecycle:构建的核心部分,编译,测试,打包,部署。
siteLifecycle:生成项目报告,站点,发布报告。
3.3.2 maven生命周期的阶段
maven的每个生命周期都有很多阶段,每个阶段对应一个执行命令。
1、clean生命周期:清理项目,包含三个phase。
1)pre-clean:执行清理前需要完成的工作
2)clean:清理上一次构建生成的文件
3)post-clean:执行清理后需要完成的工作
2、default生命周期:构建项目,重要的phase如下。
1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
3、site生命周期:建立和发布项目站点,phase如下
1)pre-site:生成项目站点之前需要完成的工作
2)site:生成项目站点文档
3)post-site:生成项目站点之后需要完成的工作
4)site-deploy:将项目站点发布到服务器
3.3.3 命令与生命周期关系
每个maven命令对应生命周期的某一阶段,例如clean命令对应maven的clean阶段。test命令对应maven的default阶段。
执行命令会自动将该阶段以前的命令执行,例如执行clean命令,将自动执行pre-clean命令。
执行某个生命周期某个阶段,不会影响生命周期其他阶段。
如果要执行多个生命周期的命令,中间用空格隔开,例如mvn clean compile。
4.项目构建
4.1 Maven在eclipse的配置
1、选择maven软件,先通过add进行添加
2、加载setting文件,修改默认的本地仓库地址
4.2 eclipse浏览仓库
展示maven视图。
在弹出的视图下,右键Local Repository,点击Rebuild Index。
点击前方三角号,发现本地仓库的jar包已经可以看见。
4.3 maven坐标定义
每个maven工程都需要定义本工程的坐标。坐标是maven对jar包的定义。
groupId:项目名称,定义为组织名加项目名。
artifactId:模块名称
version:版本号snapshot为快照版本,非正式版本,release为正式发布版本
packaging:打包方式
jar:打成jar包
war:打成war包
pom:用于maven工程的继承,通常父工程设置为pom.xml
4.4 eclipse搭建maven工程
1、 新建maven项目
2、调过骨架,如果不跳过骨架选择创建出的项目目录是不全的
3、填写坐标
4、创建工程
5、处理红色叉号
手动在webapp文件夹下创建一个WEB-INF文件夹,在里面放一个web.xml文件
6、处理编译版本
在pom.xml中添加如下代码后右键工程在maven中点击Maven update。
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.6.0</version> <configuration><source>1.7</source><target>1.7</target><encoding>UTF-8</encoding></configuration></plugin></plugins></build>
7、创建一个servlet
修改web.xml,删除重复的代码,xmlns=http://java.sun.com/xml/ns/javaee
8、添加jar包
在pom中添加如下代码:
<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包已添加到项目中
9、启动项目
右击项目---run as –maven build …. 输入tomcat:run,项目执行
5.依赖管理
5.1 依赖范围
5.1.1 Compile
编译(compile)时需要, 测试时需要,运行时需要,打包时需要
5.1.2 Provided
编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要。只有当jdk或容器已提供该依赖后才使用。
5.1.3 Runtime
编译时不需要,测试时需要,运行时需要,打包时需要
5.1.4 Test
编译时不需要,测试时需要,运行时不需要,打包也不需要
此为本人学习笔记总结。希望大家能顺利入门,学习会maven的简单使用。
Maven入门教程(一)相关推荐
- Maven 入门教程
maven是一个项目管理工具,不仅可以把源代码构建为可以发布的项目(包括 编译.打包.测试.分发),还可以生成报告.生成web站点.本文介绍maven的主要使用过程,作为入门 1.maven的安装 w ...
- 【Maven入门教程】Maven的基本概念
一.POM(Project Object Model)项目对象模型 Pom在Maven中是一个XML文件,位于项目的根目录下,其包含着项目构建所需要的必要信息,Pom还支持继承,当一个项目中拥有多个模 ...
- Maven入门教程(十七)-Maven多Moudle项目创建
本章节介绍如何创建一个多模块的Maven项目,我们先从下图看下创建的项目整体结构 项目首先有一个父工程,主要用于锁定子工程的版本.设置公共的插件. 多个子工程继承父工程,并且子工程之间有依赖关系,如上 ...
- Maven入门教程(十四)-Nexus3.X私服下载资源
本章节主要讲解如何将私服的资源下载到本地仓库. 从图中我们可以看到,当我们设置了私服后,系统会先在私服中查找是否有需要的资源,如果没有则去远程仓库查找. 具体如何设置私服呢?步骤如下 首先我们需要在m ...
- 【Maven】Maven安装入门教程笔记
Maven入门(含实例教程)_小宝鸽的博客-CSDN博客_maven 史上最详细的Maven安装教程_chenxiky的博客-CSDN博客_maven安装教程 Maven的简单介绍: Ma ...
- Maven入门极简使用教程
Maven入门级别使用 回顾 拦截器 统一异常处理 实现接口的方式. 注解方式.(分享) 如果是ajax请求,会将异常信息发送到客户端的响应中. 复习spring springmvc SS ...
- docker 镜像修改的配置文件自动还原_原创 | 全网最实在的docker入门教程四
作者:潘吉祥 上一篇我们学习了如何使用Dockerfile制作自己的镜像,不过这种方式更像纯粹的运维方式,作为开发者来说,未免有些小繁琐,一个不小心写错些命令就执行失败,我们还不知道错误在哪,这着实有 ...
- ASP.NET Core 入门教程 2、使用ASP.NET Core MVC框架构建Web应用
原文:ASP.NET Core 入门教程 2.使用ASP.NET Core MVC框架构建Web应用 一.前言 1.本文主要内容 使用dotnet cli创建基于解决方案(sln+csproj)的项目 ...
- springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)
2019独角兽企业重金招聘Python工程师标准>>> 首先回顾下前几篇的内容:springboot 入门教程(1),springboot 入门教程-Thymeleaf(2), sp ...
最新文章
- asp.net code-behind
- asp.net页面回传与js调用服务端事件、PostBack的原理详解
- 数据结构:回溯--解决八皇后问题
- 蓝桥杯比赛常考算法_备战蓝桥--算法竞赛入门第一章总结
- Java -- XStreamAlias 处理节点中的属性和值
- Vue项目代码改进(六)—— vue的mixins的使用
- WinINet function(2)Request
- 除去WebView默认存在的一定像素的边距问题
- hihocoder第212周-动态规划
- 《Linux多线程服务端编程:使用muduo C++网络库》上市半年重印两次,总印数达到了9000册...
- 解决Flex4 发布后访问 初始化极其缓慢的问题
- vue怎么和python后端交互_python爬虫与Django框架vue交互的前后端代码详情(励志人生网实例)...
- 拖放drag drop(PyQt或Qt for python)
- 软考计算机中级网络工程师,计算机软考中级哪个最有用
- nssa和stub_ospf协议stub和nssa区域说明
- gopher对mysql的利用_gopher协议的攻击利用
- 开源 程序员清单_2016开源夏季阅读清单
- Oracle Linux网卡参数默认设置导致ORA-603
- yocto下的cmake版本hello world,追加分层使用
- QFileInfo截取文件后缀
热门文章
- mysql 删除重复索引_如何检查mysql的重复索引
- easyui ajax获取表单数据,easyui提交form表单接受数据处理、
- 会计师要计算机学的,会计师要具备哪些能力条件
- 计算机病毒能够自我复制自我执行吗,计算机病毒能够自我复制、自我执行。
- MySQL主从原理,基于快速学习一门技术的3种方式!
- 这本空降京东当当新书榜TOP1的“算法小抄”是什么来头?
- 最新的苹果M1芯片电脑别急着买,Docker容器还未能支持!
- 如果你不习惯新版的 Github 的 UI 界面,可以试试这款插件
- Java 8 中 Stream API 的奇技淫巧
- BAT 招聘岗位 100%都考的知识,你精通了吗?