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</artifactId>maven-compiler-pluginversion>3.6.0>  
                configuration>
                    source>1.7targetencoding>UTF-8>
        >
    build>

7、创建一个servlet

修改web.xml,删除重复的代码,xmlns=http://java.sun.com/xml/ns/javaee

8、添加jar包

在pom中添加如下代码:

  <dependenciesdependency>junit>4.9scope>test>javax.servlet>servlet-api>2.5>provided>jsp-api>2.0>

会发现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的简单使用。

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


本篇文章和大家了解一下怎么搭建maven私有仓库。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。在本篇文章中,我们将介绍如何搭建一个Maven...
今天小编给大家分享的是如何解决Maven依赖冲突,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。目...
这篇文章主要介绍了Maven仓库分类的优先级是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Maven仓库分类的优先级是什么文...
本篇内容主要讲解“Maven怎么实现自己的starter依赖”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Maven怎
本篇内容主要讲解“maven不能下载oraclejdbc驱动的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大...
这篇文章主要介绍了怎么使用maven基本命令打包包名的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用maven基本命令打包包...
本篇内容介绍了“maven中profile如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧...
本文小编为大家详细介绍“Maven打包没有指定主类问题怎么解决”,内容详细,步骤清晰,细节处理妥当,希望这篇“Maven打包没有指定主类问题怎么解决”文章能帮助...
这篇文章主要介绍“maven怎么打包动态环境变量”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“maven怎么打包动态环...
今天小编给大家分享一下Maven离线模式打包的步骤是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考
本文小编为大家详细介绍“maven打包时候修改包名称带上git版本号和打包时间的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“maven打包时候修改包...
这篇文章主要讲解了“maven打包怎么指定jdk的版本”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“maven打...
这篇“Maven打包时怎么指定启动类”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读
这篇文章主要讲解了“怎么使用jenkins配置maven和JDK”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎
这篇文章主要介绍了maven中配置项目的jdk版本无效怎么排查的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇maven中配置项目的jdk...
今天小编给大家分享一下Maven提示jdk版本不正确怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考
本篇内容主要讲解“maven优缺点及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“maven优缺点
这篇文章主要介绍“maven项目引入maven库没有jar怎么处理”,在日常操作中,相信很多人在maven项目引入maven库没有jar怎么处理问题上存在疑惑,小编查阅了各式资...
本篇内容主要讲解“怎么下载远程maven仓库的jar并手动放到本地仓库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学...
这篇文章主要介绍“maven私服搭建与使用的方法是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“maven私服搭建...