maven的使用教学课件_第1页
maven的使用教学课件_第2页
maven的使用教学课件_第3页
maven的使用教学课件_第4页
maven的使用教学课件_第5页
已阅读5页,还剩56页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

提交评论