maven基础知识学习及插件的使用.docx
《maven基础知识学习及插件的使用.docx》由会员分享,可在线阅读,更多相关《maven基础知识学习及插件的使用.docx(130页珍藏版)》请在冰豆网上搜索。
maven基础知识学习及插件的使用
转自:
https:
//ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_overview.html5
Maven-概述5
Maven是什么?
5
Maven的历史5
Maven的目标5
约定优先于配置6
Maven-环境搭建6
系统要求6
第1步:
验证Java是否安装6
第2步:
配置JAVA环境7
第3步:
下载Maven安装文件8
第4步:
解压Maven安装文件8
第5步:
设置Maven的环境变量8
第6步:
添加Maven的bin目录到系统路径9
第7步:
验证Maven是否正确安装9
Maven-POM10
POM示例10
SuperPOM11
Maven-构建生命周期40
什么是构建生命周期?
41
Clean生命周期41
默认生命周期(或构建生命周期)45
Site生命周期51
Maven-构建配置文件55
什么是构建配置文件?
55
构建配置文件的类型56
配置文件激活56
配置文件激活示例56
显式配置文件激活57
通过Maven设置激活配置文件61
通过环境变量激活配置文件62
通过操作系统激活配置文件62
通过文件的存在或者缺失激活配置文件63
Maven-仓库64
什么是Maven仓库?
64
本地仓库64
中央仓库65
远程仓库65
Maven依赖搜索顺序66
Maven-插件67
什么是Maven插件?
67
插件类型67
示例68
Maven-创建项目71
Maven-构建和测试项目76
添加Java源文件79
Maven-外部依赖80
Maven-项目文档83
Maven-项目模板86
什么是Archetype?
86
使用项目模板86
创建好的项目89
创建好的POM.xml文件90
创建好的App.java文件91
创建好的AppTest.java文件92
Maven-快照93
什么是快照?
94
项目快照vs版本94
app-ui项目的pom.xml文件94
data-service项目的pom.xml文件95
Maven-自动化构建97
示例97
使用Maven99
将持续集成用于Maven103
Maven-管理依赖103
可传递性依赖发现103
依赖作用域(DependencyScope)104
依赖管理(DependencyManagement)104
Maven-自动化部署109
问题说明110
解决方法110
修改项目的POM.xml110
MavenRelease插件112
Maven-Web应用113
创建Web应用113
POM.xml文件115
构建Web应用116
部署Web应用118
测试Web应用118
转自:
https:
//ayayui.gitbooks.io/tutorialspoint-maven/content/book/maven_overview.html
Maven-概述
Maven是什么?
Maven是一种项目管理和理解工具。
Maven向开发者提供了一个完整的构建生命周期框架。
开发团队几乎不用花时间就可以使用自动化构建项目的基础框架,因为Maven使用了一套标准的目录结构和默认的构建生命周期。
在存在多个开发团队的场景中,Maven可以在很短的时间内按标准建立起工作方式。
因为大多数的项目配置简单并且可重用,Maven简化了开发者在创建报告,检查,构建和测试自动化配置中的工作。
Maven提供给开发者管理如下过程的方法:
∙项目构建(Builds)
∙文档(Documentation)
∙报告(Reporting)
∙项目依赖(Dependencies)
∙软件配置管理(SCMs)
∙发布(Releases)
∙分发(Distribution)
∙邮件列表(mailinglist)
总的来说,Maven简化和统一了项目构建的过程。
它无缝地处理项目编译,分发,文档,团队合作和其他任务,增加了任务处理的重用性,并可以处理大多数构建相关的任务。
Maven的历史
Maven最初是在JakartaTurbine项目中设计出来,用作简化项目构建步骤。
这个项目有若干子项目并且每个项目包含的ANT构建文件只有些许的差别。
项目中JAR包那时是检入到CVS中。
然后Apache组织开发了Maven ,它可以把多个项目一起构建,发布多项目信息,完成多项目部署,在多项目间共享JAR包并且帮助团队间一起合作。
Maven的目标
Maven主要的目标是提供给开发者
∙一种综合全面的模型,对项目来说可以重用,易于维护并且更容易理解
∙可以与这种声明式模型相互作用的插件或者工具
Maven项目结构和内容声明在一个xml文件中——pom.xml,称之为项目对象模型(POM)。
它是整个Maven系统的基本单元。
更多信息参考 MavenPOM 章节。
约定优先于配置
Maven使用约定优先于配置,这意味着开发者不用自己创建构建流程。
开发者不需要指明每一个配置详情。
Maven为项目提供了合理的默认行为。
当创建一个Maven项目时,Maven会创建默认的项目结构。
开发者只需要按照对应地放置文件,而不需要在pom.xml文件中做任何配置。
举个例子,假设${basedir}表示项目路径,下面的表格展示了项目源码文件目录、资源文件目录和其他配置的默认值:
Item
Default
sourcecode
${basedir}/src/main/java
resources
${basedir}/src/main/resources
Tests
${basedir}/src/test
Compliedbytecode
${basedir}/target
distributableJAR
${basedir}/target/classes
为了构建项目,Maven提供给开发者指明生命周期目标和项目依赖(依靠Maven的插件功能和默认约定实现)的选项。
有大量的项目管理和构建相关的任务是由Maven插件维护的。
Maven-环境搭建
Maven是基于Java的工具,所以首要必须的要求是你的电脑上安装有JDK。
系统要求
JDK
1.5版本或更高。
内存
无最小要求。
硬盘空间
无最小要求。
操作系统
无最小要求。
第1步:
验证Java是否安装
操作系统
操作
命令
Windows
打开命令提示符
c:
>java-version
Linux
打开命令终端
$java-version
Mac
打开终端
machine:
~joseph$java-version
让我们来验证下各个操作系统的输出:
操作系统
输出
Windows
javaversion"1.6.0_21"
Java(TM)SERuntimeEnvironment(build1.6.0_21-b07)
JavaHotSpot(TM)ClientVM(build17.0-b17,mixedmode,sharing)
Linux
javaversion"1.6.0_21"
Java(TM)SERuntimeEnvironment(build1.6.0_21-b07)
JavaHotSpot(TM)ClientVM(build17.0-b17,mixedmode,sharing)
Mac
javaversion"1.6.0_21"
Java(TM)SERuntimeEnvironment(build1.6.0_21-b07)
JavaHotSpot(TM)64-BitServerVM(build17.0-b17,mixedmode,sharing)
如果你没有安装Java,请从 安装JDK。
在此教程中我们假设安装的是Java1.6.0_21版本。
第2步:
配置JAVA环境
设置 JAVA_HOME 环境变量指向你电脑中Java的安装根目录。
示例如下:
操作系统
输出
Windows
设置环境变量JAVA_HOME为C:
\ProgramFiles\Java\jdk1.6.0_21
Linux
exportJAVA_HOME=/usr/local/java-current
Mac
exportJAVA_HOME=/Library/Java/Home
将Java编译器路径添加到系统路径。
操作系统
操作
Windows
在系统变量Path后添加字符串;C:
\ProgramFiles\Java\jdk1.6.0_21\bin
Linux
exportPATH=$PATH:
$JAVA_HOME/bin/
Mac
不需要
使用上面提到的java-version 命令验证Java安装。
第3步:
下载Maven安装文件
从http:
//maven.apache.org/download.html下载Maven2.2.1。
操作系统
文件名
Windows
apache-maven-2.2.1-bin.zip
Linux
apache-maven-2.2.1-bin.tar.gz
Mac
apache-maven-2.2.1-bin.tar.gz
第4步:
解压Maven安装文件
解压Maven的安装文件到你想要的目录。
在此过程中,子目录apache-maven-2.2.1将会被创建。
操作系统
路径(根据你的安装方式会有所不同)
Windows
C:
\ProgramFiles\ApacheSoftwareFoundation\apache-maven-2.2.1
Linux
/usr/local/apache-maven
Mac
/usr/local/apache-maven
第5步:
设置Maven的环境变量
向环境变量中添加M2_HOME,M2,MAVEN_OPTS变量.
操作系统
路径(根据你的安装方式会有所不同)
Windows
使用系统属性设置环境变量。
M2_HOME=C:
\ProgramFiles\ApacheSoftwareFoundation\apache-maven-2.2.1
M2=%M2_HOME%\bin
MAVEN_OPTS=-Xms256m-Xmx512m
Linux
打开命令终端设置环境变量。
exportM2_HOME=/usr/local/apache-maven/apache-maven-2.2.1
exportM2=$M2_HOME/bin
exportMAVEN_OPTS=-Xms256m-Xmx512m
Mac
打开命令终端设置环境变量。
exportM2_HOME=/usr/local/apache-maven/apache-maven-2.2.1
exportM2=$M2_HOME/bin
exportMAVEN_OPTS=-Xms256m-Xmx512m
第6步:
添加Maven的bin目录到系统路径
现在添加变量M2到系统目录中
操作系统
操作
Windows
在系统变量Path后添加字符串;%M2%
Linux
exportPATH=$M2:
$PATH
Mac
exportPATH=$M2:
$PATH
第7步:
验证Maven是否正确安装
现在打开终端命令行,然后执行下面的mvn命令。
操作系统
操作
命令
Windows
打开命令提示符
c:
>mvn--version
Linux
打开命令终端
$mvn--version
Mac
打开终端
machine:
~joseph$mvn--version
最后来验证上述命令的输出,内容应该如下:
操作系统
输出
Windows
ApacheMaven2.2.1(r801777;2009-08-0700:
46:
01+0530)
Javaversion:
1.6.0_21
Javahome:
C:
\ProgramFiles\Java\jdk1.6.0_21\jre
Linux
ApacheMaven2.2.1(r801777;2009-08-0700:
46:
01+0530)
Javaversion:
1.6.0_21
Javahome:
C:
\ProgramFiles\Java\jdk1.6.0_21\jre
Mac
ApacheMaven2.2.1(r801777;2009-08-0700:
46:
01+0530)
Javaversion:
1.6.0_21
Javahome:
C:
\ProgramFiles\Java\jdk1.6.0_21\jre
Maven-POM
POM意为项目对象模型(ProjectObjectModel),是Maven中基本单元。
它是一个名为pom.xml的XML文件,总是存在于项目的更目录下。
POM包含了项目相关的信息和Maven用来构建一个或多个项目的各种配置详情。
POM也包含了各种目标操作(goal)和插件。
当执行一个任务或者目标操作时,Maven会查找当前目录下的POM。
Maven读取POM,从中获得需要的配置信息,然后执行目标操作。
部分Maven可以从POM中明确的配置列出如下:
∙项目依赖(projectdependencies)
∙插件(plugins)
∙目标操作(goals)
∙构建(buildprofiles)
∙项目版本(projectversion)
∙开发者(developers)
∙邮件列表(mailinglist)
在创建一个POM之前,我们首先应该决定项目组织(groupId),项目命名(artifactId)和项目版本,因为这些属性信息可以帮助我们在项目仓库中唯一确定一个项目。
POM示例
//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">
4.0.0
panyname.project-group
project
1.0
要注意的是每个项目需要有唯一的POM文件。
∙所有的POM文件要求有projec节点和三个必须字段:
groupId,artifactId,version。
∙在仓库中项目的标识为groupId:
artifactId:
version。
∙POM.xml的根节点是project并且其下有三个主要的子节点:
节点
描述
groupId
项目组织的Id。
通常在一个项目或者一个组织之中,这个Id是唯一的。
例如,某个Id为pany.bank的银行组织包含所有银行相关的项目。
artifactId
项目的Id,通常是项目的名字。
例如,consumer-banking。
artifactId与groupId一起定义了仓库中项目构件的路径。
version
项目的版本。
它与groupId一起,在项目构件仓库中用作区分不同的版本,例如:
pany.bank:
consumer-banking:
1.0
pany.bank:
consumer-banking:
1.1.
SuperPOM
所有的POM都继承一个父类POM(不管是显示定义继承的还是没有显示定义的)。
这个基础的POM被称为超类POM(SuperPOM) ,它包含了POM默认继承的属性值。
Maven使用有效的POM(effectivepom,其配置来源于超类POM加上项目配置)来执行相关的目标操作。
这能帮助开发者在他/她的pom.xml中识别出最小量的配置详情,虽说起来配置覆盖也非常地容易。
一个简单的查看超类POM的默认配置的方法是裕兴如下的命令:
mvnhelp:
effective-pom
在你的电脑任意目录下创建一个pom.xml文件,内容使用上面提到的pom示例中的。
在展示下面的例子前,我们已经在C:
\MVN\project文件夹中创建了一个pom.xml文件。
现在打开命令控制台,去到包含pom.xml的文件夹,然后执行下面的mvn命令。
C:
\MVN\project>mvnhelp:
effective-pom
Maven将开始处理并显示有效的pom(effective-pom).
[INFO]Scanningforprojects...
[INFO]Searchingrepositoryforpluginwithprefix:
'help'.
[INFO]------------------------------------------------------------------------
[INFO]BuildingUnnamed-panyname.project-group:
project-name:
jar:
1.0
[INFO]task-segment:
[help:
effective-pom](aggregator-style)
[INFO]------------------------------------------------------------------------
[INFO][help:
effective-pom{execution:
default-cli}]
[INFO]
.....
[INFO]------------------------------------------------------------------------
[INFO]BUILDSUCCESSFUL
[INFO]------------------------------------------------------------------------
[INFO]Totaltime:
<1second
[INFO]Finishedat:
ThuJul0511:
41:
51IST2012
[INFO]FinalMemory:
6M/15M
[INFO]------------------------------------------------------------------------
EffectivePOM在继承(inheritance)、插值(interpolation)和使用配置(profileapplying)后,展示的就如控制台中的结果一样。
xmlversion="1.0"encoding="UTF-8"?
>
--=================================================================-->
---->
--GeneratedbyMavenHelpPluginon2012-07-05T11:
41:
51-->
--See:
http:
//maven.apache.org/plugins/maven-help-plugin/-->
---->
--=================================================================-->
--=================================================================-->
---->
--EffectivePOMforproject-->
--'panyname.project-group:
project-name:
jar:
1.0'-->
---->
--=================================================================-->
//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.0h
ttp:
//maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
panyname.project-group
project
1.0
C:
\MVN\project\src\main\java
src/main/scripts
C:
\MVN\project\src\test\java
C:
\MVN\project\target\classes
C:
\MVN\project\target\test-classes
resource-0
C:
\MVN\project\src\ma