Maven使用详解视频课程——笔记(一)
视频课程链接: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 基本操作
步骤:
创建Java项目
mvn archetype:generate
指定的信息如下:
archetype:(maven-archetype-quickstart) #使用骨架创建java项目 groupId:com.itany.study #指定组织域名反向+项目名 artifactId:sms #指定模块名称 version:1.0.1 #版本 package:com.itany.study #包名
执行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 基本操作
步骤:
创建web项目
mvn archetype:generate
指定的信息如下:
archetype:(maven-archetype-webapp) #使用模板创建web项目 .....
执行maven操作
mvn clean compile package
发布
方式1:使用外部的tomcat
将shop.war包复制到webapps目录下,然后启动tomcat
cd tomcat.../bin ./startup.sh
方式2:使用maven的tomcat插件
mvn tomcat:run
访问
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使用详解视频课程——笔记(一)相关推荐
- C/C++Win32编程基础详解视频下载
课题视频:C/C++Win32编程基础详解 视频知识:win32窗口的创建 windows事件机制 主讲:择善Uncle老师 学习交流群:386620625 验证码:625 ------------- ...
- 2接口详解_TS入门笔记2——TS接口进阶详解
TS入门笔记--TS接口进阶详解 一.为什么需要接口? let obj:object; // 定义了一个只能保存对象的变量 // obj = 1; // obj = "123"; ...
- 《Node.js开发实战详解》学习笔记
<Node.js开发实战详解>学习笔记 --持续更新中 一.NodeJS设计模式 1 . 单例模式 顾名思义,单例就是保证一个类只有一个实例,实现的方法是,先判断实例是否存在,如果存在则直 ...
- java之yield(),sleep(),wait()区别详解-备忘笔记
java之yield(),sleep(),wait()区别详解-备忘笔记 1.sleep() 使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁.也就是说如 ...
- TCPIP详解Protocol 读书笔记(八) Traceroute程序
TCP/IP详解:Protocol 读书笔记(八) Chapter8 Traceroute程序 文章目录 TCP/IP详解:Protocol 读书笔记(八) Chapter8 Traceroute程序 ...
- 详解视频封装格式之MP4
在我之前的一篇文章(什么是视频封装格式和编码格式)中有整理了一下常见的视频封装格式.在上一篇文章(详解视频封装格式之FLV)中重点剖析了FLV格式.在这篇文章中,我们重点剖析一下MP4这种视频封装格式 ...
- TCPIP详解Protocol 读书笔记(三) IP协议讲解
TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 文章目录 TCP/IP详解:Protocol 读书笔记(三) Chapter3 IP:网际协议 IP协议 IP数据 ...
- Maven打包详解(“There are test failures”)
Maven打包详解("There are test failures") 以下操作都是在IDEA软件内进行的. 第一步:idea界面中选择右边的Maven projects 界面: ...
- 初出茅庐的小李第3篇博客《5G物联网及NB-IoT技术详解》读书笔记1
初出茅庐的小李第3篇博客 <5G物联网及NB-IoT技术详解>读书笔记1 在Mculover666那里白嫖了一本书,不要问我咋白嫖的,我也不知道- 为什么要写这样的笔记? 因为我白嫖的时候 ...
最新文章
- hdu 1075 (字典树映射)
- ubuntu mysql 远程连接问题解决方法
- 因缺失log4j.properties 配置文件导致flume无法正常启动。
- 接口与继承动手动脑整理
- js中document.write()使用方法
- dataframe筛选某列的单元格等于某个值的一行数据
- 2017.10.13java上机出现中的问题
- Java基础——类加载机制
- 区分大小屏幕_VESA持续推动DisplayHDR认证计划,你的屏幕属于何种等级吗?
- pajek软件使用方法_使用Jco远程连接SAP软件系统方法
- python—装饰器
- python flask高级编程之restful_python Flask实现restful api service
- 数据库用户管理(增删改查,即CRUD)
- Undefined exploded archive location(在myeclipse中TOMCAT不能发布程序。)
- 铺铜规则在哪设定_干货丨PCB layout结合生产设计必须遵循这六大规则!
- 138译码器的工作原理
- 螺钉螺母匹配问题---快速排序
- 高校智能DNS解析技术总结分析
- win10重置系统后右键一直转圈,解决鼠标右键一直转圈问题
- python父亲节祝福_关于父亲节走心文案 父亲节文案朋友圈
热门文章
- mysql lock scope_scope_lock模式详解
- httpd是mysql_在Centos下安装httpd、php、Mysql并配置(转载)
- kinana 清空索引数据_(Elasticsearch)实战Elasticseartch、Logstash、Kibana
- android上传视频 断点续传,断点续传上传
- 广东第二师范学院计算机网络试题,韩山师范学院期末计算机考题2.doc
- 【阿里云课程】注意力机制原理,应用与设计
- 【Python进阶】你真的明白NumPy中的ndarray吗?
- 【知识星球】动态推理网络结构上新,不是所有的网络都是不变的
- python各种模块的使用
- 福大软工1816:项目测评