Maven是目前用的最多的一个项目管理工具,它是Apache的一个开源工具。
下载最新的Maven组件可以到Apache的Maven官网下载:maven.apache.org。左侧找到Download选项下载最新的Maven包。

第一步,我们先下载Maven和配置环境变量

我们下载apache-maven-3.3.1-bin.zip这个版本,下载之后发现只有7.79M

如何安装呢?很简单,我们将安装目录设在D盘下,先把apache-maven-3.3.1-bin.zip压缩包拷贝到D盘下,然后解压(压缩包可删除可不删除)。

之后将我们的maven的安装路径拷贝到环境变量中:
新建一个M2_HOME,将Maven安装路径拷贝到下面
D:\apache-maven-3.3.1-bin\apache-maven-3.3.1

然后把maven文件夹的bin路径放置在path的变量值下:

我们现在就把Maven安装好了。我们启动控制台,使用命令提示符来操作Maven:
我们使用mvn -v指令就可以观察我们安装的maven的版本信息:

可以看到我们的maven版本信息,jdk版本,windows版本。

第二步,我们创建maven工程文件夹和pom配置文件:
我们现在自己平常使用的工作盘创建一个Maven工程文件夹(名为maven-mm01),然后创建一个名为pom.xml的XML文件:

我们写一下XML的标准头:

<?xml version="1.0" encoding="UTF-8"?>

然后加入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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  </project>

xmlns与xsi什么的都是Schema文件,是用来约束XML的写法的(这点在XML中有详细阐述)

接下来我们在<project></project>标签对中写maven配置的常用标签:
1.<groupId>…</groupId>
一般写组织名称,团体名称,项目名称

2.<artifactId>…</artifactId>
表示这一个项目的某一个具体模块

3.<version>…</version>
项目的版本

所以我们首先创建了这样一个pom文件:

<?xml  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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.edu.hpu.maven</groupId><artifactId>maven-mm01</artifactId><version>0.0.1-SNAPSHOP</version>
</project>

第三步,我们按照Maven的格式将maven文件夹完善:
在我们之前pom.xml所在的maven-mm01文件夹下创建一个src目录,用于存放源代码,然后我们创建两个文件夹main和test,然后我们在main文件夹中创建java文件夹,之后在其中创建一个HelloMaven.java文件,内容如下:

package cn.edu.hpu.maven;public class HelloMaven
{public String sayHello(String name){return "hello:"+name;}
}

然后创建cn/edu/hpu/maven文件夹,将HeloMaven.java文件放进去(要符合package的路径)

接下来我们在控制台中进入这个路径:

然后我们输入maven compile指令去编译Maven工程:

可以看到屏幕在不停的滚动,这是因为maven仅仅只是一个很小的工具,但是我们在操作的时候,它会根据我们的需求,从网络中下载它所需要的一些依赖、插件。下载完之后它会存在开发者电脑的某一个位置中。

看到这里我们就编译成功了maven

我们回到我们的maven-mm01文件夹中,发现我们多了一个target文件夹,里面有一个编译好的classes文件夹,里面有编译好的我们的HelloMaven.class。

按照这样的结构我们将类写完,它就会自动将这个类通过pom.xml配置文件的规范将其编译。

接下来我们继续在test中写,我们在test中创建一个java文件夹,里面创建cn/edu/hpu/maven文件夹,其中写一个TestHelloMaven.java文件:

package cn.edu.hpu.maven;
import org.junit.*;
import static org.junit.Assert.*;public class TestHelloMaven
{public void testSayHello(){HelloMaven hm=new HelloMaven();String str=hm.sayHello("maven");assertEquals(str,"hello:maven");}
}

其中assertEquals(str,"hello:maven");方法是junit4的断言方法,测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法),assertEquals断言两个对象相等,若不满足,方法抛出带有相应信息的错误。

我们可以看到,我们使用了junit的包,如果直接编译TestHelloMaven.java的话会报错:

说明我们导入的junit根本不知道这个包在哪(原来我们的jdk是有环境变量的,所以能够找到)
所以就要用到我们maven的特性了,我们在pom加入以下配置(junit的):

<?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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.edu.hpu.maven</groupId><artifactId>maven-mm01</artifactId><version>0.0.1-SNAPSHOP</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency></dependencies></project> 

我们再次进行编译:

发现不再报错!我们运行的测试结果也没有错误。

我们没有引入任何的jar包,没有将jar包导入classpath中,但是我们用maven的pom.xml中加入以上配置,就神奇的将我们的jar包放入到了classpath中。也利用这个jar包有效的将我们的代码编译。

这就是maven给我们的最直观的好处。我们只要把我们的项目放到maven要求的目录中,它就会自动根据pom文件来对我们的项目进行编译、测试、发布等操作。

有了maven,我们的一些繁琐的工作可以用maven全部自动完成。假设我们项目组使用了svn、github等版本控制工具,新来的员工从版本控制器上下载完工程之后,想让项目在自己的机器上跑起来,还需要配置tomcat服务器等乱七八糟的东西,但是有了maven,我们将项目从版本控制器上下载下来之后,它就会将项目自动打包发布到tomcat上,一切过程全部省去,这就是自动化的构建工具。

刚才我们使用了两个命令:
mvn compile自动编译指令,编译成功之后,会将我们的编译文件放在target/classes中。
mvn test自动测试指令,会生成3个测试报告,放在surefire-reports文件夹下,通过测试报告可以看到我们的测试结果。

我们还有一个命令,mvn clean,会将我们之前的编译状态清空,删除target文件夹。

另外一个命令,mvn package,它会将我们的工程编译、测试,然后运行package,最后它会将我们的项目打包成jar包:

我们创建第二个测试项目,将原来的项目直接拷过来,改一下名字为maven-mm02,然后修改一下pom.xml文件:

<?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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.edu.hpu.maven</groupId><artifactId>maven-mm02</artifactId><version>0.0.1-SNAPSHOP</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency></dependencies></project> 

我们的源代码在src中,我们的测试代码在test中,java文件在java文件夹中(这里是规范,不然maven无法自动编译)。

我们在main中创建一个java文件夹,里面创建cn/edu/hpu/maven/mm02文件夹,其中写一个Hello.java文件:

package cn.edu.hpu.maven.mm02;
import cn.edu.hpu.maven.HelloMaven;public class Hello
{public String say(String name){HelloMaven hm = new HelloMaven();return hm.sayHello(name);     }
}

我们用指令mvn compile来编译这个java文件,发现找不到HelloMaven这个类:

我们就又要发挥我们的pom.xml的作用了,我们在dependencies中加入<groupId>cn.edu.hpu.maven</groupId>:

<?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/maven-v4_0_0.xsd">  <modelVersion>4.0.0</modelVersion>  <groupId>cn.edu.hpu.maven</groupId><artifactId>maven-mm02</artifactId><version>0.0.1-SNAPSHOP</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version><scope>test</scope></dependency><dependency><groupId>cn.edu.hpu.maven</groupId><artifactId>maven-mm01</artifactId><version>0.0.1-SNAPSHOP</version></dependency></dependencies></project>

我们执行mvn compile,发现它报找不到jar包的错误:

原因是缺少maven-mm01工程的jar包,那么我们就把这个jar包引入。这时,我们回到maven-mm01项目,在其上运行mvn install指令:

安装完成之后,我们回到maven-mm02,这个时候其实jar包已经安装进来了(原因和仓库有关,这个jar包是mm01工程上传至仓库,然后mm02从仓库中取得mm01的jar包。关于仓库后面会有解释):
就是maven-mm01-0.0.1-SNAPSHOP.jar
运行mvn compile指令:

发现通过了!
而且已经编译成功:

我们同样只是在pom中写了上述的配置,就有效的完成了Hello的编译。这就是maven给我们的最大的帮助,我们可以把项目分成各个模块,我们把上个模块做好,将来各个项目需要这个模块的时候,在pom.xml中将这个模块引进进来,就可以直接用了。这是一个很好的醒目管理理念。

可以看到我们的大部分项目的模块都是重复的,我们使用maven就不用引入jar包,编译测试发布都不用我们操心。

对于maven,我们的这些操作都放在什么地方呢?我们的maven的这些jar包都是从哪里引进过来的呢?下面就引入了一个核心的概念,就是“仓库”。

我们下载下来的maven只是一个几M的工具,当我们用的时候,它就会去“仓库”中去寻找我们所需要的jar文件和仓库文件。当我们安装好maven后,“仓库”就会默认安装在windows系统(我用的是Win7)的C:/Users/${user.home}/.m2/repository路径中:

我们打开repository文件夹,发现我们之前在pom中配置的依赖jar包和插件全部都在这里:

其实我们可以通过maven安装文件中conf文件夹下的settings.xml来配置本地仓库:

<localRepository>/path/to/local/repo</localRepository>

当我们执行mvn compile指令的时候,它就会根据pom文件的dependencies来找到我们可能依赖的jar包,它发现如果这个jar包存在,它就会在仓库中将这个jar包引入至我们的工程,如果没有该jar包,maven就直接从网络中下载下来(下载都是在mvnrespitory.com这个网络中央仓库中取得)。

我们刚刚的mvn install指令,就会将我们的工程打包成jar包放入我们的“仓库”中。

我们下次来说一下安装maven的一些注意事项。

转载请注明出处:http://blog.csdn.net/acmman/article/details/50612410

【Maven由浅入深】1.maven初体验相关推荐

  1. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  2. sentinel接入网关应用_微服务初体验(三):集成Gateway网关和Sentinel限流

    前言 最近笔者在对微服务架构进行学习,参考了各种项目的技术文章.框架文档以及视频网站,最终选择使用Nacos+Dubbo+Gateway+Sentinel来搭建一个项目练手.其中Nacos作为服务的注 ...

  3. JavaWeb进阶之路:MyBatis初体验

    JavaWeb进阶之路:MyBatis初体验 1. 简介 1.1 什么是MyBatis MyBatis 是一款优秀的持久层框架. 它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几 ...

  4. 大数据Spark “蘑菇云”行动第103课:Hive源码大师之路第一步:Hive源码思考和解析初体验

    大数据Spark "蘑菇云"行动第103课:Hive源码大师之路第一步:Hive源码思考和解析初体验 老师上课使用的Hive源码下载地址:http://www-eu.apache. ...

  5. Java开发 - 单点登录初体验(Spring Security + JWT)

    目录​​​​​​​ 前言 为什么要登录 登录的种类 Cookie-Session Cookie-Session-local storage JWT令牌 几种登陆总结 用户身份认证与授权 创建工程 添加 ...

  6. 个推实人认证SDK使用初体验

    以下是一位开发者在集成个推实人认证SDK时的亲身经历: 概述: 在某次产品迭代中,公司项目要用到对用户身份证信息的实人认证,我作为移动端的新晋萌新,Team Leader 把这个光荣的任务交给我来集成 ...

  7. springboot初体验以及解决遇到的问题

    2020版本以及后面的设置 #后面配置maven同上 File -> new project settings -> settings for new projects idea的版本不用 ...

  8. Maven实战——常用Maven插件介绍

    http://www.infoq.com/cn/news/2011/04/xxb-maven-7-plugin 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任 ...

  9. 新版本IntelliJ IDEA 构建maven,并用Maven创建一个web项目

    之前都没试过用maven来管理过项目,但是手动找包导包确实不方便,于是今天用2016版的IDEA进行了maven的初尝试. 打开IDEA,创建新项目: 然后选择Maven,以及选择自己电脑的jdk: ...

  10. AndroidStudio初体验

    style="display: none;" frameborder="0"> 收藏成功 确定 收藏失败,请重新收藏 确定 查看所有私信查看所有通知 暂没 ...

最新文章

  1. Android FM模块学习之一 FM启动流程
  2. Linux下CMake简明教程
  3. TortoiseSVN status cache占用CPU高
  4. mysql innodb 并发 插入 慢_Innodb 锁机制——一次插入慢查询的排查
  5. Android开发 常用命令
  6. 让你的C程序更有效率的10种方法
  7. 归并排序 java 迭代_经典排序算法之归并排序(示例代码)
  8. js生日计算年龄_你知道用EXCEL可以从身份证中提取生日、性别、年龄、生肖吗?...
  9. 在每趟长途的HTML5挑运之后
  10. NodeJS管理利器 - pm2常用命令
  11. C、C++和C#区别概述
  12. Flex+BlazeDS+IntelliJ IDEA整合开发系列一之起步demo
  13. c# 整个工程(包括窗体工程)做成dll
  14. 福州大学数学与计算机科学学院 地址,福州大学数学与计算机科学学院导师介绍:陈神灿...
  15. android勾选控件_【Android 开发】:UI控件之复选框控件 CheckBox 的使用方法
  16. 规划设计计算机配置,平面设计电脑配置
  17. D盘根目录出现msdia80.dll
  18. JDK1.8 新特性
  19. shell编程之awk(数据筛选与处理)
  20. Android Studio连Bmob的巨坑

热门文章

  1. B2B电商平台--ChinaPay银联电子支付功能
  2. 分享几款PR常用插件
  3. NOIP2017 普及组题解
  4. linux中批量替换文本中字符串
  5. 《Linux启动过程分析》内核挂载根文件系统
  6. AI十大数据挖掘算法
  7. JQuery插件Fullpage说明文档
  8. Clover 驱动文件夹_四叶草Clover相关
  9. eclipse二进制编辑器插件
  10. 【交换机在江湖】第十四章 VLAN通信篇