版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Maven2使用
施兴涛
Maven是什么
•简单的说是:
项目管理工具提供了构建工具所提供功能
的超集。除了提供构建的功能,Maven还
可以生成报告,生成Web站点,并且帮助推
动工作团队成员间的交流。
Maven官网:
Maven是什么
•Maven是一^个项目管理工具,它包含了一*个项
目对象模型(ProjectObjectModel),一组标准
集合,一个项目生命周期(ProjectLifecycle),一
个依赖管理系统(DependencyManagement
System),和用来运行定义在生命周期阶段
(phase)中插件(plugin)目标(goal)的逻辑。当你
彳吏用Maven的日寸候,彳尔用一个响确定义的项自
对象模型来描述你的项目,然后Maven可以
应用横切的逻辑,这些逻辑来自一组共享的
(或者自定义的)插件
准备工作
•下载maven
当前的最新版本是Maven2.1.0
地址:
/download.html
•解压
•如解压到D根目录
-D:\apache-maven-2.1.0
准备工作
•修改本地环境变量
•新增JAVA_HOME
如:编辑系统变量口区I
变量名(S):JAVA_HOME
变量值国):D:\jdkL6.0|
确定取消
准备工作
•修改本地环境变量
•新增PATH=・..;D:\apache-maven-2.L0\bin;
%JAVA_HOME%\bin;
编辑系统变量一叵|区|
变量名(8):Path______________________________
变量值W):|:an\Codecs;D:1.
确定取消
测试和验证安装
•开始令运行
•键入cmd回车
•在Dos命令行方式下输入mvn-version
•ApacheMaven2.1.0(r755702;2009-03-19
03:10:27+0800)
•Javaversion:1.6.0
•Javahome:D:\jdkl.6.O\jre
•Defaultlocale:zh_CN,platformencoding:GBK
•OSname:"windowsxp"version:"5.1"arch:"x86"
Family:"windows"
•有如下的提示说明maven已经安装正确
修改配置文件
,D:\apache-maven-2.1.0\conf\settings.xml
•修改本地库文件的存放地址
■根据个人操作计算机的习惯和硬盘空间实
际情况选择文件的位置
•如:
•<localRepository>D:/apache-maven-
2.1.0/repo</localRepository>
修改配置文件
•当Maven项目很大,或者你运行诸如mvnsite这样的命令的时候,maven运行需要很大的内存,
在默认配置下,就可能遇到java的堆溢出。
,Windows环境中
•找到文件%"2_〃0河£%仍加\^^〃力成,这就是启动Maven的脚本文件,在该文件中你能看到
有一行注释为:@REMsetMAVEN_OPTS=-Xdebug-Xnoagent-Dpiler=NONE...
•它的意思是你可以设置一些Maven彩数,我们就在注释下面加入一行:
•setMAVEN_OPTS=-Xms512m-Xmxl024m
•具体的数字根据本机的实际内存合理设置
,之后,当你运行Maven命令如mvn-version的时候,你会看到如下的输出:
,mvn-version
setMAVEN_OPTS=-Xms512m-Xmxl024m
•ApacheMaven2.1.0(r755702;2009-03-1903:10:27+0800)
,Javaversion:1.6.0
,Javahome:D:\jdkl.6.0\jre
,Defaultlocale:zh_CN,platformencoding:GBK
,OSname:"windowsxp"version:"5.1"arch:"x86"Family:"windows"
,我们看到,配置的Maven选项生效了,OutOfMemoryError也能得以相应的解决。
修改配置文件
•Linux环境中
•也可以通过设置环境变量解决该问题,如,
编辑文件/etc/pro/Ve或者.bash_profile文件
增加如下两行:
•MAVEN_OPTS=-Xms512m-Xmxl024m
exportJAVA_HOMEMAVEN_OPTS
Maven配置文件
•默认Maven会从5个artifacts(不同的groups)
上下载最新的库依赖文件包
如:设置一个线程
•mvn-Dmaven.artifact.threads=l
•或者修改mvn.bat
•exportMAVEN_OPTS=-
Dmaven.artifact.threads=3
Maven项目概念模型特征
•依赖管理
由于项目是根据一个包含组标识符,构件标识符和版本的唯一的坐标定义的。项目间可以
使用这些坐标来声明依赖。
•远程仓库
和项目依赖相关的,我们可以使用定义在项目对象模型(POM)中的坐标来创建Maven构
件的仓库。
•全局性构建逻辑重用
插件被编写成和项目模型对象(POM)一起工作,它们没有被设计成操作某一个已知位置的
特定文件。一切都被抽象到模型中,插件配置和自定义行为都在模型中进行。
•工具可移植性/集成
像Eclipse,NetBeans,和InteliJ这样的工具现在有共同的地方来找到项目的信息。在Maven
出现之前,每个IDE都有不同的方法来存储实际上是自定义项目对象模型(POM)的信息。
Maven标准化了这种描述,而虽然每个IDE仍然继续维护它的自定义项目文件,但这些文件
现在可以很容易的由模型生成。
•便于搜索和过滤构件
允许你使用存储在POM中的信息对仓库中的内容进行索引和搜索。
Maven和Ant比较
•查看build,xml文件同
Btild疝
•在这个简单的Ant例子中,你能看到,你需要明
前的告怵Ant你想让它做什么。有一个包含javac
任务的编译目标用来将src/main/java的源幅编译
至target/classes目录。你必须明确告诉Ant你的
源码在哪里,结果字节码你想存储在哪里,如何
将这些字节码打包成JAR文件。虽然最近有些进
展以帮助Ant减少程序,但一个开发者对Ant的
感受是用XML编写程序语言。
Maven和Ant比较
•<?xmlversion="1.0"encoding="UTF-8"?>
•<projectxmlns="/POI\/l/4.0.0"
xmlns:xsi="http:〃/2001/XMLSchema-instance"
•xsi:schemaLocation="/POM/4.0.0
/maven-v4_0_0.xsd">
•<modelVersion>4.0.0</modelVersion>
•<groupld>com.xiaonei</groupld>
•<artifactld>xiaonei-admin</artifactld>
•<version>1.0</version>
•</project>
•就可以代替ant刚才文件中的所有任务
Maven和Ant区另U
•ApacheAnt
Ant没有正式的约定如一个一般项目的目录结构,你必须明确的告派Ant哪里
梯空燔渭郡髀加随着时间的推移,非正式的约定出现了,但是
Ant是程序化的,你必须明质的告诉Ant做什么,什么时候做。你必须告诉它
去编译,然后复制,然后压缩。
Ant没有生命周期,你必须定义目标和目标之间的依赖。你必须手工为每个目
标附上一个任务序列。
•ApacheMaven
Maven拥有约定,因为你遵循了约定,它已经知道你的源代码在哪里。它把
字节码放到target/classes,然后在target生成一个JAR文件。
Maven是声明式的。你需要做的只是创建一个pom.xml文件然后将源代码放
到默认的目录。Maven会帮你处理其它的事情。
Maven有一个生命周期,当你运行mvninstall的时候被调用。这条命令告诉
Maven执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周
期旅途中的一个影响就是,Maven运行了许多默认的插件目标,这些目标完
成了像编译和创建一个JAR文件这样的工作。
Maven生命周期
process-resources
Maven快速进阶
•创建普通的项目:
mvn
archetype:create-Dgroupld=com.xiaonei
-Dartifactld=xiaonei-test
groupld=我彳门统一使用com.xiaonei
artifactld二项目的实际名称
工程目录结构
・xiaonei-test
文件⑥媪辑也)查看留收藏(A)工具①)帮助也)
后退,
©0搜索k文件夹面喊FolderSync
也让I]।1D:\projects\xiaonei-fest
文件夹X
pom
xiaonei~testXML文档
1KB
S口srcJ"
三力main
日目java
i-1㈡com
I1xiaonei
日白test
日IOjava
9㈡com
二1xiaonei
n___i__
Maven进阶
•创建带有web的项目
mvn
archetype:create-Dgroupld=com.xiaonei
-Dartifactld=xiaonei-admin-web-app
-DarchetypeArtifactld=maven-archetype-
webapp
工程目录结构
■txiaonei-ad>in-<etr-app
文件CF)编辑(1)查看(V)收藏心)工具9帮助凶
Q后退,1匕搜索1婀UH?人冷FolderSync
[Wg]
他处中1113D:\projects\xiaonei-admin-web-app
文件夹
pom
三;、_jxiaonei-admin-web-appXML
1KB
yOsrc
曰:二)main
.resources
-IOwebapp
I」WEB-INF
Maven目录结构介绍
src/main/java源代码目录
src/main/resources所需资源目录
src/main/filters资源过滤文件目录
src/main/assembly自定义打包目录
src/main/config配置文件跟目录
src/main/webappWeb文件目录
src/test/java测试代码目录
src/test/resources测试所需资源目录
src/test/filters测试资源过滤文件目录
src/site与site相关的资源目录
LICENSE.txt项目license文件
README.txt项目readme文件
工程目录结构比较
•<projectxmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-
instance"
,xsi:schemaLocation="http://maven.apache.0rg/P0M/4.0.0/maven-v4_0_0.xsd">
•<modelVersion>4.0.0</modelVersion>
•<groupld>com.xiaonei</groupld>
•<artifactld>xiaonei-test</artifactld>
•<packaging>jar</packaging><packaging>war</packaging>
•<version>1.0-SNAPSHOT</version>
•<name>xiaonei-test</name>
•<url></url>
•<dependencies>
•<dependency>
•<groupld>junit</groupld>
•<artifactld>junit</artifactld>
•<version>3.8.1</version>
•<scope>test</scope>
•</dependency>
•</dependencies>
<build><finalName>web-app</finalName></build>
</project>
Maven文件的规范
•XSD文件地址
•/maven-v40_Chxsd
•建议使用XmlSpy2009这样的工具编写xml文
件
Pom文件介绍
•文件结构
<?xmlversion="1.0"encoding="UTF-8"?>
<projectxmlns="/POI\/l/4.0.0"
xmlns:xsi="http:〃/2001/XMLSchema-instance”
xsi:schemaLocation="/POI\/l/4.0.0
/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupld>com.xiaonei</groupld>开发组织
<artifactld>xiaonei-admin</artifactld>X^目的唯——标识
<packaging>war</packaging>打包方式可选择jarwarear
<version>1.0</version>版本
<name>xiaonei-admin</name>工程名称
<url></url>工程的地址
Pom文件介绍
<licenses>
(license〉许可协议
<name>xiaonei-admin</name>
<url>/info/About.do</url>
协议查询地址
<distribution>xingtao.shi</distribution>发布者
<comments>xiaoneiadminbackgrand
platform</comments>
工程的备注
</license>
</licenses>
Pom.xml文件介绍
〈developers》开发者
<developer>
<id>xingtaoshi</id>开发者ID
<name>shixingtao</name>开发者姓名
<email>xingtao.shi@</email>由B箱
<organization></organization>组织
<organizationUrl></organizationUrl>
•组织的URL
<roles>开发者在此项目中的角色
<role>architect</role>
<role>developer</role>
</roles>
<timezone>+8</timezone>时区
</developer>
</developers>
Pom.xml文件介绍
•<contributors>协助者其他的属性类是developers
•<contributor>
•<name>xiaozhang</name>
•<email>xiao.zhang@</email>
•<organization></organization>
•<organizationUrl></organizationUrl>
•<roles>
•<role>developer</role>
•</roles>
•<timezone>+8</timezone>
•<url>/u/XXXX</url>
•</contributor>
</contributors>
Pom.xml文件介绍
•<issueManagement>bug最终的整合
•<system>jira</system>
•<url>/</url>
•</issueManagement>
Pom.xml文件介绍
•<pluginRepositories>
•<pluginRepository>
•<id>caucho</id>
•<name>Caucho</name>
•<url>/m2</url>
•</pluginRepository>
•</pluginRepositories>
Pom.xml文件介绍
•配置自己的私服或者其他非官方提供的maven
服务器.
•<pluginRepositories>
•<pluginRepository>
•<id>caucho</id>
•<name>Caucho</name>
•<url>/m2</url>
•</pluginRepository>
•</pluginRepositories>
本地maven库
<repositories>
<repository>
<id>xiaonei-maven2</id>
<name>xiaonei-maven2</name>
<url>:7070</url>
</repository>
</repositories>
Pom.xml文件介绍
•发邮件的列表
<mailingLists>
<mailingList>
<name>xiaonei</name>
<subscribe>xn-tech-subscribe@opi-
</subscribe>
<unsubscribe>xn-tech-unsubscribe@opi-
</unsubscribe>
<post>xn_tech@</post>
</mailingList>
</mailingLists>
Pom.xml文件介绍
项目的SVN地址
<scm>
<connection>scm:svn:/r
epos/xiaonei/xiaonei-admin/trunk</connection>
<developerConnection>scm:svn:http://svn.d.xiao
/repos/xiaonei/xiaonei-
admin/trunk</developerConnection>
<url>/repos/xiaonei/xiao
nei-admin/</url>
<tag>HEAD</tag>
</scm>
Pom.xml文件介绍
•由于开发者多数使用TortoiseSVN的客户端
•没有svn.exe文件
,建议大家安装一个SlikSvn的客户端
•并且把SlikSvn安装目录下的bin添加到path中
•这样我们才能正确的使用
<dependencies>项目的依赖关系
<dependency>
<groupld>commons-configuration</groupld>项目依赖包的groupld
<artifactld>commons-configuration</artifactld>Ijzl目依赖包的artifactld
<version>1.2</version>版本
如果不写这个版本默认会找到maven-metadata-local.xml文件中最新的版本
<scope>compile</scope>依赖范围参加后面的列表
<exclusions>
表示依赖包中不需要这个依赖关系,主要考虑到包的冲突使用
<exclusion>
<groupld>javax.servlet</groupld>
<artifactld>servlet-api</artifactld>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Scope依赖范围
依赖范围(scope主源码classpath可测试源码classpath
会被打包
)用可用
compile缺省值TRUETRUETRUE
testFALSETRUEFALSE
runtimeFALSETRUETRUE
providedTRUETRUEFALSE
Provided一般情况下使用在servlet里面,默认tomcat或者resin自带了servlet的包
Test表示用在maven运行测试类的时候使用,一般用在junit,jmock,easymock等上
使用mvn-Dmaven.test.skip二true......参数表示跳过测试的环节
Runtime表示用在系统运行时使用
Pom.xml文件介绍
<reporting>报表
<plugins>
<plugin>报表的插件
<groupld>org.apache.maven.plugins</groupld>
<artifactld>maven-changelog-plugin</artifactld>
<configuration>
<username>xingtao.shi</username>
<password>XXXX</password>
<outputEncoding>UTF-8</outputEncoding>
</configuration>
</plugin>
</reporting>
</project>
Maven内置的plugin
•官方地址参见地址:
/plugins/index.html
有空大家可以上这个网站进行仔细的查看
以下介绍一下比较实用的plugin
Maven官方提供的插件
cleanchangesassemblyidea
compilercheckstyledependencyCodehaus:
deploycloverenforcerbuild-helper
installdoapgpgcastor
resourcesdocckhelpjavacc
sitejavadocinvokerjdepend
surefirejxronenative
verifierpmdpluginsql
earproject-info-reportsreleasetaglist
ejbsurefire-reportremreleaseote-Other:
resources
jarantrepositorycargo
rarantlrscmjaxme
warantrunsourcejetty
changelogarchetypeeclipsejalopy
Mavencoreplugin
•mvnclean:clean
表示删除编译target目录的文件结构
•mvncompiler:compile
表示编译src/main目录下的java文件
mvncompiler:testCompile
表示编译src/test目录下的java文件
•mvninstall
-安装新的依赖文件包
Maveninstallplugin
•mvninstall:install-file-Dgroupld=XXX-
Dartifactld=XXX-Dversion=XXX-Dpackaging=
文件的打包方式(jar,war,ear)-Dfile二文件
的位置-DgeneratePom=true-
DcreateChecksum=true
安装新的依赖包
Mavenassembly插件
•mvnassembly:assembly
目标是创建一个带有依赖的Jar,他将所有依
赖解压到一个临时的目录,然后将所有的
字节码收集到target/目录下一个名叫
${artifactld}-${version}-jar-with-
dependcies.jar
Mavendependency插件
・挑选比较重要的两个命令
mvndependency:tree
树形结构显示包的依赖关系
mvndependency:analyze
提示分两块显示
一块是Usedundeclareddependencies
另一块是Unuseddecclareddependencies
根据提示进行修改一下pom.xml文件
Maven和开发编辑器
•主流的开发编辑器是eclipse和intelljidea
Eclipse:
mvneclipse:cleaneclipse:eclipse
clean表示先删除原旨的eclipse工程文件
生产eclipse的工程文件
添加一、、
-DdownloadSources=true表不下载依赖工程文
件的源文件
添加一、、
-DdownloadJavadocs=true表小下载javaDoc文件
Maven和开发编辑器
•mvnidea:idea
生成intelljidea工程文件
•Netbeans目前暂时不支持
需要以插件的方式来实现
参见地址
-/mevenide-
netbeans-project/user-guide/index.html
Mavenresin插件
,由于xiaonei的工程基本上都是用了resin做
web服务
所以单独说明一下maven-resin-plugin
•当前官方提供的地址是
/m2
当前最低版本是3.1.5
最高版本是400没有测试过®
Mavenresin插件
<plugin>
<groupld>com.caucho</groupld>
<artifactld>resin-maven-plugin</artifactld>
<version>3.1.5</version>
<configuration>
<contextPath>/</contextPath>
<port>80</port>
<rootDirectory>target\${artifactld}-
${version}</rootDirectory>
</configuration>
</plugin>
Mavennative2ascii插件
•由于xiaonei的工程都使用了struts的MVC结
构
不免需要使用
Application.properties配置文件来实现国际
化的
Mavencompiler插件
<plugin>
<groupld>org.apache.maven.plugins</groupld>
<artifactld>maven-compiler-plugin</artifactld>
<configuration>
<source>1,6</source>使用jdk的版本
<target>1.6</target>
<encoding>UTF-8</encoding>文件的编码方式
<showDeprecation>true</showDeprecation>是否显示不推荐使
用的提示一
<showWarnings>true</showWarnings>显示警告
<meminitial>512m</meminitial>最小内存分配
<maxmem>1024m</maxmem>最大内存分酉己
</configuration>
</plugin>
Mavenwar插件
<plugin>
<groupld>org.apache.maven.plugins</groupld>
<artifactld>maven-war-plugin</artifactld>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor
</archive>
<packagingExcludes>表示打包war文件是不包括这些文件
WEB-INF/lib/resin*.jar,WEB-INF/lib/servlet*.jar
</packagingExcludes>
</configuration>
</plugin>
Mavennative2ascii插件
<plugin>
<groupld>org.codehaus.mojo</groupld>
<artifactld>native2ascii-maven-plugin</artifactld>
<executions>
<execution>
<goals>
<goal>native2ascii</goal>
</goals>
<configuration>
<dest>target/classes/resources/</dest>将于复制到哪儿
<src>src/main/resources/</src>包括的目录
<encoding>utf-8</encoding>编码格式
<includes>
perties,包括那些文件使用逗号分开
</includes>
</configuration>
</execution>
</executions>
</plugin>
学会使用Maven
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论