您的位置:首页 > 其它

Maven学习记录(1)

2015-11-10 23:14 232 查看

一、Maven的作用

1.项目模块管理

  一个项目可能是由多个模块构成,使maven来管理多个模块。

2.依赖关系管理

  当不使用maven时,每次构建新的项目必须将许多jar包添加到classpath中,如果漏了某个jar包都会报错。而使用maven之后可以在一个pom.xml文件中管理jar包。修改和替换都很方便。

3.项目构建(摘自Maven生命周期详解)  

Maven有三个生命周期,每个生命周期由一组阶段组成。生命周期之间相互独立,可以单独调用。而生命周期内的阶段则是相互依赖的:

Clean Lifecycle 在进行真正的构建之前进行一些清理工作。

Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。

Site Lifecycle 生成项目报告,站点,发布站点。

我再次强调一下它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。

二、Maven的使用

1.Maven目录结构(摘自‘孤傲苍狼’博客)

MavenProjectRoot(项目根目录)
|----src
| |----main
| | |----java ——存放项目的.java文件
| | |----resources ——存放项目资源文件,如spring, hibernate配置文件
| |----test
| | |----java ——存放所有测试.java文件,如JUnit测试类
| | |----resources ——存放项目资源文件,如spring, hibernate配置文件
|----target ——项目输出位置
|----pom.xml ----用于标识该项目是一个Maven项目

2.手动创建Maven项目

Maven遵循约定大于配置的原则。只要符合Maven规定的目录结构,就可以说是一个maven项目。学习Maven时手动创建一个Maven结构是一个不错的实践。

3.pom.xml文件

pom.xml最简单的结构是这样的

<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd"> <!--项目信息-->
<modelVersion>4.0.0</modelVersion>
<groupId>com.thunder.testproject</groupId>
<artifactId>hello-world</artifactId>
<version>1.0-SNAPSHOT</version>
</project>


View Code
project:根节点元素,他还声明了一些与pom相关的命名空间和xsd文件,虽然这些不是必需的。但是它们可以使一些IDE工具帮助我们快速编辑POM文件。

modelVersion:指定当前POM模型版本,对于Maven2和Maven3来说,必须是4.0.0。

groupId:定义项目属于哪个组,一般的格式为->反写的公司网址.项目名

artifactId:定义了属于项目组的哪一个模块,一般为->项目名.模块名

version:版本,SNAPSHOT是快照的意思,意为正在开发的版本。

以上这些元素是构成pom的最基础的元素,groupId:artifactId:version可以看做一个坐标(coordinate),“坐标”可以唯一确定一个项目,它标注了项目在“仓库”中的位置。

又引出了”仓库”(repository)这个东西,当我们“构建”项目的时候,Maven会分析pom.xml中的配置,如果在“本地仓库”中找不到该“坐标”定位的项目,则会去“中央仓库”中下载。

“中央仓库”:存放了当今大部分流行的java开源项目,但由于“来自东方的神秘力量”的限制,国内访问该仓库可能出现链接问题,此时可以使用“镜像仓库”。

4.Maven命令

Maven生命周期的各个阶段会绑定一些插件,我们输入生命周期下的阶段,然后会按顺序执行绑定的插件。

创建了一个maven项目结构之后,可以将当前目录切到Maven项目下,然后执行mvn compile

之后会自动搜索src/main/java中的java文件,编译之后放到target/classes中
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: