一、下载和安装mavenjava
注:在使用以前,应首先安装JDK。apache
#能够去共用目录中下载,下载完后解压到指定的目录中,如C:\Program Files\apache-maven-2.2.0缓存
#配置环境变量:1)MAVEN_HOME: 你安装的Maven的目录,如C:\Program Files\apache-maven-2.2.0服务器
#在Path 中加入%MAVEN_HOME%\binapp
配置完以后,在命令窗口中使用mvn –version 会出现以下信息eclipse
此时,maven已经安装配置好了。maven
二、使用maven来构建项目,从源代码编译成二进制项目文件ide
用maven对项目打包,好比用svn下载项目从svn
svn://10.0.0.58:8000/java/materias/poc/maven/core/,下载到指定的目录,好比放在E:\workspace\java\materias\poc\maven\core目录下工具
项目的结构以下:
包括src源代码目录,unit test源码目录,以及配置文件目录resources
打开命令窗口,用cd命令转到项目所在的目录下
运行mvn compile,假以下现以下的结果,则该命令运行成功。
该命令是用来编译全部的的(java)源文件,编译后生成全部的class文件放在根目录下的target\classes目录下,即如
除此以外,maven还有不少其余经常使用的命令方式,好比:
*mvn test-compile //编译测试代码 ,好比编译test下的源文件,编译后生成的全部的class文件放在根目录下的target\test-classes目录下
*mvn test //运行应用程序中的单元测试,好比对以上的项目,测试生成的结果放在根目录下的target\surefire-reports目录下,
*mvn clean //清除目标目录中的生成结果 delete target,即会清除生成的target目录
*mvn package //依据项目生成 jar或者war/sar文件,好比对以上的项目,生成的包文件会放在根目录下的target\目录下的core-1.0.jar文件,这里要注意的是运行了mvn package命令之后,对于这以前的操做(包括mvn compile,mvn test-compile,mvn test)命令,都会自动运行
*mvn install // 在本地 Repository 中安装 jar或者war //,即将生成的jar或者war放在本地的Repository中,这里要说明的是,maven中默认的Repository是在C:\Documents and Settings\(当前系统用户的名称)\.m2\repository目录下,咱们也能够人为的将它存放在指定的目录下,步骤是打开maven的安装目录,打开conf\下的settings.xml文件,修改其中的<localRepository>,好比将其修改成 中间就是所要指定的目录,如对以上的项目,执行了mvn install项目后,不只在根目录下生成target\目录,同时还会将生成的jar文件存放到Repository中,即E:/app/m2/repository中
*mvn site //生成项目相关信息的网站
mvn eclipse:eclipse //生成Eclipse 项目文件及包引用定义,注意,需确保定义Classpath Variables: M2_REPO,指向本地maven类库目录。执行完了后,就能够将源码项目导入elipse。
mvn eclipse:clean //清除Eclipse 项目文件及包引用定义文件。
若是想要跳过测试,则加上-Dmaven.test.skip=true参数,如:mvn install -Dmaven.test.skip=true。
三、mvn的运行简单机制
经过pom.xml来进行构建。 好比Pom.Xml以上项目中的pom.xml文件
<modelVersion> --描述这个POM文件听从哪一个版本的项目描述符;
<groupId> -- 针对一个项目的普贤遍惟一识别符。一般用一个彻底正确的包的名字来与其余项目的相似名字来进行区分;好比以上的项目,生成的(java)源文件会放在根目录下的\target\classes\com\sunvalley\demo中,\com\sunvalley\demo即是这里<groupId>所惟一标识的;
<artifactId> -- 项目的通用名称
<packaging> -- 打包扩展名(JAR、WAR、EAR),举个例子jar,war,pom Plugings可以建立他们本身的包,包括包的类型;好比以上的项目生成的core-1.0.jar文件
<name> -- 当前项目的全称;
<version> --当前项目产生的artifact的当前版本;
<description> -- 当前项目的一个细节描述;
除此以外还有一些其它的元素,如<dependencies>
<dependencies>这个元素描述了全部与当前项目相关的依赖。
<dependencies>
<dependency> 能够配置多个相关的依赖
<groupId>activation</groupId> 所依赖组件的标识符
<version>1.0.1</version> 所依赖组件的版本
<properties> 所依赖组件的属性
<war.bundle.jar>true</war.bundle.jar>
</properties>
</dependency>
</dependencies>
好比以上项目中的
这是在以上项目中进行unit test所要用到的一个工具junit。groupId是该组件的标识符,artifactId表示该组件的通用名称,version表示该组件的版本,scope:用于限制相应的依赖范围,还有其余的几种范围如
compaile :默认范围,用于编译
runtime:在执行时,须要使用
test:用于test任务时使用
此外在<dependencies>中能够配置多个<dependency>,即多个组件的配置
四、Maven-proxy的使用
#maven-proxy的做用
maven-proxy是你访问maven仓库(repository)的代理,它能够链接多个maven仓库,但对你来讲,你只须要知道maven-proxy就够了。
更重要的是,maven-proxy能够看做是maven仓库在你本地的缓存,这在团队开发的时候会节省下载jar包的时间。好比,你的团队有10我的,默认的状况下maven repository的服务器为http://repo2.maven.org/maven2 ,这个http://repo2.maven.org/maven2 可能访问很慢。开发中,10我的都须要分别链接http://repo2.maven.org/maven2 下载。如今你本地假设了一个maven-proxy B。全部的人都直接链接B。这样,只有第一我的在下载时,B会从http://repo2.maven.org/maven2 下载jar包,同时缓存,其余9我的只须要从B下载就够了。那么如何让B来访问http://repo2.maven.org/maven2 呢
#配置代理
##打开安装maven的目录下的conf目录下的settings.xml文件
##配置其中的<profiles>…</profiles>和<activeProfiles>…</activeProfiles>元素,如将它们配置为以下:其中的<url>就是服务器所在的url,注<pro
##保存后,将配置好的settings.xml文件拷贝到本地的repository仓库的同级目录下,好比说放在E:\app\m2
##此时,从新启动该服务器,以后对以上的项目(从SVN下载下来的项目)进行打包,即如该项目放在E:\workspace\java\materias\poc\maven\core目录下,从新打开一个命令窗口,用cd命令转到该目录下,执行mvn compile即编译该项目的命令,此时会出现像以下的结果:
这说明已经成功的在服务器上download了文件oscache-2.4.jar,到这里就已经代理成功了,如要访问其它的服务器,只需在配置settings.xml文件的时候,服务器的全称改成此服务器的全称便可,如:
<url>的中间即是所要访问服务器的全称。
注:有关于服务器的设置请参看有关的附录。
五、解决Maven内存溢出的问题
找到文件%MAVEN_HOME%\bin\mvn.bat,这就是启动Maven的脚本文件,找到该文件中如下代码所在的行:
@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE...
它的意思是你能够设置一些Maven参数,咱们就在该行下面加入如下行:
set MAVEN_OPTS= -Xms256m -Xmx512m
上述设置表示Java堆得大小范围为256M-512M,通过上述设置以后,当再运行Maven命令如 mvn -version 的时候,你会看到以下的输出:
c:\>mvn -versionc:\>set MAVEN_OPTS= -Xms128m -Xmx512m.......
六、忽略失败
当你运行一个Maven构建的时候,它会包含一系列的项目,每一个项目能够成功或者失败。你能够三种可选的失败模式:
最快失败模式:Maven会在遇到第一个失败的时候失败(中止)。
最后失败模式:Maven会在构建最后失败(中止)。若是Maven refactor中一个失败了,Maven会继续构建其它项目,并在构建最后报告失败。
从不失败模式:Maven历来不会为一个失败中止,也不会报告失败。