maven简介及基础使用
一、Maven简介
Maven可译为“知识的积累”、“专家”,主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。
1、Maven—项目构建工具
帮助我们自动化构建过程,从清理、编译、测试到生成报告,再到打包部署。我们需要做的是使用Maven配置好项目,然后输入简单的命令,Maven会帮我们处理上上述任务。譬如我们进行测试,只需要遵循Maven的约定编写好测试用例,当我们运行构建的时候,这些测试便会自动进行。
Maven抽象了一个完整的构建生命周期模型,模型吸取了大量的其他构建脚本和工具的优点,总结了大量项目的实际需求,Maven还帮我们标准化构建过程。
2、Maven—项目依赖管理和项目信息管理工具
在这个开源时代,几乎任何java应用都会借用一些第三方的开源类库,这些类库都可以通过依赖的方式引入到项目中来。随着依赖的增多,版本不一致、冲突,依赖问题接踵而至。maven提供了一个优秀的解决方案,通过一个坐标系统准确的定位每一个构件(artifact),也就是通过一组坐标maven能够找到任何一个Java类库(如jar文件)。
maven还帮我们管理各个项目信息,项目描述、开发者列表、版本控制系统地址、许可证、缺陷管理系统地址等。maven还为Java开发者提供了一个免费的中央仓库,几乎可以找到任何的流行开源类库,帮我们自动下载构建。
下载jar包:maven项目会有一个pom.xml文件,在这个文件中,添加相应配置,maven会自动帮我们下载相应jar包。<dependencies>结点里,每配置一个 <dependency>
<groupId>org.springframework</groupId>项目名
<artifactId>spring-webmvc</artifactId>项目模块<version>3.0.5.RELEASE</version>项目版本
maven都会通过:项目名-项目模块-项目版本,在互联网上的代码库中下载相应jar包。
下载依赖:在maven的代码库中,每一个jar包也有自己的pom.xml文件,而这个文件里面也会有<dependency>配置,配置的jar包所依赖的其他jar包都会被maven自动下载下来。
二、Windows环境下Maven的安装和配置
1、检查JDK安装
在安装Maven之前,受限要确认已经正确安装了JDK。Maven可以运行在JDK1.4及以上版本。
项目 |
要求 |
JDK |
Maven 3.3 要求 JDK 1.7 或以上 |
打开Windows的命令行:
(1)运行echo %JAVA_HOME%命令,检查环境变量是否指向了正确的JDK目录
(2)运行java-version命令,尝试运行java命令
如果无法执行java命令,或者无法找到JAVA_HOME环境变量,就需要检查java是否安装,或者环境变量是否设置正确。
2、下载maven
下载地址:http://maven.apache.org/download.cgi ;
大家可以根据项目需求,下载合适的maven版本。
3、本地安装
将安装文件,解压到指定的目录中,如:D:\****\apache-maven-3.1.1 ;
设置环境变量,将maven安装到操作系统环境中;
我的电脑->属性->高级系统设置->环境变量 ,新建一个变量,名为MAVEN_HOME(可自定义),变量值为Maven的安装目录,如D:\****\apache-maven-3.1.1,点击确定。
接着在系统变量,找到Path变量,添加字符串“%MAVEN_HOME%\bin”到系统Path变量末尾(注:多个值之间分号隔开),点击确定。
打开Windows的命令行:
(1)运行echo %MAVEN_HOME%命令,检查环境变量是否指向了正确的Maven目录
(2)运行mvn-v命令,执行一条maven命令,检查Windows是否能找到正确的mvn执行脚本
三、创建Maven项目
以eclipse为例
File->New->Project,对话框中,选择Maven下面的Maven Project,点击Next。
在弹出的对话框中,选择默认(不要选择create a sample Project,那样我们就能使用Maven Archetype),点击Next,此时m2eclipse会提示我们选择一个Archetype,这里我们选择一个Archetype,这里选择maven-archetype-quickstart,点击Next按钮。
输入groupId、artifactId、version、package。
groupId为程序包名,artifactId为程序名,至此,工程创建完成。
四、编写POM
POM(Project object Model项目对象模型),定义了项目的基本信息,用于描述项目如何构建,声明项目依赖等。Maven项目的核心是pom.xml。
打开pom.xml添加测试项依赖库,配置工程,示例:
<?xml version="1.0"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.sogou.map</groupId>
<artifactId>parent</artifactId>
<version>2</version>
</parent> <groupId>com.sogou.com</groupId>
<artifactId>kubbo-nav</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>kubbo-nav</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sogou.map</groupId>
<artifactId>kubbo-all</artifactId>
<version>0.8</version>
</dependency>
</dependencies>
</project>
代码的第一行是XML头,指定了该xml文档的版本和编码方式。
紧接着是Project元素,Project是所有pom.xml的根元素,声明了一些pom相关的命名空间及xsd元素。
根元素下的第一个子元素,modelVersion指定了当前的pom模型的版本。
最重要的是包含groupId、artifactId、version的三行,定义了项目基本坐标,在maven中,任何的jar、pom或者war都是以基于这些基本坐标进行区分的。
a) groupId:定义了项目属于哪个组,这个组往往和项目所在组织或者公司有关。
b) artifactId:定义了当前的maven项目在组中唯一的ID。
c) Version:指定了项目当前的版本。
Maven能让项目对象模型最大程度的与代码相对独立,解耦,很大程度避免Java代码和POM代码的项目影响。
Maven项目默认的主代码目录是src/main/java,对应的默认测试代码目录是src/test/java。
项目中,使用Junit进行单元测试,首先要为项目添加Junit依赖,修改项目的POM代码。
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
代码中添加了dependencies元素,该元素下可以包含多个dependency元素以声明项目依赖。
这里添加了一个依赖,groupId是junit,artifactId是junit,version是4.1.2。groupId、artifactId、version,是项目的基本坐标,有了这段声明,maven就能自动下载Junit-4.12.jar包。
maven简介及基础使用的更多相关文章
- maven 简介
本书代码下载 大家可以从我的网站下载本书的代码:http://www.juvenxu.com/mvn-in-action/,也可以通过我的网站与我取得联系,欢迎大家与我交流任何关于本书的问题和关于Ma ...
- APP接口自动化测试JAVA+TestNG(二)之TestNG简介与基础实例
前言 继上篇环境篇后,本篇主要对TestNG进行介绍,给出最最基础的两个实例,通过本文后,学会并掌握TestNG测试用例的编写与运行,以及生成美化后的报告.下一篇为HTTP接口实战(国家气象局接口自动 ...
- 学习笔记-[Maven实战]-第一章:Maven简介
Maven简介: Maven 可翻译为:知识的积累,也可以翻译为"专家"或"内行". Maven 是一个跨平台的项目管理工具,是Apache组织中一个很成功的开 ...
- (一)《Maven实战》读书笔记 —— Maven简介
第一章:Maven简介 一.何为Maven? Maven这个词可以翻译为"知识的积累",本书将介绍Maven这一跨平台的项目管理工具.作为Apache组织中的一个个颇为成功的开源项 ...
- Maven 项目管理工具基础知识系列(一)
一.Maven 简介 Maven 中文意为 " 内行.专家 ",是 Apache 下的一个开源项目,属于纯 Java 开发,并且只是用来管理 Java项目的,它是一款项目管理工具, ...
- Maven 项目管理工具基础入门系列(二)
一.前言 在 Maven 项目管理工具基础知识系列(一) 这篇文章中,我们已经初步了解了 Maven,也知道了使用 Maven 作为项目管理工具的好处,特别是已经知道如何快速通过 Maven 构建 W ...
- OpenStack实践系列①openstack简介及基础环境部署
OpenStack实践系列①openstack简介及基础环境部署 一.OpenStack初探1.1 OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立.运 ...
- 2.JSR简介 - JavaEE基础系列
JSR, Java Specification Request, Java规范请求; 也有的地方翻译为Java规范提案. 在前面的文章 1. Java EE简介 - JavaEE基础系列中, 简要介绍 ...
- 爬虫开发7.scrapy框架简介和基础应用
scrapy框架简介和基础应用阅读量: 1432 scrapy 今日概要 scrapy框架介绍 环境安装 基础使用 今日详情 一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数 ...
随机推荐
- Android高效内存1:一张图片占用多少内存
在做内存优化的时候,我们发现除了解决内存泄露问题,剩下的就只有想办法减少真实的内存占用.而在App中,大部分内存可能被我们图片占用了,所以减少图片的内存占用可以带来直接的效果.本文就简单介绍一张图片到 ...
- Thinkphp 3.0-3.1版代码执行漏洞
近日360库带计划中播报的ThinkPHP扩展类库的漏洞已经查明原因:系官方扩展模式中的Lite精简模式中存在可能的漏洞(原先核心更新安全的时候 并没有更新模式扩展部分,现已更新).对于使用标准模式或 ...
- kali&BT安装好之后无法上网或者无法获得内网IP
大家都知道,要想进行内网渗透攻击,你必须要在那个内网里. 但是大家在Vmware里安装kali的时候,大多数用户为了方便,未选择桥接模式,而是选择了使用与本机共享的IP网络当然,这样能上网,但是你的虚 ...
- JavaScript中的数组
数组 (1).数组的定义 数组是值的有序集合 javascript数组是无类型的:数组元素可以是任意类型,并且同一个数组的不同元素也可能有不同的类型. 每个值叫做一个元素,而每个元素在数组中有一个位置 ...
- 二阶段项目所遇问题 如何实现php向js传输数据
首先当前页面做了一个双处理的界面,就是有PhP也有JS的处理界面. 上一个传值界面是一个PHP的传值,结果,在当前页面的JS中也要用到上一界面传的值,这时发现,PHP与JS就像是两个互相孤立的小岛,根 ...
- Javascript 严格模式use strict
一.概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:“严格模式”(strict mode).顾名思义,这种模式使得Javascript在更严格的条件下运行. 设立”严格模式”的目 ...
- Vulkan Tutorial 20 Vertex buffer creation
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 Introduction 在Vulkan中,缓冲区是内存的一块区域,该区域用于向显卡 ...
- loadrunner11的移动端性能测试之脚本录制
以前使用LR11录制过一个app的登录操作,这里记录一下 测试准备 硬件要求 1, 负载测试机一台(内存8G以上,cpu 1.5GHZ以上,存储空间20G以上)或两台以上(控制机和多个负载机). 2 ...
- 使用ConfuserEx加密混淆程序以及如何脱壳反编译
一,准备如下工具: ConfuserEx.UnConfuserEx.Fixer.ConfuserExStringDecryptor.ConfuserExSwitchKiller.de4dot.ILSp ...
- PHP中递归最详解释.
说到递归函数想必会有很多同学感到晕晕的,很难绕,容易绕错,那下面就让我来为大家详解一下. 首先,什么是递归函数呢? 1.所谓递归:指的是在函数内部,调用函数自身的操作.2.递归分两布:递(从最外层函数 ...