Maven详解

一.前言

 
  
早先做了的品种面临,没有真正的运了Maven,只了解那个名声很挺,其意图是故来管理jar
包的。最近一段时间在品种经过遭到利用Maven,用Maven构建的web项目,其色组织就留在打听等,没有深入之采取及理解,刚好最近拘留了平等篇有关Maven的详解;就开深入上一下Maven的实际运用。

二.Maven的作用

  1. 于付出中,为了保险编译通过,我们见面处处去找寻jar包,当编译通过了,运行的当儿,却发现”ClassNotFoundException”,我们想到的凡,难道还差jar包?
  2. 每个Java项目的目录结构都并未一个合之规范,配置文件到处都是,单元测试代码到底应该在那里吗从未一个上流的专业。
  3. 因此,我们将要采取Maven(使用Ant也得以,不过编写Ant的xml脚论比较辛苦)—-一个项目管理工具
  4. Maven主要做了点滴桩事:

  5. 合开规范及工具

  6. 合并保管jar包

    下面我们来比一下,首先成立一个常见的Java工程,是如此的:

MyBatis 1

 
 这个我们且死熟悉,src下建包写代码,那么配置文件在哪里?单元测试代码放在何?没有一个统一标准,更多时光还是开发者的自由发挥,每个人出谈得来之作风,这并无充分抱团队合作。接下来,看一下使用maven构建一个平凡Java项目事后的目录结构:

MyBatis 2

看使用Maven构建的一般Java项目,对源代码、单元测试代码、资源乃至后续要之公文都来特意的目录规划。

面的末梢出一个pom.xml,这是Maven的中心配置文件,pom称为Project Object
Model(类对象模型),它用来描述整个Maven项目,所以啊号称Maven描述文件。

本事情不见面这样简单,接下,继续上Maven的世界吧。

pom.xml

开辟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/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>
  <groupId>com.xrq.withmaven</groupId>
  <artifactId>withmaven</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <build/>
</project>

盖这布局文件是Maven的中坚,因此产生必不可少详细解读一下pom.xml,来先看一下方面的几只:

1、modelVersion

  指定了现阶段Maven模型的版号,对于Maven2和Maven3的话,它不得不是4.0.0

2、groupId

  顾名思义,这个理应是信用社名或是集体称。一般的话groupId是由于三个组成部分组成,每个片中以”.”分隔,第一局部凡是项目用,比如用来商业的就是是”com”,用于非营利性组织的尽管  是”org”;第二部分凡是铺叫,比如”tengxun”、”baidu”、”alibaba”;第三有的是若的类名为

3、artifactId

  可以看是Maven构建的档次名为,比如您的种类受到有子项目,就足以用”项目名-子项目名为”的命名方式

4、version

  版本号,SNAPSHOT意为快照,说明该档还以支付中,是休安定的版本。在Maven中深重大之一点凡,groupId、artifactId、version三个因素生成了一个Maven项目的主导坐标,这十分重大,我当采用以及钻研Maven的早晚累感受及了立点。

在方的这些要素外,还有一对素,同样位列一下:

1、packing

  项目打包的项目,可以要jar、war、rar、ear、pom,默认是jar

2、dependencies和dependency

  前者带有后者。前面说了,Maven的一个至关重要作用就是合管理jar包,为了一个路得以build或运行,项目蒙不可避免的,会凭借很多别的jar包,在Maven中,这些靠就为称作dependency。

  说及这边,就产生一个当地仓库长距离仓库的概念了。官方下载的地面仓库的部署当”%MAVEN_HOME%\conf\settings.xml”里面,找一下”localRepository”就好了;MyEclipse默认的地方仓库的地点以”{user.home}/.m2/repository”路径下,同样找一下”localRepository”就足以找到MyEclipse默认的本地仓库了。

  本地仓库和长距离仓库是这般的,Maven工程第一会见从地方仓库被获得jar包,当无法得到指定jar包时,本地仓库会由远程仓库(中央仓库)中下载jar包,并放入当地仓库以备将来用

  举个例证,比方说自己的型受到之所以到了MyBatis,那么得如此配置:

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.2.5</version>
    </dependency>
</dependencies>

   
之前来说了groupId、artifactId、version唯一标识一个Maven项目,有了马上三只因素,我们便可去远程仓库下载MyBatis3.2.5.jar到本地仓库了。回想我们事先的做法,如果假定MyBatis的jar包,发现没有,然后去网上下载一个,需要另外的jar包,然后去网上下载一个,但是出矣Maven,就便于多了,只待安排jar包对应之dependency依赖,Maven会自动帮助我们失去远程仓库中下载jar包到地面仓库中。

3、properties

  properties是用来定义有配备属性之,例如project.build.sourceEncoding(项目构建源码编码方式),可以安装为UTF-8,防止中文乱码,也可是定义相关构建版本号,便于日后合并升级。

4、build

  build代表和构建相关的布,比如build下出finalName,表示的尽管是最后构建之后的称号。

继之解释一下Maven的目结构:

  • main目录下是项目之显要代码,test目录下存放测试相关的代码
  • 编译输出后的代码会在target目录下
  • src/main/java下存放Java代码,src/main/resources下存放配置文件
  • 此间没webapp,Web项目会生出webapp目录,webapp下存放Web应用相关代码
  • pom.xml是Maven项目之安排文件

三.Maven环境布置

常用之开发工具Idea、MyEclipse里面还曾合龙了Maven了,不过最是起官网下一个部署到自己电脑里,开发工具里的或是有个别的Bug。

首先去Maven官网,下载Maven的包,地址为http://maven.apache.org/download.cgi,找到下面的部分,点击就可以下载了:

MyBatis 3

下载了解压,然后配置一下环境变量,和JDK的环境变量配置类似:

MyBatis 4

MyBatis 5

如此这般安排了便可了,验证一下,windows+r打开命令窗口,输入”mvn
–version”,如果来下的情就象征Maven配置OK:

MyBatis 6

 

Maven入门使用大规模问题

1、我打SVN上下载了一个缘Maven构建的工程,下载了没有jar包怎么惩罚?

自资源库上下载下来的Maven工程,是绝非jar包的,此时足这样做:

(1)删除Maven工程,但是去的时刻不要去本地工程中的Maven工程,只去MyEclipse中的Maven工程

(2)右键Import->Maven4MyEclipse->Existing Maven
Projects,导入你的Maven工程,此时MyEclipse在构建工程的时候,假如你的地头仓库着没有dependcy中的jar包,便会去远程仓库下载jar包到地面仓库中。你的工程导入完毕后,Library应该是这么的:

MyBatis 7

2、重新下载Maven工程所依靠的jar包、导入jar包都得触发Maven工程的build
workspace,那么哪些才能够触发Maven工程的build workspace?

找到一个pom.xmlMyBatis,随便修改一下,加一个空格、减一个空格什么的,ctrl+s保存一下,便会触发Maven工程的build
workspace了

3、本地仓库的目结构是啊则的?

groupId、artifactId、version确定一个唯一的Maven,比方说自己来一个mybatis的dependcy:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId> 
    <version>3.2.5</version>
</dependency>

这就是说mybatis的jar包应该当%Maven仓库地址%\org\mybatis\mybatis\3.2.5\这一道径下,看到了吧,先groupId,再mybatis,最后version,每个名字还是一个文件夹的名

4、有些jar包在dependcy里面来布置,Import了Maven工程,下充斥了工程所依赖之jar包之后,发现当地仓库内却没,怎么处置?

或是原先下载jar包的时来了什么问题,从artifactId目录开始去以下的有文件/文件夹,然后触发一不好Maven工程的build
workspace就可以了

5、本地仓库中规定已有jar包了,工程中也报错,说找不至jar包,该怎么惩罚?

该生出诸多解决办法,目前解决的平种办法是,MyEclipse->Window->Preferences->搜索Maven->User
Settings,Update
Settings和Reindex点一下纵吓了。另外,可以尝尝一下把本地Maven仓库内之jar包删除一下,然后再度build
workspace,可能也堪。

  

网站地图xml地图