欢迎光临
我们一直在努力

Maven(一)初识Maven

前言

在这之前一直都有去看关于maven的相关介绍,但是没有到真正要用的时候,自己总是以为懂了。其实真的感觉Maven并没有想象的那么简单!

那我们该怎么去学习maven呢?接下来我将从:

初步认识maven,获取jar包的三个关键属性 --> 介绍仓库(获取的jar包从何而来)-->用命令行管理maven项目(创建maven项目) --> 用myeclipse创建maven项目 -->详细介绍pom.xml中的依赖关系(坐标获取、定位jar包的各种属性讲解)。

为什么要去使用maven呢?

举例1:假如你正在Eclipse下开发两个Java项目,姑且把它们称为A、B,其中A项目中的一些功能依赖于B项目中的某些类,那么如何维系这种依赖关系的呢?

很简单,这不就是跟我们之前写程序时一样吗,需要用哪个项目中的哪些类,也就是用别人写好了的功能代码,导入jar包即可。所以这里也如此,可以将B项目打成jar包,然后在A项目的Library下导入B的jar文件,这样,A项目就可以调用B项目中的某些类了。

这样做几种缺陷

如果在开发过程中,发现B中的bug,则必须将B项目修改好,并重新将B打包并对A项目进行重编译操作

在完成A项目的开发后,为了保证A的正常运行,就需要依赖B(就像在使用某个jar包时必须依赖另外一个jar一样),两种解决方案,第一种,选择将B打包入A中,第二种,将B也发布出去,等别人需要用A时,告诉开发者,想要用A就必须在导入Bjar包。

两个都很麻烦,前者可能造成资源的浪费(比如,开发者可能正在开发依赖B的其它项目,B已经存储到本地了,在导入A的jar包的话,就有了两个B的jar),后者是我们常遇到的,找各种jar包,非常麻烦(有了maven就不一样了)

举例2:我们开发一个项目,或者做一个小demo,比如用SSM框架,那么我们就必须将SSM框架所用的几十个依赖的jar包依次找出来并手动导入,超级繁琐。

 

上面两个问题的描述,其实都属于项目与项目之间依赖的问题[A项目使用SSM的所有jar,就说A项目依赖SSM],人为手动的去解决,很繁琐,也不方便,所以使用maven来帮我们管理。

一、Maven概述

1.1、Maven介绍

Maven可以翻译为“知识的积累”、“专家”、“内行”。作为Apache组织中的一个颇为成功的开源项目,Maven主要服务于基于Java平台的项目构建、依赖管理、和项目信息管理。Maven在各类项目中都可以大显身手。

1) Maven是优秀的构建工具
除了编写源代码,我们每天有相当一部分时间花在了编译,运行单元测试,生成文档,打包,部署等繁琐且不起眼的工作上,这就是构建。Maven就是一个异常强大的构建工具,能够帮我们自动化构建过程,从清理,编译,测试,到生成报告,再到打包和部署

我们不需要一遍一遍的输入命令, 一次又一次点击鼠标,Maven帮我们很方便的搞定。Maven是跨平台的。

2) Maven还是依赖管理工具和项目信息管理工具
Maven通过一组坐标能够找到任何一个Java类库(如jar),Maven给这个类库世界引入了经纬,让它们变得有秩序,于是我们可以借助它来有序地管理依赖,轻松地解决那些繁杂的依赖问题。

Maven还能帮助我们管理原本分散在项目中各个角落的项目信息,包括项目描述,开发者列表,版本控制系统地址,许可证,缺陷管理系统地址等。除了直接的项目信息,通过Maven自动生成的站点,

以及一些已有的插件,我们还能轻松地获得项目文档、测试报告、静态分析报告、源码版本日志报告等非常具有价值的项目信息。

3) 仓库
Maven为全世界的Java开发者提供了一个免费的中央仓库,在其中几乎可以找到任何流行开源类库。通过Maven的一些衍生工具(如Nexus),我们还能对其进行快速地搜索。只要定位了坐标,Maven就能够帮我们自动下载,省去了手工劳动。

1.2、理解Maven

如果没明白maven是什么,那个人觉得,Maven的核心功能便是合理叙述项目间的依赖关系,通俗点讲,就是通过pom.xml文件的配置获取jar包,而不用手动去添加jar包,而这里pom.xml文件对于学了一点maven的人来说,就有些熟悉了。

怎么通过pom.xml的配置就可以获取到jar包呢?pom.xml配置文件从何而来?等等类似问题我们需要搞清楚,如果需要使用pom.xml来获取jar包,那么首先该项目就必须为maven项目,

maven项目可以这样去想,就是在java项目和web项目的上面包裹了一层maven,本质上java项目还是java项目,web项目还是web项目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通过pom.xml添加jar包)。

所以,根据上一段的描述,我们最终的目的就是学会如何在pom.xml中配置获取到我们想要的jar包,在此之前我们就必须了解如何创建maven项目,maven项目的结构是怎样,与普通java,web项目的区别在哪里,还有如何配置pom.xml获取到对应的jar包等等。

1.3、项目的构建与依赖管理

项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

Maven(一)初识Maven

依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,

依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。

1.4、Maven的优点

1)Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

2)Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程。

3)只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情

4)使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

二、Maven的安装

2.1、Maven的下载

下载地址是:http://maven.apache.org/download.cgi

Maven(一)初识Maven

下载完成后,得到一个压缩包解压,可以看到maven的组成目录

Maven(一)初识Maven

目录介绍:

bin:含有mvn运行的脚本

boot:含有plexus-classworlds类加载器框架

conf:含有settings.xml配置文件

lib:含有Maven运行时所需要的java类库

LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

2.2、Maven的安装

1)首先你要确保你的电脑已经安装了jdk1.6版本以上的,并配置好了JDK的环境变量。

2)对apache-maven-3.3.9-bin.zip进行解压缩,例如解压到如下目录(解压目录最好不要有中文)

3)第三步:配置环境变量

Maven(一)初识Maven

4)设置环境变量path,将%M2_HOME%\bin加入到path中,一定要注意使用分号;隔开。

5)验证是否配置成功:打开cmd命令——>输入:mvn-v   

  Maven(一)初识Maven

三、Maven仓库

通过pom.xml中的配置,就能够获取到想要的jar包(还没讲解如何配置先需要了解一下仓库的概念),但是这些jar是在哪里呢?就是我们从哪里获取到的这些jar包?答案就是仓库(用来统一存储所有Maven共享构建的位置)

仓库分为:本地仓库、第三方仓库(私服)、中央仓库

3.1、本地仓库

Maven会将工程中依赖的构件(Jar包)从远程下载到本机一个目录下管理,每个电脑默认的仓库是在 $user.home/.m2/repository下

Maven(一)初识Maven

我的就是在:C:\Users\Shinelon\.m2\repository

一般我们会修改本地仓库位置,自己创建一个文件夹,在从网上下载一个拥有相对完整的所有jar包的结合,都丢到本地仓库中,然后每次写项目,直接从本地仓库里拿就行了

Maven(一)初识Maven这里面的jar包相对的完整,很多都是我们需要的。

修改本地库位置:在$MAVEN_HOME/conf/setting.xml文件中修改

Maven(一)初识Maven

Maven(一)初识Maven

E:\AStudySoftwere\mavenrepository:就是我们自己创建的本地仓库,将网上下载的所有jar包,jar包默认的下载存储位置,我们就可以直接通过maven的pom.xml文件直接拿。

把jar包下载到本地的好处就是,当编译时,会优先从本地的jar包去找,如果本地存在,就直接拿来用,如果不存在,就从Maven的中心仓库去下载。

3.2、第三方仓库(私服)

第三方仓库,又称为内部中心仓库,也称为私服(一种特殊的远程仓库,它是架设在局域网内的仓库)。

私服:一般是由公司自己设立的,只为本公司内部共享使用。它既可以作为公司内部构件协作和存档,也可作为公用类库镜像缓存,减少在外部访问和下载的频率。(使用私服为了减少对中央仓库的访问

私服可以使用的是局域网,中央仓库必须使用外网(一般公司都会创建这种第三方仓库,保证项目开发时,项目所需用的jar都从该仓库中拿,每个人的版本就都一样。)

Maven(一)初识Maven

 

注意:连接私服,需要单独配置。如果没有配置私服,默认不使用

3.3、中央仓库

Maven内置了远程公用仓库:http://repo1.maven.org/maven2

这个公共仓库是由Maven自己维护,里面有大量的常用类库,并包含了世界上大部分流行的开源项目构件。目前是以java为主

工程依赖的jar包如果本地仓库没有,默认从中央仓库下载

3.4、Maven获取jar的过程

Maven(一)初识Maven

四、手动创建Maven项目

4.1、Maven的目录结构

MavenProjectRoot(项目根目录)
   |----src
   |     |----main
   |     |         |----java ——存放项目的.java文件
   |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
   |     |----test
   |     |         |----java ——存放所有测试.java文件,如JUnit测试类
   |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
   |----target ——项目输出位置
   |----pom.xml ----用于标识该项目是一个Maven项目

Maven(一)初识Maven

图中有一个target目录,是因为将该java项目进行了编译,src/main/java下的源代码就会编译成.class文件放入target目录中,target就是输出目录。

4.2、手动创建一个Maven项目

1)创建项目的根文件夹:FirstMaven

2)创建一个pom.xml文件

Maven(一)初识MavenMaven(一)初识Maven

<?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  http://maven.apache.org/xsd/maven-4.0.0.xsd"> <!--所有的Maven项目都必须配置这四个配置项--> <modelVersion>4.0.0</modelVersion> <!--groupId指的是项目名的项目组,默认就是包名--> <groupId>cn.gacl.maven.hello</groupId> <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"--> <artifactId>hello-first</artifactId> <!--version指的是版本,这里使用的是Maven的快照版本--> <version>SNAPSHOT-0.0.1</version> </project>

pom.xml

3)编写Java类文件,Maven项目规定,所有的*.java文件必须放在src目录下的main目录下的java目录中,在FirstMaven项目根目录中创建一个src目录,然后在src目录中创建main目录,在main目录中再创建java文件夹。

Maven(一)初识Maven

4)使用Maven编译Hello.java,首先进入到项目根目录,然后使用命令”mvn compile”进行编译

Maven(一)初识Maven

使用Maven编译完成之后,在项目的根目录会产生一个target文件夹。打开target文件夹,可以看到里面有一个classes文件夹,classes文件夹存放的就是编译成功后生成的.class文件。

Maven(一)初识Maven

5)使用"mvn clean"命令清除编译结果,也就是把编译生成的target文件夹删掉

Maven(一)初识Maven

 

持续更新中,觉得不错点个“推荐”哦!

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《Maven(一)初识Maven》
文章链接:https://www.456zj.com/38820.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址