Hello Maven

Maven主要服务于基于Java平台的项目构建、依赖管理和项目信息管理。无论是小型的开源类库项目,还是大型的企业级应用;无论是传统的瀑布式开发,还是流行的敏捷模式,Maven都能大显身手。

在Windows上安装Maven
在安装Maven之前,首先要确认你已经正确安装了JDK
下载Maven http://maven.apache.org/download.html
新建环境变量M2_HOME D:\bin\apache-maven-3.0
追加path %M2_HOME%\bin;

安装Eclipse Maven插件
搜索m2eclipse安装
关于m2eclipse的安装,需要提醒的一点是,你可能会在使用m2eclipse时遇到类似这样的错误:
Eclipse is running in a JRE, but a JDK is required
Some Maven plugins may not work when importing projects or updating source folders.
这是因为Eclipse默认是运行在JRE上的,而m2eclipse的一些功能要求使用JDK,解决方法是配置Eclipse安装目录的eclipse.ini文件,添加vm配置指向JDK,如:
--launcher.XXMaxPermSize
256m
-vm
D:\java\jdk1.6.0_07\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms128m
-Xmx256m

一些最佳实践
1、设置MAVEN_OPTS环境变量
运行mvn命令实际上是执行了Java命令,既然是运行Java,那么运行Java命令可用的参数当然也应该在运行mvn命令时可用。这个时候,MAVEN_OPTS环境变量就能派上用场。
我们通常需要设置MAVEN_OPTS的值为:-Xms128m -Xmx512m,因为Java默认的最大可用内存往往不能够满足Maven运行的需要,比如在项目较大时,使用Maven生成项目站点需要占用大量的内存,如果没有该配置,我们很容易得到java.lang.OutOfMemeoryError。因此,一开始就配置该变量是推荐的做法。

关于如何设置环境变量,请参考前面设置M2_HOME环境变量的做法,尽量不要直接修改mvn.bat或者mvn这两个Maven执行脚本文件。因为如果修改了脚本文件,升级Maven时你就不得不再次修改,一来麻烦,二来容易忘记。同理,我们应该尽可能地不去修改任何Maven安装目录下的文件。

2、配置用户范围settings.xml
Maven用户可以选择配置$M2_HOME/conf/settings.xml或者~/.m2/settings.xml。前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。
我们推荐使用用户范围的settings.xml,主要原因是为了避免无意识地影响到系统中的其他用户。当然,如果你有切实的需求,需要统一系统中所有用户的settings.xml配置,当然应该使用全局范围的settings.xml。
除了影响范围这一因素,配置用户范围settings.xml文件还便于Maven升级。直接修改conf目录下的settings.xml会导致Maven升级不便,每次升级到新版本的Maven,都需要复制settings.xml文件,如果使用~/.m2目录下的settings.xml,就不会影响到Maven安装文件,升级时就不需要触动settings.xml文件。

3、 不要使用IDE内嵌的Maven
无论是Eclipse还是NetBeans,当我们集成Maven时,都会安装上一个内嵌的Maven,这个内嵌的Maven通常会比较新,但不一定很稳定,而且往往也会和我们在命令行使用的Maven不是同一个版本。这里有会出现两个潜在的问题:首先,较新版本的Maven存在很多不稳定因素,容易造成一些难以理解的问题;其次,除了IDE,我们也经常还会使用命令行的Maven,如果版本不一致,容易造成构建行为的不一致,这是我们所不希望看到的。因此,我们应该在IDE中配置Maven插件时使用与命令行一致的Maven。
在m2eclipse环境中,点击菜单栏中的Windows,然后选择Preferences,在弹出的对话框中,展开左边的Maven项,选择Installation子项,在右边的面板中,我们能够看到有一个默认的Embedded Maven安装被选中了,点击Add…然后选择我们的Maven安装目录M2_HOME,添加完毕之后选择这一个外部的Maven

建立Maven项目
1、编写pom文件

<?xml version="1.0" encoding="UTF-8"?>  

<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> <!-- 指定了当前POM模型的版本,对于Maven2及Maven 3来说,它只能是4.0.0 -->

  <groupId>com.wodsy.lab</groupId>  <!-- groupId定义了项目属于哪个组,如果你的公司是mycom,有一个项目为myapp,那么groupId就应该是com.mycom.myapp -->

  <artifactId>hello_maven</artifactId>  <!-- artifactId定义了当前Maven项目在组中唯一的ID -->

  <version>1.0-SNAPSHOT</version>  <!-- SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本 -->

 

  <name>Maven Hello World Project</name>  <!-- name元素声明了一个对于用户更为友好的项目名称 -->

 

  <dependencies>  

    <dependency>  

       <groupId>junit</groupId>  

       <artifactId>junit</artifactId>  

       <version>4.7</version>  

       <scope>test</scope>  

    </dependency>  

  </dependencies>

 

</project>  


2、编写主代码
默认情况下,Maven假设项目主代码位于src/main/java目录
配置文件位于src/main/resources
代码编写完毕后,使用Maven进行编译,在项目根目录下运行命令 mvn clean compile
clean告诉Maven清理输出目录target/,compile告诉Maven编译项目主代码

3、编写测试代码
默认情况下,Maven假设项目主代码位于src/test/java目录
配置文件位于src/test/resources
试用例编写完毕之后就可以调用Maven执行测试,运行 mvn clean test

4、打包和运行
执行命令 mvn clean package 进行打包

5、执行安装任务
mvn clean install
该任务将项目输出的jar安装到了Maven本地仓库中

我们已经将体验了Maven最主要的命令:mvn clean compile、mvn clean test、mvn clean package、mvn clean install。执行test之前是会先执行compile的,执行package之前是会先执行test的,而类似地,install之前会执行package。我们可以在任何一个Maven项目中执行这些命令,而且我们已经清楚它们是用来做什么的。

 

整理自《Maven实战(许晓斌)》

你可能感兴趣的:(maven)