Maven的使用《一》之环境配置和概念
来源:互联网 发布:vod点播软件 编辑:程序博客网 时间:2024/06/04 18:58
问题?maven是什么,作用是什么,怎么用,达到怎样的一个目的?
1.定义
现在几乎Maven已经成为了所有Java开源项目的标配,Struts、Hibernate、 Ehcache等知名的开源项目都使用Maven进行管理。国内也有越来越多的知名的软件公司开始使用Maven管理他们的项目,如阿里巴巴和淘宝。
struts2-core-2.3.14.2.jar\META-INF\maven\org.apache.struts\struts2-core\pom.xml
hibernate3.jar\ hibernate-distribution-3.5.6-Final.pom
Maven——这一Java社区事实标准的项目管理工具,能帮你从琐碎的手工劳动中解脱出来,帮你规范整个组织的构建系统。不仅如此,它还有依赖管理、自动生成项目站点等超酷的特性。每天都有数以万计的开发者在访问中央仓库以获取他们需要的依赖。
Maven:翻译为“专家”或“内行”。
Maven是跨平台的项目管理工具。作为Apache组织中的一个颇为成功的开源项目,主要服务于基于java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。
2.作用
(1):自动构建(傻瓜化,高度自动化,一步构建)
(2):依赖管理(自动下载相关的jar包,统一依赖管理)
(3):项目信息管理(项目信息、开发人员信息、开发者信息,文档自动生成)
3.主要内容(理解)
(1)为什么要使用Maven
理由:普通的eclipse或者myeclispe项目都需要经过手工操作多次编译、测试、部署等独立的工作,而且每个人的IDE代码都不同,同样的代码换个地方运行就会出错。
Maven拥有约定,知道你的代码在哪里,放到哪里去拥有一个生命周期,例如执行mvn install 就可以自动执行编译、测试、打包等构件过程只需要定义一个pom.xml,然后把源代码放到默认的目录,Maven帮你处理其他的事情拥有依赖管理,仓库管理.
(2)Maven安装与配置
(已经下载好的最新版:点击下载包链接 Maven官网下载包:点击官网链接)
安装配置:
了解maven包中的结构:
检测是否安装成功:
初始化配置
Maven的约定:
(3)第一个Maven项目
用maven来做:
基本项目,就是maven的约定:
第二步:在src/main/java/cn/itcast/maven目录下新建文件Hello.java
<span style="font-family:Microsoft YaHei;font-size:18px;">package cn.itcast.maven;public class Hello {public String sayHello(String name){return "Hello "+name+"!";}}</span>
第三步:在/src/test/java/cn/itcast/maven目录下新建测试文件HelloTest.java
<span style="font-family:Microsoft YaHei;font-size:18px;">package cn.itcast.maven;import org.junit.Test;import static junit.framework.Assert.*;public class HelloTest {@Testpublic void testHello(){Hello hello = new Hello();String results = hello.sayHello("litingwei");assertEquals("Hello litingwei!",results);}}</span>
第四步:在项目Hello根目录建立pom.xml(指明我这是一个maven项目,不管是告诉谁)
<span style="font-family:Microsoft YaHei;font-size:18px;"><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> <groupId>cn.itcast.maven</groupId><!-- 包 --> <artifactId>Hello</artifactId><!-- 资源项目名 --> <version>0.0.1-SNAPSHOT</version><!-- 版本号 --> <name>Hello</name><!-- 打包项目名 --> <dependencies><!-- 依赖功能 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency></dependencies></project></span>
测试:
注意看D:\javaenv\apache-maven-3.0.5\repository\org\apache\maven\plugins目录的变化
a)打开cmd命令行,必须要进入Hello项目根目录执行 mvn compile命令,查看根目录变化
b)cmd 中继续录入mvn clean命令,然后再次查看根目录变化
c)cmd 中录入 mvn clean compile命令, 查看根目录变化
d)cmd 中录入 mvn clean test命令,查看根目录变化
e)mvn install 安装命令
f)cmd 中录入 mvn clean package命令,查看根目录变化
Run Result:
(4)第二个Maven项目
第二个跟第一个差不多,也是先建立maven约定的项目,然后加java文件及pom.xml告知文件。(可以直接复制,然后修改文件)
第七步:在项目HelloFriend根目录建立pom.xml
<span style="font-family:Microsoft YaHei;font-size:18px;"><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> <groupId>cn.itcast.maven</groupId> <artifactId>HelloFriend</artifactId> <version>0.0.1-SNAPSHOT</version> <name>HelloFriend</name> <dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.9</version><scope>test</scope></dependency><dependency><!-- 这是maven的依赖功能,前一个项目是依赖jar包,而这个是依赖前一个项目的打包好的jar包,这样在以后开发过程中,不会因为个人出现个人jar包不同而出现错误的问题。--><groupId>cn.itcast.maven</groupId><artifactId>Hello</artifactId><version>0.0.1-SNAPSHOT</version><scope>compile</scope></dependency></dependencies></project></span>
第八步:在src/main/java/cn/itcast/maven目录下新建文件HelloFriend.java
<span style="font-family:Microsoft YaHei;font-size:18px;">package cn.itcast.maven;import cn.itcast.maven.Hello;public class HelloFriend {public String sayHelloToFriend(String name){Hello hello = new Hello();String str = hello.sayHello(name)+" I am "+this.getMyName();System.out.println(str);return str;}public String getMyName(){return "John";}}</span>
第九步:在/src/test/java/cn/itcast/maven目录下新建测试文件HelloFriendTest.java
<span style="font-family:Microsoft YaHei;font-size:18px;">package cn.itcast.maven;import static junit.framework.Assert.assertEquals;import org.junit.Test;import cn.itcast.maven.Hello;public class HelloFriendTest {@Testpublic void tesHelloFriend(){HelloFriend helloFriend = new HelloFriend();String results = helloFriend.sayHelloToFriend("litingwei");assertEquals("Hello litingwei! I am John",results);}}</span>
a)先执行下mvn clean看看环境是否正确,如果正确的话,说明环境没问题。
b)在HelloFriend目录下执行命令mvn package(这里就发挥了maven的依赖功能了,他依赖了第一个项目的jar包)系统报错说没有找到依赖(没有jar包的时候)
c)需要重新构建Hello第一个项目并安装到数据仓库,在命令行Hello根目录下执行mvn compile test package
run result 成功(一样也会自动生成target文件,里面也有打包好的jar包文件)
(5)Maven相关概念介绍
1.*********坐标
Maven坐标主要组成(在pom.xml文件汇总)
groupId:定义当前Maven项目隶属项目,【包】
artifactId:定义实际项目中的一个模块,【模块】
version:定义当前项目的当前版本,【版本】
packaging:定义该项目的打包方式,默认jar,还可以是war、jar、ear
Maven为什么使用坐标?
Maven世界拥有大量构建,我们需要找一个用来唯一标识一个构建的统一规范
目的:拥有了统一规范,就可以把查找工作交给机器,默认查找jar包
也就是说在其他项目中依赖它时,能找到它。
2.依赖管理
3.仓库管理(用来统一存储所有Maven共享构建的位置就是仓库)
前面我们提到了,仓库的问题,因为maven是一个统一管理项目的一个工具,jar包这些都是归它统一管理的。那么用到jar包的时候,自然要它来寻找了。前面我们搭建环境的时候已经建立了一个本地仓库,所以他的查找方式应该是:
本地仓库----->远程仓库(如中国的镜像网或局域网开的服务器)----->中央仓库(maven默认项)
私服:是一种特殊的远程仓库,它是架设在局域网内的仓库
镜像:用来替代中央仓库,速度一般比中央仓库快
4.******maven生命周期管理
何为生命周期?
Maven生命周期就是为了对所有的构建过程进行抽象和统一
包括项目清理,初始化,编译,打包,测试,部署等几乎所有构建步骤
Maven Lifecycle 三大生命周期“相互独立”
clean:清理项目的 pre-clean 、clean、post-clean
{
Clean Lifecycle 生命周期:
pre-clean 执行一些需要在clean之前完成的工作
clean 移除所有上一次构建生成的文件
post-clean 执行一些需要在clean之后立刻完成的工作
mvn clean 中的clean就是上面的clean,在一个生命周期中,运行某个阶段的时候,它之前的所有阶段都会被运行,也就是说 ,mvn clean 等同于 mvn pre-clean clean
如果我们运行 mvn post-clean ,那么 pre-clean,clean 都会被运行。
这是Maven很重要的一个规则,可以大大简化命令行的输入。
}
default:构建项目的【重点】
{
pre-site 执行一些需要在生成站点文档之前完成的工作
site 生成项目的站点文档
post-site 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
site-deploy 将生成的站点文档部署到特定的服务器上
}
site:生成项目站点的 site、post-site、site-deploy
{
Default生命周期Default生命周期是Maven生命周期中最重要的一个,绝大部分工作都发生在这个生命周期中。
只需要掌握绿色线命令
}
它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。
当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。
mvn test clean能执行吗?显然是可以的,但是逻辑错误
5.插件管理
Maven的核心仅仅定义了抽象的生命周期,具体的任务都是交由插件完成的,在本地仓库中可以看到这些插件
\apache-maven-3.0.5\repository\org\apache\maven
- Maven的使用《一》之环境配置和概念
- Maven之环境配置(一)
- [maven教程] maven的环境配置和使用
- Maven 学习一:maven环境的配置
- Maven概念和在本地使用maven(一)
- (一)maven项目的环境配置
- Maven相关配置和概念
- Maven使用笔记之Maven的配置
- Maven实战之正式环境和测试环境配置分离
- Maven的下载和环境配置
- Maven的下载和环境配置
- Maven的配置和使用
- maven的配置和使用
- Maven的配置和使用
- tomcat + j2ee + MyEclipse 的环境配置和使用(一)
- 【Maven】Maven系列(一)——环境安装配置和新建maven项目
- Maven 环境的配置
- Maven 环境的配置
- VS2015 xamarin android axml 文件添加智能提示
- 堆 栈
- Android RGB颜色查询对照表
- POJ 1258 Agri-Net
- 运行机制归档
- Maven的使用《一》之环境配置和概念
- c++中cin,cin.get和cin.getline比较
- [转]Ubuntu系统启动报错:The system is running in low-graphics mode
- 二叉树的镜像
- python-MySQL学习笔记-第五章-利用Connector/Python来修改数据库
- Linux下LAMP服务搭建
- Ubuntu 安装mysql和navicat、DBeaver
- Android Studio下jni应用
- opencv漫水填充算法