240 likes | 536 Views
Maven 培训. Maven 简介 Maven 的特点 Maven 安装与配置 Maven 的使用 Maven 常见问题 Maven 的插件安装及使用 Maven 在 Tiger 项目中的使用. Maven 简介. Maven 是基于项目对象模型 (POM) ,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。
E N D
Maven培训 • Maven简介 • Maven的特点 • Maven安装与配置 • Maven的使用 • Maven常见问题 • Maven的插件安装及使用 • Maven在Tiger项目中的使用
Maven简介 • Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。 • 如果你已经有十次输入同样的Ant targets来编译你的代码、jar或者war、生成javadocs,你一定会自问,是否有有一个重复性更少却能同样完成该工作的方法。Maven便提供了这样一种选择,将你的注意力从作业层转移到项目管理层。Maven项目已经能够知道如何构建和捆绑代码,运行测试,生成文档并宿主项目网页.
Maven特点 • Maven 的编译及所有脚本都基于POM(project object model)。 • Maven 对所依赖的包有明确定义,如使用那个包,版本是多少,一目了然。(备注:使用到的包会在pom.xml中配置)如:freemarker-2.3.16.jar • Maven是基于中央仓库的编译,即把编译所需要的资源放在一个中央仓库里,如jar,tld,pom,等。当编译的时候,maven会自动在仓库中找到相应的包,如果本地仓库没有,则从设定好的远程仓库中下载到本地。 • Maven有大量的重用脚本可以利用,如生成网站,生成javadoc,sourcecode reference,等。
Maven安装 • 1、下载maven • 版本:3.0.3下载地址:http://maven.apache.org/download.html • 2、安装maven • JDK:jdk1.6 • 2.1 解压缩apache-maven-3.0.3-bin.zip 到你想安装的位置,如D:/software/。 • 2.2 设置Maven系统环境变量,M2_HOME=D:/software/maven-3.0.3。 • 2.3 添加Maven bin目录至系统环境变量PATH中,%M2_HOME%\bin。 • 2.4 确认Maven的安装: • cmd > mvn -version • 提示Maven version 3.0.3即安装成功。
Maven的配置(project配置) • Maven home directory在windows中是C:\Documents and Settings\username\.m2。 • maven的配置可以分为三个级别: • 3.1.project • 在pom.xml中配置。project configuration只针对当前project有效。 • 3.2 .installation • 在maven安装时配置。 • 3.3 .user • 对指定用户的配置。user configuration可以在${user.home}/.m2/settings.xml中指定。注:该文件不是必须的,当该文件找不到时,maven会使用默认的配置。 • 关于该文件的具体配置可以参考:http://maven.apache.org/ref/3.0.3/maven-settings/settings.html。
pom.xml文件基本配置 • Maven在my-app目录下创建了一个pom.xml文件。这是项目的最基本部分。pom.xml文件包含了一组指令,这些指令告诉Maven如何构 建项目和包含哪些其它的特殊指令(POM是“项目对象模型”的缩写)。在默认的情况下,Maven包含了JUnit的依赖以此来鼓励单元测试。 • xml 代码 • <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.myproject</groupId> • <artifactId>my-app</artifactId> • <packaging>jar</packaging> • <version>1.0-SNAPSHOT</version> • <name>Maven Quick Start Archetype</name> • <url>http://maven.apache.org</url> • </project>
Pom.xml中部分参数值说明 • pom.xml 文件基本节点介绍 • <project > :文件的根节点 .<modelversion > : pom.xml 使用的对象模型版本 .<groupId > :创建项目的组织或团体的唯一 Id.<artifactId > :项目的唯一 Id, 可视为项目名 .<packaging > :打包物的扩展名,一般有 JAR,WAR,EAR 等 <version > :产品的版本号 .<name > :项目的显示名,常用于 Maven 生成的文档。 <url > :组织的站点,常用于 Maven 生成的文档。 <description > :项目的描述,常用于 Maven 生成的文档。 • 在 POM 4 中, <dependency> 中还引入了 <scope> ,它主要管理依赖的部署。 • 目前 <scope> 可以使用 5 个值: • compile :缺省值,适用于所有阶段,会随着项目一起发布。 • provided :类似 compile ,期望 JDK 、容器或使用者会提供这个依赖。如 servlet.jar 。 • runtime :只在运行时使用,如 JDBC 驱动,适用运行和测试阶段。 • test :只在测试时使用,用于编译和运行测试代码。不会随项目发布。 • system :类似 provided ,需要显式提供包含依赖的 jar , Maven 不会在 Repository 中查找它。
Maven 的主要组件(http://www.ibm.com/developerworks/cn/java/j-maven/) • 项目对象模型 • 项目对象模型(Project Object Model,POM)描述项目的各个方面。尽管对于 POM 的物理表示没有内在的限制,但 Maven 开发人员通常使用一个 XML 项目文件(project.xml)。该 XML 文件格式由位于 Maven 安装目录中的 XML 模式(maven-project.xsd)定义。 • 通常,project.xml 文件由三个主要部分组成: • 项目管理部分包括项目的组织、开发人员名单、源代码位置和错误跟踪系统 URL 等信息。 • 项目相关性部分包括关于项目相关性的信息。 • 项目构建和报告部分包含项目构建信息(如源代码目录、单元测试用例目录)和要在构建中生成的报告。 • Maven主要组件:
Maven的配置(本地Repository配置) • 本地Repository的默认值是${user.home}/.m2/repository/。可以在user configuration(即在${user.home}/.m2/setting.xml)中改变本地Repository。 • 配置如下:<settings></settings> • <localRepository>/path/to/local/repo</localRepository>注意:本地Repository 必须是绝对路径。
Maven代理配置 • 3.5 配置代理 • 可以为http request配置代理。同样在user configuration中配置,配置如下: <settings></settings> <proxy><id>optional</id><active>true</active><protocol>http</protocol><username>proxyuser</username><password>proxypass</password><host>www.hc360.com</host><port>80</port><nonProxyHosts>local.net,some.host.com</nonProxyHosts></proxy>详见:http://maven.apache.org/guides/mini/guide-proxies.html
Maven安全和部署配置 • 在一个project中,该项目将要使用哪个Repository,是在<distributionmanagement></distributionmanagement>setting.xml中指定的。然而,你却不能将用户名和 码以及其它的安全设定也放在该project中。因此,你可能会在你自己的设定中定义一个server,给它指定一个id, 该id与project将要使用那个Repository相对应。 另外,有些repository在下载时可能需要用户名和密码,这些也可以在server element中以相同的方式指定。配置如下<server><id>deploymentRepo</id><username>repouser</username><password>repopwd</password></server>
Maven的使用 • Maven简单的管理功能如下: • 生成项目mvn archetype:create -DgroupId=com.myproject -DartifactId=my-app • 工程名称为my-app • my-app----src ----main ----java ----com ----myproject ----test ----java ----com ----myproject • mvn archetype:create -DgroupId=com.huawei.dbank.message -DartifactId=dbank_message -DpackageName=com.huawei.dbank -DarchetypeArtifactId=maven-archetype-webapp
Maven的常用命令(1) • Maven的运行命令为 : mvn , • 常用命令为 : • mvn archetype:create :创建 Maven 项目 • mvn compile :编译源代码 • mvn test-compile :编译测试代码 • mvn test : 运行应用程序中的单元测试 • mvn site : 生成项目相关信息的网站 • mvn clean :清除目标目录中的生成结果 • mvn package : 依据项目生成 jar 文件 • mvn install :在本地 Repository 中安装 jar • mvn eclipse:eclipse :生成 Eclipse 项目文件 • 生成项目 • 建一个 JAVA 项目 : mvn archetype:create -DgroupId=com.demo -DartifactId=App • 建一个 web 项目 : mvn archetype:create -DgroupId=com.demo -DartifactId=web-app -DarchetypeArtifactId=maven-archetype-webapp • 生成 Eclipse 项目 • 普通 Eclipse 项目执行 : mvn eclipse:eclipse • Eclipse WTP 项目执行 : mvn eclipse:eclipse –Dwtpversion=1.0 • ( wtp1.0 以上版本均可用)
Maven常用命令(2) • mvn -Dtest package:组合使用goal命令,只打包不测试。 • mvn jar:jar只打jar包 • mvn test -skipping compile -skipping test-compile 只测试而不编译,也不测试编译 ( -skipping 的灵活运用,当然也可以用于其他组合命令) • mvn eclipse:clean 清除eclipse的一些系统设置 • maven是有生命周期这一概念的,也就是说如果你执行package,相应的以前步骤,如compile,test等都会自动执行。 • 一般使用情况是这样,首先通过svn下载代码到本机,然后执行mvn eclipse:eclipse生成ecllipse项目文件,然后导入到eclipse就行了; • 修改代码后执行mvn compile或mvn test检验,也可以下载eclipse的maven插件。
Maven的结构 • 定义自己的结构 • 新建一个 archetype 项目 : • mvn archetype:create\ -DgroupId=cn.prof\ -DartifactId=prof-archetype\ -DarchetypeArtifactId=maven-archetype-archetype • 主要的模板文件 : archetype-resources/pom.xml • 修改其中内容 • 修改 META-INF/maven/archetype.xml 中定义了相关的 sources • 安装此项目 : mvn install • 执行下面的命令创建新目录的项目: • mvn archetype:create -DgroupId=com.mergere.mvnbook \ -DartifactId=proficio-example\ -DarchetypeGroupId=com.xxx.mvn\ -DarchetypeArtifactId= prof-archetype \ -DarchetypeVersion=1.0-SNAPSHOT
Maven常遇问题总结 • 1、在使用命令mvn eclipse:eclipse 之后,import到Eclipse,然后在Eclipse项目上点右键,选择插件Maven>Enable Dependency Management后,会报重复引用依赖的错误解决办法 :先执行mvn eclipse:eclipse然后刷新Eclipse的项目,取消掉maven插件的引用依赖,错误就会消除。 • 2、maven下载包的时候内存溢出: • mvn install 报错 java.lang.OutOfMemoryError: Java heap space • 解决办法: • a. 修改 %M2_HOME%\bin\mvn.bat文件,增加虚拟机内存设置 set MAVEN_OPTS= -Xms128m -Xmx512m • b. 可以在 mvn install 执行之前,先执行 set MAVEN_OPTS= -Xms128m -Xmx512m
Maven常遇问题总结 • 3、执行mvn 时提示下面的内容: • 问题分析: • 在环境变量中配置了 • MAVEN_OPTS=-Xdebug-Xrunjdwp:transport=dt_socket,address=1044,server=y,suspend=n • 却没有Xdebug相关包。 • 解决办法: • 删除环境变量中属性为MAVEN_OPTS 的变量 • 或者直接将MAVEN_OPTS变量的值设为空,即不设置。
Maven常遇问题总结 • 4、执行 mvn package 或 mvn install 命令报错: • assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode) As the WEB-INF dire。 • 问题分析: • 错误提示的是web.xml文件缺少必要的属性。 • 解决办法: • 在google中搜索后发现原来是mvn工程的目录有问题,web.xml 文件需要放在main\webapp目录下,否则会找不到。将web.xml文件从WebContent\WEB-INF目录中 移到main\webapp\WEB-INF目录下即可。
Maven常遇问题总结 • 当建立一个工程后,执行 mvn eclipse:eclipse ,建立一个maven的工程,用eclipse打开后,发现报如下错误:Unbound classpath variable: 'M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar' in project my-webapp ,这是因为在Eclipse 没有配置 M2_REPO 变量,配置步骤:window >> preferences >> Java >> Build Path >> Classpath Variables新建一个 M2_REPO 的变量,变量值指向你系统的Maven的数据仓库位置。 • 备注 :如果工程导入后,编译老是提示jar包找不到,则也是此问题导致,按照上面的描述添加配置即可。
Maven插件安装 • 打开eclipse,找到Help->Install New SoftWare打开install窗口,选择add Site输入Maven插件地址:http://m2eclipse.sonatype.org/sites/m2e • Maven2完全使用手册http://agapple.javaeye.com/blog/147304 • Maven2的常用命令 • http://guooo.javaeye.com/blog/280604 • Maven2安装总结http://hi.baidu.com/vhion/blog/item/7544a245b045e02ccefca31c.html
Maven在Tiger项目中的使用情况---在培训时会细讲以下内容Maven在Tiger项目中的使用情况---在培训时会细讲以下内容 • 1.搭建公司自己的nexus插件仓库 • 2.配置统一的${user.home}/.m2/setting.xml • 3.使用统一的tiger_parent/pom.xml管理版本 • 4.使用filter管理开发,测试,生产机配置信息 • 5.使用Profile管理个性化配置 • 6.使用mavan运行单元测试