视频课程链接:http://edu.51cto.com/course/13014.html

Maven项目管理工具,主讲:汤小洋

一、Maven简介

1. 什么是Maven

​ Apache Maven是一个软件项目管理和构建工具,可以帮助我们创建和管理项目

​ 基于项目对象模型POM(Poject Object Model)的概念,帮助开发者构造一个项目的完整生命周期

​ 注:POM是Maven对一个项目的描述,是Maven的核心,一个POM其实就是一个XML文件

2. 为什么使用Maven

2.1 项目的管理工具

​ 项目规则很大时一定会将项目进行拆分,将一个项目拆分成多个模块,每个模块对应一个工程,多个工程之间存储依赖关系

​ 此时可以使用Maven的依赖管理机制,帮助我们在项目与项目之间建立依赖关系

2.2 jar包的管理工具

  • 通过仓库管理jar包

    多个项目可能会用到相同的jar包,每个项目都要导入jar包,太麻烦

    此时可以通过Maven,将jar包放到Maven仓库中,在项目中引用仓库中的jar包

  • 解决jar包的依赖

    jar包之间存储依赖关系,并且依赖层次很复杂,很难记住

    此时可以使用Maven,帮助我们自动解决jar包间的依赖关系

  • 自动下载jar包

    项目中使用的jar数据很多,自己下载并手动添加jar包

    此时可以使用Maven,帮助我们自动下载所有相关的jar包

2.3 自动化的构建工具

​ 构建过程:编译主代码——>编译测试代码——>执行单元测试——>生成测试报告——>打包——>部署

3. 术语

3.1 中央仓库

​ 是一个网络仓库,存储jar包和maven插件

​ http://repo.maven.apache.org/maven2

​ http://repo1.maven.org/maven2/

​ http://mvnrepository.com/

3.2 本地仓库

​ 从中央仓库下载的jar包的存放位置,也是一个仓库,只不过是存放在本地电脑上

3.3 镜像仓库

​ 对某一仓库做的镜像

​ 阿里云提供的 http://maven.aliyun.com/nexus/content/groups/public/

3.4 私服

​ 局域网内部搭建的maven服务器

4. 单词

​ repository 仓库

​ archetype 原型、骨架(模板)

​ artifact 手工制品,成品(项目/jar/war)

二、安装Maven

1. 下载安装包

​ maven 3.2.5版本要求jdk1.6,其后的版本要求jdk1.7

2. 解压缩

​ 解压到无中文、无空格,不需要安装

3. 配置环境变量

3.1 Windows

​ Maven依赖于JAVA_HOME

echo %JAVA_HOME%
echo $JAVA_HOME

​ Maven环境变量:

  • M2_HOME=Maven安装目录
  • PATH=原PATH;%M2_HOME%/bin

​ 测试:mvn -version

3.2 Linux/Mac OS

​ 编辑/home/soft01/.bashrc文件,在最后一行添加内容:

cd /home/soft01
vi .bashrcexport M2_HOME=/home/soft01/maven/apache-maven-3.2.5export PATH=$PATH:$M2_HOME/bin

​ 使修改立即生效:

source .bashrc

​ 测试:mvn -version

​ 成功的界面:

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-15T01:29:23+08:00)
Maven home: /home/soft01/maven/apache-maven-3.2.5
Java version: 1.7.0_80, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-7-oracle/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.16.0-30-generic", arch: "i386", family: "unix"

4. 配置本地仓库

4.1 本地仓库的默认位置

​ ~/.m2/repository

4.2 修改本地仓库的位置

​ 编辑conf/setting.xml

<localRepository>D:\maven\maven-repo</localRepository>

​ 测试:

cd maven/maven-projects
mvn archetype:generate  #创建maven项目

​ 提示:

  • 选择创建项目时使用的模板archetype:按回车
  • 输入groupId,一般为组织域名反向+项目名:com.itany.ums
  • 输入artifactId:test
  • 版本:按回车
  • 包名:按回车
  • 确认:按回车

5. 配置镜像仓库

​ 编辑conf/setting.xml

<mirrors>   <mirror><id>aliyun</id><mirrorOf>*</mirrorOf> <!-- 所有访问都使用该镜像仓库 --><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>
</mirrors>

6. 配置Maven的JDK版本

​ 默认使用maven创建的项目使用的是jdk1.5

​ 修改maven默认使用的jdk版本,编辑conf/setting.xml,在profiles标签中添加如下内容:

<profile><id>jdk‐1.7</id><activation><activeByDefault>true</activeByDefault><jdk>1.7</jdk></activation><properties><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion></properties>
</profile>

三、创建Maven项目

1. Java项目的创建

1.1 目录结构

​ Java工程约定的目录结构如下:

|-项目名称|-src  //程序代码|-main //程序主代码|-java //源代码|-用于存放源代码,相当于传统项目的src,如com.itany.usm.dao.UserDao|-resources //配置文件|-用于存放配置文件|-test //测试代码,目录结构与main中一样|-java|-resources|-pom.xml  //maven核心配置文件

1.2 基本操作

​ 步骤:

  1. 创建Java项目

    mvn archetype:generate

    指定的信息如下:

    archetype:(maven-archetype-quickstart) #使用骨架创建java项目
    groupId:com.itany.study #指定组织域名反向+项目名
    artifactId:sms #指定模块名称
    version:1.0.1 #版本
    package:com.itany.study #包名
  2. 执行maven操作

    cd sms  #先切换到项目所在的目录
    mvn compile
    mvn clean compile test #可以同时执行多个命令

1.3 自定义Java类

2. Web项目的创建

1.1 目录结构

​ Web项目的约定目录结构如下:

|-项目名称|-src  //程序代码|-main //程序主代码|-java //源代码|-用于存放源代码,相当于传统项目的src,如com.itany.usm.dao.UserDao|-resources //配置文件|-用于存放配置文件|-webapp //网站根目录,相当于传统web项目的WebRoot|-WEB-INF|-web.xml|-test //测试代码,目录结构与main中一样|-java|-resources|-pom.xml  //maven核心配置文件    

1.2 基本操作

​ 步骤:

  1. 创建web项目

    mvn archetype:generate

    指定的信息如下:

    archetype:(maven-archetype-webapp) #使用模板创建web项目
    .....
  2. 执行maven操作

    mvn clean compile package
  3. 发布

    方式1:使用外部的tomcat

    ​ 将shop.war包复制到webapps目录下,然后启动tomcat

    cd tomcat.../bin
    ./startup.sh

    方式2:使用maven的tomcat插件

    mvn tomcat:run
  4. 访问

    http://localhost:8080/shop

四、Maven命令

1. 常用命令

命令 作用 描述
archetype 创建maven项目 根据模板生成项目骨架
clean 清理 删除target目录
compile 编译 将main中的源代码编译成字节码,放在target/classes目录下
test 测试 执行测试类(使用JUnit),并生成测试报告
package 打包 将java项目打包成jar文件,将web项目打包成war文件,放在target目录下
install 安装 将项目的jar包安装到本地仓库中,供其他项目使用
deploy 发布/安装 将项目的jar包安装到中央仓库中,供其他项目使用,需要账户和密码(了解)
site 生成站点 生成关于项目介绍的网页

注意:

  • 所有的命令都要跟在mvn的后面,如mvn archetype
  • 所有的命令都必须在某个项目的根目录
  • 多个命令可以一起执行

2. 生命周期

​ 一个项目的构建build的过程通常包括:清理、编译、测试、打包、集成测试、部署等

​ Maven定义了三套生命周期:clean、default、site

​ 每个生命周期之间是互相独立,每个生命周期内都包含多个阶段,这些阶段是有顺序的,后续的阶段必须等待前面的阶段执行后才能执行

​ default生命周期包含:compile、test、package

五、在IDE中使用Maven

1.IDE工具

  • MyEclipse

    集成Maven插件

  • Eclipse

    Eclipse For Java EE

  • IDEA

    集成Maven插件

2. MyEclipse

2.1 配置maven

​ Installations

​ User Settings

2.2 创建maven项目

​ New——>Maven Project——>archetype

3. Eclipse

4. IDEA

4.1 配置maven

  • 指定maven安装目录和配置文件
  • 自动更新maven项目:勾选Import Maven projects automatically

4.2 创建maven项目

​ New Module——>Maven——>勾选Create from archetype

4.3 执行maven操作

​ Maven Projects 显示所有Maven项目

​ 执行生命周期

​ 自定义Maven操作

4.4 目录的类型

​ IDEA中目录是分类型的,常用的四种:

  • Sources Root 主代码的目录 src/main/java

  • Test Source Root 测试代码的目录 src/test/java

  • Resources Root 主代码所需资源的目录 src/main/resources

  • Test Resources Root 测试代码所需资源的目录 src/test/resources

    注:在IDEA中默认创建的目录都是普通的Directory,创建后需要设置目录的类型

转载于:https://blog.51cto.com/12402007/2154869

Maven使用详解视频课程——笔记(一)相关推荐

  1. C/C++Win32编程基础详解视频下载

    课题视频:C/C++Win32编程基础详解 视频知识:win32窗口的创建 windows事件机制 主讲:择善Uncle老师 学习交流群:386620625 验证码:625 ------------- ...

  2. 2接口详解_TS入门笔记2——TS接口进阶详解

    TS入门笔记--TS接口进阶详解 一.为什么需要接口? let obj:object; // 定义了一个只能保存对象的变量 // obj = 1; // obj = "123"; ...

  3. 《Node.js开发实战详解》学习笔记

    <Node.js开发实战详解>学习笔记 --持续更新中 一.NodeJS设计模式 1 . 单例模式 顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直 ...

  4. java之yield(),sleep(),wait()区别详解-备忘笔记

    java之yield(),sleep(),wait()区别详解-备忘笔记 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如 ...

  5. TCPIP详解Protocol 读书笔记(八) Traceroute程序

    TCP/IP详解:Protocol 读书笔记(八) Chapter8 Traceroute程序 文章目录 TCP/IP详解:Protocol 读书笔记(八) Chapter8 Traceroute程序 ...

  6. 详解视频封装格式之MP4

    在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式.在上一篇文章(详解视频封装格式之FLV)中重点剖析了FLV格式.在这篇文章中,我们重点剖析一下MP4这种视频封装格式 ...

  7. TCPIP详解Protocol 读书笔记(三) IP协议讲解

    TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...

  8. Maven打包详解(“There are test failures”)

    Maven打包详解("There are test failures") 以下操作都是在IDEA软件内进行的. 第一步:idea界面中选择右边的Maven projects 界面: ...

  9. 初出茅庐的小李第3篇博客《5G物联网及NB-IoT技术详解》读书笔记1

    初出茅庐的小李第3篇博客 <5G物联网及NB-IoT技术详解>读书笔记1 在Mculover666那里白嫖了一本书,不要问我咋白嫖的,我也不知道- 为什么要写这样的笔记? 因为我白嫖的时候 ...

最新文章

  1. hdu 1075 (字典树映射)
  2. ubuntu mysql 远程连接问题解决方法
  3. 因缺失log4j.properties 配置文件导致flume无法正常启动。
  4. 接口与继承动手动脑整理
  5. js中document.write()使用方法
  6. dataframe筛选某列的单元格等于某个值的一行数据
  7. 2017.10.13java上机出现中的问题
  8. Java基础——类加载机制
  9. 区分大小屏幕_VESA持续推动DisplayHDR认证计划,你的屏幕属于何种等级吗?
  10. pajek软件使用方法_使用Jco远程连接SAP软件系统方法
  11. python—装饰器
  12. python flask高级编程之restful_python Flask实现restful api service
  13. 数据库用户管理(增删改查,即CRUD)
  14. Undefined exploded archive location(在myeclipse中TOMCAT不能发布程序。)
  15. 铺铜规则在哪设定_干货丨PCB layout结合生产设计必须遵循这六大规则!
  16. 138译码器的工作原理
  17. 螺钉螺母匹配问题---快速排序
  18. 高校智能DNS解析技术总结分析
  19. win10重置系统后右键一直转圈,解决鼠标右键一直转圈问题
  20. python父亲节祝福_关于父亲节走心文案 父亲节文案朋友圈

热门文章

  1. mysql lock scope_scope_lock模式详解
  2. httpd是mysql_在Centos下安装httpd、php、Mysql并配置(转载)
  3. kinana 清空索引数据_(Elasticsearch)实战Elasticseartch、Logstash、Kibana
  4. android上传视频 断点续传,断点续传上传
  5. 广东第二师范学院计算机网络试题,韩山师范学院期末计算机考题2.doc
  6. 【阿里云课程】注意力机制原理,应用与设计
  7. 【Python进阶】你真的明白NumPy中的ndarray吗?
  8. 【知识星球】动态推理网络结构上新,不是所有的网络都是不变的
  9. python各种模块的使用
  10. 福大软工1816:项目测评