APP下载
报价宝  ›  科技  › 

Maven详细介绍

报价宝 来源:baojiabao.com 发布时间:2019-10-12 15:55:00 09月11日更新
报价宝综合消息Maven详细介绍

一、课程目标

Maven

构建Maven多模组功能

二、什么是maven

Maven是一个跨平台的专案管理工具,主要用于基于java平台的专案构建,依赖管理。

如图为专案构建的过程。

解决的专案的问题:

1、如果有好几个专案,这好几个专案中,需要用到很多相同的jar包,

能不能只建立一个仓库来解决这个问题?

2、测试方法能不能全部执行呢?

3、怎么样把一个模组的功能放入到仓库中

三、Maven的安装与配置

Maven的安装

Jdk的情况

Jdk必须1.6以上的版本

从官网下载maven

从http://maven.apache.org/官网上下载最新版本的maven

设定path路径

把下载下来的maven解压缩,然后有一个bin资料夹,这是一个bin的资料夹的目录

F:workcoursemavenmavenin

把该目录追加到环境变数的path中。

利用命令列检查是否成功

有这个图,说明maven安装成功了。

建库

先开启路径

C:UsersThink.m2

把settings.xml档案复制到上述的路径中

F:workcoursemavenapache-maven-3.0.5-binapache-maven-3.0.5conf

有一个settings.xml档案,复制到C:UsersThink.m2

修改settings.xml档案

F:/work/course/maven/mavenRepository/

指定仓库的路径

在这里mavenRepository就是仓库的路径

Maven的配置

bin中存放可执行的二进位制档案

conf存放settings.xml档案

lib 执行maven所依赖的jar包

maven的约定

src/main/java 存放专案的java档案

src/main/resources 存放专案的资原始档,如spring,hibernate的配置档案

src/test/java 存放所有的测试的java档案

src/test/resources 存放测试用的资原始档

target 专案输出位置

pom.xml 档案

四、maven专案

hello专案

在eclipse建立一个专案Hello

建立一个包cn.itmayiedu.maven,并在该包下建立一个类

编写Hello类

在src/test/java中建立一个包cn.itcast.maven,建立一个测试类HelloTest

编写测试类

编辑pom.xml档案

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">

4.0.0

com.itmayiedu

Hello

1.0

groupId这是专案组的编号,这在组织或专案中通常是独一无二的。 例如,每特教育com.itmayiedu拥有所有蚂蚁课堂相关专案。

artifactId这是专案的ID。这通常是专案的名称。 例如,consumer-banking。 除了groupId之外,artifactId还定义了artifact在储存库中的位置。

version这是专案的版本。与groupId一起使用,artifact在储存库中用于将版本彼此分离。

说明:

project:表示一个工程

modelVersion:为版本号

用maven命令编译专案(mvn compile)

在命令列出现这样的形式,说明编译OK了。

target资料夹的变化

可以看到编译后的档案全部放入到了target里。

clean

执行命令mvn clean

说明执行成功了。

可以看到target的目录没有了。

test

执行mvn test命令

说明执行成功了,并且运行了一个类,再次看target的结构

说明:

target/classes

存放编译后的类

target/test-classes

存放编译后的测试类

target/surefire-reports

存放测试报告

可以看出,只要进行测试,清理和编译可以自动执行了。

package

执行mvn package

这个界面说明打包成功了。

说明:

target/classes

编译后的类的路径

target/test-classes

编译后的测试类的路径

target/surefire-reports

测试报告

target/maven-archiver

执行package的归档

Hello-0.0.1-SNAPSHOT.jar

执行完package命令后打成的jar包

Hellofriend专案

建立HelloFriend专案工程

编写pom.xml档案

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.itmayiedu

Hellofriend

0.0.1

com.itmayiedu

Hello

0.0.1

执行mvn compile命令

执行这个命令的时候会出错,因为HelloFriend专案是建立在Hello专案基础之上的,但是现在工程中没有引入Hello.java这个类。所以会出错。

执行mvn clean install命令

1、开启命令列

2、把当前路径调节到Hello工程的根目录

3、执行mvn clean install命令,把Hello整个工程放入到仓库中

如果执行成功,则会在仓库中看到。

在仓库中的位置。

执行mvn package命令打包HelloFriend工程

说明成功了。

可以看到成功以后,在target目录下多了一个jar包

该jar包为当前工程的jar包。

建立cn.itcast.maven包及HelloFriend类

编辑HelloFriend类

建立cn.itcast.maven包和测试类HelloFriendTest类

编辑HelloFriendTest类

执行mvn package命令

上图中的”say hello”就是输出的结果。

五、maven的核心概念

专案物件模型

说明:

maven根据pom.xml档案,把它转化成专案物件模型(POM),这个时候要解析依赖关系,然后去相对应的maven库中查询到依赖的jar包。

在clean,compile,test,package等阶段都有相应的Plug-in来做这些事情。

而这些plug-in会产生一些中间产物。

外挂的位置

在maven解压后的位置F:workcoursemavenmaven有一个bin资料夹,里面有

一个档案m2.config档案

set maven.home default ${user.home}/m2,其中该路径指明了仓库的储存位置。

其中settings.xml档案中

这个说明了仓库中的位置。

这里的外挂就是执行maven的各种命令所需要的外挂。

maven座标

maven座标的主要组成

groupId:定义当前maven专案属于哪个专案

artifactId:定义实际专案中的某一个模组

version:定义当前专案的当前版本

packaging:定义当前专案的打包方式

根据这些座标,在maven库中可以找到唯一的jar包

依赖管理

继承管理

建立一个专案HelloParent

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.itmayiedu

HelloParent

0.0.1

pom

com.itmayiedu

Hello

0.0.1

Hellofriend、Hello专案继承HelloParent

仓库管理

可以根据maven座标定义每一个jar包在仓库中的储存位置。

大致为:groupId/artifactId/version/artifactId-version.packaging

仓库的分类

本地仓库

~/.m2/repository/

每一个使用者也可以拥有一个本地仓库

远端仓库

中央仓库:Maven预设的远端仓库

http://repo1.maven.org/maven2

私服:是一种特殊的远端仓库,它是架设在局域网内的仓库

映象:用来替代中央仓库,速度一般比中央仓库快

六、maven在eclipse中的应用

环境配置

如果所示,myeclipse自带maven,从上图看以看到Maven JDK是可以配置的,这里用了jdk1.6

从上图可以看出,我们可以利用myeclipse自带的maven,也可以使用自己的maven。

上图应用的就是自己的maven。

从最下面可以看出,这是settings.xml档案的路径。

这幅图说明了使用者的settings.xml档案的位置和使用者的仓库的位置。

这是最基本的环境的配置。

settings.xml档案

仓库的路径

通过配置localRepository的值可以改变仓库的路径。

配置私服的路径

直接连线互联网

如果不想连线私服,可以直接连线互联网。只需要把连线私服的所有的路径去掉即可。

建立maven工程

建立java project

选择Maven Project

选择快速建立maven-archetype-quickstart

填写group ID,Artiface Id,Version,Package属性

然后点选finish就可以了。

建立web project

新建立一个web project

新增maven support即可。

七、使用Maven建立(聚合)多模组功能

目录结构

----- itmayiedu-parent-----父工程

----- itmayiedu-service-----业务逻辑层

----- itmayiedu-web-----web层

构建itmayiedu-parent

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.itmayiedu

itmayiedu-parent

0.0.1-SNAPSHOT

pom

commons-lang

commons-lang

2.6

../itmayiedu-service

../itmayiedu-web

构建itmayiedu-service

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.itmayiedu

itmayiedu-parent

0.0.1-SNAPSHOT

../itmayiedu-parent/pom.xml

com.itmayiedu

itmayiedu-service

0.0.1-SNAPSHOT

构建itmayiedu-web

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

com.itmayiedu

itmayiedu-parent

0.0.1-SNAPSHOT

../itmayiedu-parent/pom.xml

com.itmayiedu

itmayiedu-web

0.0.1-SNAPSHOT

war

com.itmayiedu

itmayiedu-service

0.0.1-SNAPSHOT

javax.servlet

javax.servlet-api

3.1.0

启动方式

新增tomat启动即可。

八、Maven打包原理

一、Maven中央储存库

当你建立一个 Maven 的专案,Maven 会检查你的 pom.xml 档案,以确定哪些依赖下载。首先,Maven 将从本地资源库获得 Maven 的本地资源库依赖资源,如果没有找到,然后把它会从预设的 Maven 中央储存库 http://search.maven.org/ 查询下载。

在Maven中,当你宣告的库不存在于本地储存库中,也没有不存在于Maven中心储存库,该过程将停止并将错误讯息输出到 Maven 控制台。

二、新增远端仓库

预设情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库丢失在中央储存库,只有在Java.net或JBoss的储存库远端仓库中能找到。

现在,Maven的依赖库查询顺序更改为:

在 Maven 本地资源库中搜索,如果没有找到,进入下一步,否则退出。

在 Maven 中央储存库搜寻,如果没有找到,进入下一步,否则退出。

在Maven的远端储存库搜寻,如果没有找到,提示错误资讯,否则退出。

讲师画图

九、常用错误

错误原因①:

pom.xml报错:web.xml is missing and is set to true

解决办法:

出现这个错误的原因是Maven不支援缺少web.xml的web专案

新增Web模组,对专案右键->Java EE Tools->Generate Deployment Descriptor Stub,这样就在

srcmainwebapp下面生成了WEB-INF资料夹和web.xml,问题解决.

错误原因②

‘parent.relativePath’ and ‘parent.relativePath’ points at wrong local POM @ line 4, column 10

解决办法

在应用parent工程中加上…/itmayiedu-parent/pom.xml

com.itmayiedu

itmayiedu-parent

0.0.1-SNAPSHOT

../itmayiedu-parent/pom.xml

错误原因③

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

解决办法 更换为自己本地的jdk即可。

文章标签: 报价宝 降噪耳机价格 耳机价格 红米手机价格 华为手机价格 小米手机价格 电视机价格 笔记本电脑价格 笔记本价格 汽车价格 数码相机价格 汽车价格 笔记本电脑价格 红米手机价格 降噪耳机价格