MAVEN学习之旅
来源:互联网 发布:nba比赛球员数据 编辑:程序博客网 时间:2024/06/04 19:41
由于最近工作学习,总是能碰到Maven的使用。在项目中管理一下代码的SVN和版本控制中,经常发现一些同事对MAVEN的使用掌握并不是特别清楚。经常会导致问题。这篇文章不是一个全面的Maven解析,而是一个简单的介绍,整理了网上一些资料加上自己平时工作中的一些体验和学习总结,基本能满足日常工作所需,如果对MAVEN感兴趣可以参考《MAVEN权威指南》这本书。
一、Maven的基本概念
Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。
1.1、项目构建
项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。
理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。
1.2、依赖管理
依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。
1.3、使用Maven的好处
Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。
Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程
只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情
使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。
1.4测试驱动
Maven是测试驱动的开发思路,因此工程创建初期,就包含两个文件夹,main和test。一个用于放置开发的java文件,一个用于写test单元测试。这样每次开发的时候,提前设计单元测试,就能帮助减少BUG。
二、Maven下载
下载地址:http://maven.apache.org/download.cgi
下载完成后,得到一个压缩包,解压,可以看到maven的组成目录
Maven目录分析
- bin:含有mvn运行的脚本
- boot:含有plexus-classworlds类加载器框架
- conf:含有settings.xml配置文件
- lib:含有Maven运行时所需要的java类库
- LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍
三、Maven安装
1、首先要确保电脑上已经安装了JDK(要jdk 1.6+的版本),配置好JDK的环境变量,使用如下的两个命令检查检查JDK安装的情况。
1 Echo %JAVA_HOME%2 Java -version
2、对apache-maven-3.2.3-bin.zip进行解压缩
对apache-maven-3.2.3-bin.zip进行解压缩,例如解压到如下目录(解压目录最好不要有中文)
3、设置系统环境变量:MAVEN_HOME
4、设置环境变量Path,将%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开,如下图所示:
%MAVEN_HOME%\bin代表的就是"E:\apache-maven-3.2.3\bin"目录
5、验证Maven安装是否成功
打开cmd窗口
输入"mvn –v"命令 查看Maven的相关信息,如下图所示:
能够出现这样的信息就说明Maven的安装已经成功了。
6、设置MAVEN_OPTS环境变量(可选配置)
由于Maven命令实际上是执行了Java命令,所以可以通过JAVA命令参数的方式来设置MAVEN运行参数。MAVEN_OPTS环境变量正是用于此用途
MAVEN_OPTS
-Xms128m -Xmx512m,分别设置JVM的最小和最大内存,如下图所示:
四、Maven的简单使用
4.1、Maven项目的目录约定
MavenProjectRoot(项目根目录)
|----src
| |----main
| | |----java ——存放项目的.java文件
| | |----resources ——存放项目资源文件,如spring, hibernate配置文件
| |----test
| | |----java ——存放所有测试.java文件,如JUnit测试类
| | |----resources ——存放项目资源文件,如spring, hibernate配置文件
|----target ——项目输出位置
|----pom.xml ----用于标识该项目是一个Maven项目
4.2、POM文件解析
1、创建项目根文件夹,例如Maven01
2、在Maven01文件夹中创建“pom.xml”文件,如下图所示:
pom.xml文件中的内容如下:
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 5 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 6 <!--所有的Maven项目都必须配置这四个配置项--> 7 <modelVersion>4.0.0</modelVersion> 8 <!--groupId指的是项目名的项目组,默认就是包名--> 9 <groupId>cn.gacl.maven.hello</groupId>10 <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->11 <artifactId>hello-first</artifactId>12 <!--version指的是版本,这里使用的是Maven的快照版本-->13 <version>SNAPSHOT-0.0.1</version>14 </project>
groupId:所述的项目名称,由于有的项目并不是一个jar包构成的,而是由很多的jar包组成的。因此这个groupId就是整个项目的名称。
artifactId:包的名称。
version:版本号。
packaging:包的类型,一般都是jar,也可以是war之类的。如果不填,默认就是jar。
name和url,一个是名称,一个是maven的地址。主要就是上面的几个参数。
五:关于MAVEN常见的指令
MAVEN中有仓库的概念,用来存放JAR包,其中包括中央仓库,远程仓库和本地仓库
中央仓库:是MAVEN开发者准备好的JAR包,我们只需要在POM文件中添加对应的POM格式就可以实现自动下载了
远程仓库:是项目中共享的项目应用的JAR包及项目各个模块之间的依赖
本地仓库:对应的是本地磁盘对应的repository文件夹,其中存放着你项目中更新依赖下载下来的项目依赖及JAR包
常见的MAVEN指令包括:
mvn clean:清楚项目路径下target文件下的WAR包和.class文件
mvn compile:编译对应模块的src中的.java文件 生成.class文件
mvn install:将本地代码的依赖及模块安装到本地maven库中
mvn deploy:上传maven依赖到远程仓库中
mvn package:将编译好的.class文件打包成jar包或war包
build:是 m2eclipse这个插件自己创造的概念,需要你来配置到底需要执行什么命令
通过以上的了解我觉得应该满足实际项目开发中的应用了,如果还想有更深入的了解,分享一篇关于maven比较全面的专栏,地位是:
http://blog.csdn.net/column/details/yuguiyang-maven.html?&page=1
- MAVEN学习之旅
- Maven 学习之旅-maven的安装
- Maven学习之初识Maven
- 【Maven学习】之 初探
- Maven学习之路
- maven之学习之路(-)
- 学习springmcv之旅 最后改名 1.学习apache maven
- Maven学习三之新建maven项目
- Maven学习之 安装Maven Ubuntu
- maven学习之二初学maven
- Maven学习笔记之maven的生命周期
- Maven学习之搭建Maven环境 (一)
- Maven学习笔记之Maven坐标依赖
- Maven学习3之eclipse安装maven
- maven学习之路 一:maven 安装
- 学习Maven之Properties Maven Plugin
- 学习Maven之Properties Maven Plugin
- Maven学习笔记之十九:Maven仓库(maven仓库分类)
- Linux线程编程
- velocity基础教程--1.标准使用
- 安卓启动引导页,很有个性的安卓启动页 可以判断是不是第一次启动
- [NOIP模拟题][高效算法设计][建模][BFS][记忆化搜索]
- css3 渐变效果
- MAVEN学习之旅
- 2分钟使用mybatisGenerator自动生成dao和mapper文件——使用cmd命令行
- Jquery选择器的基本选择器
- 关于eventbus报错its super classes have no public methods with the @Subscribe的问题
- android基础_第三天
- MAC 新建文本文档
- 架构师需要了解的Paxos原理、历程及实战
- 对封装、继承、多态、抽象的理解
- 解决Apache 2.4.9提示You don’t have permission to access / on this server.