Maven详解

一.前言

 
  
在此以前做过的品类中,没有真的的运用过Maven,只晓得其名声很大,其效果是用来管理jar
包的。方今一段时间在档次进度中使用Maven,用Maven构建的web项目,其体系结构只逗留在询问阶段,没有深入的利用与领会,刚好目前看了一篇关
于Maven的详解;就从头长远学习一下Maven的实际运用。

二.Maven的作用

  1. 在开发中,为了确保编译通过,大家会遍地去寻觅jar包,当编译通过了,运行的时候,却发现”ClassNotFoundException”,大家想到的是,难道还差jar包?
  2. 每个Java项目的目录结构都没有一个合并的业内,配置文件四处可见,单元测试代码到底应该置身那里也尚无一个上流的正式。
  3. 故此,我们即将动用Maven(使用Ant也得以,不过编写Ant的xml脚本比较费力)—-一个项目管理工具
  4. Maven重要做了两件事:
  • 合并支付规范与工具
  • 集合保管jar包

    上边大家来对待一下,首先创造一个常备的Java工程,是如此的:

图片 1

 
 这几个我们都很熟识,src下建包写代码,那么配置文件放在何地?单元测试代码放在何地?没有一个统一标准,愈多时候都是开发者的自由发挥,每个人有谈得来的品格,那并不要命合乎团队同盟。接下来,看一下施用maven构建一个常常Java项目事后的目录结构:

图片 2

看来采取Maven构建的一般性Java项目,对源代码、单元测试代码、资源乃至后续必要的文本都有专门的目录规划。

地方的终极有一个pom.xml,那是Maven的基本配置文件,pom称为Project Object
Model(花色对象模型),它用来描述整个Maven项目,所以也叫做Maven描述文件。

本来事情不会如此简单,接下去,继续进入Maven的世界呢。

pom.xml

打开pom.xml,最基础的是如此的:

1
2
3
4
5
6
7
8
9
10
<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,那么可以如此配置:

1
2
3
4
5
6
7
<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,找到下面的部分,点击就可以下载了:

图片 3

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

图片 4

图片 5

这么部署完就足以了,验证一下,windows+r打开命令窗口,输入”mvn
–version”,如若有上边的内容那意味Maven配置OK:

图片 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应该是那般的:

图片 7

2、重新下载Maven工程所依靠的jar包、导入jar包都须要触发Maven工程的build
workspace,那么如何才能触发Maven工程的build workspace?

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

3、本地仓库的目录结构是何等体统的?

groupId、artifactId、version确定一个唯一的Maven,比方说我有一个mybatis的dependcy:

1
2
3
4
5
<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地图