maven学习指南

Maven

为什么需要maven?

  1. 一个项目就是工程,如果项目非常大,以包管理划分模块不利于管理,最好是一个模块对应一个工程,但模块之间有需要相互访问,所以用maven能很好解决这个问题。
  2. 项目中需要的jar包要手动复制到项目中,如果项目工程多,那么jar包就要多复制几份粘贴到工程中。借助maven,可以将jar包仅仅地保存到仓库当中,需要时直接引用。
  3. Jar包需要自己找很麻烦,而下载的方式五花八门。借助maven能以一种规范的方式下载jar包,因为知名的框架或第三方jar工具包都放在maven的中央仓库中。
  4. 一个jar包依赖的其他jar包需要手动加入项目中。借助maven会自动地增加依赖关系的架包。

 

是什么?

1,服务于Java平台的自动化构建工具。

Make->ant->maven->gradle

2,构建

 以Java源文件,框架配置文件,jsp,html,图片等资源去生产一个可运行的项目的过程。 编译 部署 构建

Tip 工程目录的结构和服务器的结构不同。服务器运行的是webcontent的编译结果,在开发过程中,所以的路径或配置类路径都是以编译结果的目录为标准的。

 

构建过程中的各个环节

清理 编译 测试 报告 打包 安装 部署

测试 自动测试,自动调用junit程序;报告 测试程序执行的结果;打包 动态web工程打war包,Java工程打jar包

安装 maven特定的概念,将打包得到的文件复制到仓库中。

部署 将动态web工程生产的war包复制到servlet容器的指定目录中,使其可以运行。

 

安装maven

1 Java的jdk安装 2 解压maven核心程序的压缩包,放在无中文路径下3配置maven相关的环境变量 用户的和系统的。Bin目录的上一级。Path是带bin级

4 运行mvn -v命令,查看版本。

Maven的核心概念

约定的目录结构 POM 坐标 依赖 仓库 生命周期 插件 目标 继承 聚合

 

约定的目录结构

根目录 与工程同名

Src目录 源码

Pom.xml文件 maven工程的核心配置文件

Main 存放主程序

Test目录 存放测试程序

Java目录 Java文件

Resouces目录 存放框架和其他工具的配置文件

自定义的东西要想让框架或工具知道

要以配置的方法明确告诉框架 或者遵守约定。

--根目录

--|--src

--|--|--main

--|--|--|--java

--|--|--|--resource

--|--|--test

--|--|--|--java

--|--|--|--resource

--|--pom.xml

 

常用的maven目录

1注意 执行与构建过程相关的maven命令,必须进入pom.xml所在的目录。 与构建相关的命令 编译 测试 打包……

常用命令

以mvn开头

清理clear compile编译主程序 test-compile编译测试程序 test执行测试 package打包

 

联网

Maven的核心程序仅仅定义了抽象的生命周期,但是具体的工作有插件完成,并不包含在maven的核心程序中。

会先在本地仓库查找,本地仓库的默认位置

C:\user\当前登录系统的用户\.m2\repository

如果没有找到,会联网去中央仓库下载,如果没有网络,会构建失败。

 

修改默认的本地仓库的位置 让maven核心程序去那里查找。

Maven的解压目录 conf\setting配置文件

找到localrepository标签,修改标签的内容。

 

POM project object model项目对象模型

 与pom.xml文件的配置相关。

 

坐标

  使用三个向量在仓库中唯一定位一个maven工程。

groupid工程名artifactid模块名version版本

maven工程的坐标和仓库中的路径一致。

 

仓库

本地仓库

远程仓库 1局域网范围 或私服2中央仓库3 中央仓库的镜像

仓库保存的内容 maven工程

1maven自身的插件 2 第三方框架或工具的jar包 3自己开发的maven工程。

 

依赖

dependency

Maven解析依赖信息时去本地仓库里去找,如果没有则依赖失败。

 对于我们自己构建的maven工程,需要在控制端进入工程目录下,执行mvn install命令后,自动地收入本地仓库。

 

工程依赖另一个工程 需要在pom.xml配置文件中配置

首先添加总标签dependencies, 在标签下建立dependency标签,配置工程依赖。

而dependency标签下应该有工程的坐标信息,还有依赖的范围标签。

及scope的范围

Compile 对主程序有效 对测试程序有效 对打包有效

Test  对测试程序有效 不参与打包

Provided  在开发工程中比较 对主程序 测试程序有效 不参与打包,也就是不参与部署。

 

生命周期 各个构建的执行次序

  清理 编译 测试 报告 打包 安装 部署

 

插件和插件目标

生命周期的各个阶段仅仅定义了要执行什么

各个阶段和插件的目标是对象的

插件执行的工具

 

MyEclipse设置maven插件

1installations 指定maven的核心程序的位置,推荐不用

2user setting 指定conf/setting的位置,也就是本地仓库的位置。

 

基本操作

创建maven版的Java/web工程

 

设置maven版本的jdk版本,

 

在eclipse执行命令 在run as中执行

 

Java工程和Web工程的区别 打包的方式 jar war

 

Web工程的修改 点右键 project facets的选项,操作。

 

依赖的传递性

如果某个工程里依赖其他的架包,那么在引入它的工程也会间接依赖这个引入工程的架包。

注意 非compile范围的依赖不能传递。

 

依赖的排除 及消除多余的间接依赖

依赖排除的设置

在添加依赖的工程中,exclusions标签中增加 exclusion标签里添加排除架包的坐标。

 

依赖的原则 解决模块工程之间的jar包冲突问题。

工程之间通过依赖传递引入相同不同版本的架包,根据路径最小者优先,而路径相同时,根据工程声明的顺序优先。

同一管理依赖的版本

升级架包的版本的方式

1使用properties标签,在标签里面自定义一个版本标签

2然后再version标签中使用${自定义的标签}

3这种方式不单单仅仅用于此,还可以用于其他用途。

 

继承

需求 统一管理各个模块工程junit依赖的版本

引用test范围的不能通过传递,所以必然会分散在各个模块工程中,容易造成版本不一致。

 

解决方式 将junit依赖同一提取到父工程中,在子工程中声明junit依赖时布置的版本后,以父工程的设定为准。

1创建一个maven工程为父工程,注意打包的方式pom

2将子工程的坐标与父工程相同的依赖消除

3在父工程中统一管理junit的版本

4子工程删除junit的版本。

5配置工程前,先安装父工程

子工程声明父工程

用dependencies中用parent标签声明父工程,而不用dependency标签,最好配置一个相对路径标签。

relativePath以当前文件为基准的父工程pom.xml文件的相对路径。

 

聚合

如果一个工程依赖其他的工程,但其他的工程没有安装,就要先一个一个安装其他工程,会很麻烦,所以可以通过聚合一键安装。

 

在一个总的工程配置聚合,及父工程中设置聚合。

添加modules标签,在其中设置module标签,及子工程的相对路径,父工程执行安装命令。

 

Deploy命令 部署到服务器 或者远程服务器上,运行。

执行前必须先执行打包命令,再执行部署命令。

 

自动部署

Build标签 配置当前工程构建中的特殊配置

finalName

plugins

   plugin标签中添加cargo,专门启动servlet容器

   configuration当前容器的配置

      container

   containerId tomcat的名字

   home

     type tomcat的状态

    home tomcat的位置

    properties 配置端口

executions配置插件在什么情况下执行。

 Phase生命周期install

  Goal插件的目标

在命令行执行 deploy

#1
设置tomcat权限
在conf目录下,找到tomcat-users.xml,添加用户
<role rolename="manager"/>  
<user username="tomcat" password="123456" roles="manager"/>  

#2 配置maven
conf目录下的setting.xml文件,在<servers>节点中添加tomcat下配置的用户信息 id可以任意
<server>
    <id>tomcat7</id>
    <username>tomcat</username>
    <password>123456</password>
</server>

#3 项目的pom.xml设置
在Web项目的pom.xml文件的<plugins>节点中,添加tomcat的maven插件,
<build>  
    <!-- 设置war包名称 -->    
    <finalName>${finalName}</finalName>  

    <plugins>    

        <!-- tomcat自动部署插件 -->    
        <plugin>    
            <groupId>org.codehaus.mojo</groupId>    
            <artifactId>tomcat-maven-plugin</artifactId>  
            <version>1.1</version>  
            <configuration>  
                <url>http://localhost:8080/manager</url>     
                <username>tomcat</username>     
                <password>123456</password>     
                <path>/${finalName}</path>  
            </configuration>  
        </plugin>  

    </plugins>  
  </build>  
 

Mavne查找依赖的方法

maven 你需的jar包名称 repository

比如我要做EJB,我要找jboss-j2ee.jar的Dependency

就在GOOGLE里输入

maven jboss-j2ee repository

在结果的第一条,进去你就可以在页面里找到下面这段

<dependency>
    <groupId>jboss</groupId>
    <artifactId>jboss-j2ee</artifactId>
    <version>4.0.2</version>
</dependency>

 

网站查找https://mvnrepository.com/

搜索相关的包

 

测试

用assertequal(预期的结果,测试的结果)

如果不相等抛出异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值