《Maven实战》学习笔记

Maven不仅是构建工具,还是一个依赖管理工具和项目信息管理工具。

它提供了中央仓库,能帮我们自动下载构建。

1.10 1.2.3 Make

最早的构建工具,它由Stuart Feldman于1977年在Bell实验室创建。

1.11 1.2.4 Ant

 Ant不是指蚂蚁,而是意指“另一个整洁的工具”(Another Neat Tool),

 它最早用来构建著名的Tomcat,

 1.13 1.3 Maven与极限编程

 Maven更能无缝地支持或者融入到一些主要的XP实践中:

    测试驱动开发(TDD)。

    十分钟构建。  

    持续集成(CI)

    富有信息的工作区。

1.23 2.3 安装目录分析

Bin: 该目录包含了mvn运行的脚本

mvn和mvnDebug有什么区别和关系呢?

  作用就是在运行Maven时开启debug,以便调试Maven本身。

  此外,该目录还包含m2.conf文件,这是classworlds的配置文件

Boot: 该目录只包含一个文件,以maven 3.0为例,该文件为plexus-classworlds-2.2.3.jar

  是一个类加载器框架,相对于默认的java类加载器,它提供了更丰富的语法以方便配置,

  Maven使用该框架加载自己的类库。

Conf: 该目录包含了一个非常重要的文件settings.xml

Lib: 该目录包含了所有Maven运行时需要的Java类库

  还有一点值得一提的是,用户可以在这个目录中找到Maven内置的超级POM,这一点在8.5小节详细解释。

1.25 2.3.2 ~/.m2

mvn help:system。该命令会打印出所有的Java系统属性和环境变量,

Maven根据一套规则来确定任何一个构件在仓库中的位置,这一点本书第6章将会详细阐述。

默认情况下,~/.m2目录下除了repository仓库之外就没有其他目录和文件了,

不过大多数Maven用户需要复制M2_HOME/conf/settings.xml文件到~/.m2/settings.xml。这是一条最佳实践,

 1.27 2.5 安装m2eclipse

 在菜单栏中选择Help,然后选择 Install New Software…

   Location字段中输入http://m2eclipse.sonatype.org/sites/m2e

   与其它工具如Subversion进行集成,这些组件的安装地址为http://m2eclipse.sonatype.org/sites/m2e-extras

  Maven SCM handler for Subclipse (Optional):

    该模块能够帮助我们直接从Subversion服务器签出Maven项目,

    不过前提是需要首先安装Subclipse(http://subclipse.tigris.org/)。

   Maven SCM Integration (Optional):

    Eclipse环境中Maven与SCM集成核心的模块,

    它利用各种SCM工具如SVN实现Maven项目的签出和具体化等操作。

最后,关于m2eclipse的安装,需要提醒的一点是,你可能会在使用m2eclipse时遇到类似这样的错误:
09-10-6 上午01时14分49秒: 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.29 2.7 Maven安装最佳实践

1.30 2.7.1 设置MAVEN_OPTS环境变量

  设置MAVEN_OPTS的值为:-Xms128m -Xmx512m,

1.31 2.7.2 配置用户范围settings.xml

  配置用户范围settings.xml文件还便于Maven升级。

1.32 2.7.3 不要使用IDE内嵌的Maven

  内嵌的Maven通常会比较新,但不一定很稳定,而且往往也会和我们在命令行使用的Maven不是同一个版本

1.34 第3章 Maven使用入门

1.35 3.1 编写POM

代码清单3-1:Hello World的POM

  它还声明了一些POM相关的命名空间及xsd元素,虽然这些属性不是必须的,

  但使用这些属性能够让第三方工具(如IDE中的XML编辑器)帮助我们快速编辑POM。

  根元素下的第一个子元素modelVersion指定了当前POM模型的版本,对于Maven2及Maven 3来说,它只能是4.0.0。

这段代码中最重要的是groupId,artifactId和version三行。这三个元素定义了一个项目基本的坐标,

  groupId定义了项目属于哪个组,这个组往往和项目所在的组织或公司存在关联,

  artifactId定义了当前Maven项目在组中唯一的ID

  version指定了Hello World项目当前的版本,

    本书的6.5小节会详细介绍SNAPSHOT,第13章介绍如何使用Maven管理项目版本的升级发布。

  最后一个name元素声明了一个对于用户更为友好的项目名称

  ,虽然这不是必须的,但我还是推荐为每个POM声明name,以方便信息交流。

使用POM的好处:
  没有任何实际的Java代码,我们就能够定义一个Maven项目的POM,这体现了Maven的一大优点,
  它能让项目对象模型最大程度地与实际代码相独立,我们可以称之为解耦,或者正交性,
  这在很大程度上避免了Java代码和POM代码的相互影响。
  比如当项目需要升级版本时,只需要修改POM,而不需要更改Java代码;
  而在POM稳定之后,日常的Java代码开发工作基本不涉及POM的修改。

1.36 3.2 编写主代码 

1.37 3.3 编写测试代码

 代码清单3-4:Hello World的测试代码

  在JUnit 3中,约定所有需要执行测试的方法都以test开头,这里我们使用了JUnit 4,但我们仍然遵循这一约定,
  在JUnit 4中,需要执行的测试方法都应该以@Test进行标注。

  构建在执行compiler:testCompile任务的时候失败了,
  Maven输出提示我们需要使用-source 5或更高版本以启动注释,
  由于历史原因,Maven的核心插件之一compiler插件默认只支持编译Java 1.3,
  因此我们需要配置该插件使其支持Java 5

  surefire:test任务运行测试,surefire是Maven世界中负责执行测试的插件

  安装任务install:install,从输出我们看到该任务将项目输出的jar安装到了Maven本地仓库中,
  我们可以打开相应的文件夹看到Hello World项目的pom和jar。

  为了生成可执行的jar文件,我们需要借助maven-shade-plugin,

1.39 3.5 使用Archetype生成项目骨架

1.41 3.6.1 导入Maven项目

 

 

 

 http://download.csdn.net/detail/defonds/3726133

 

还没看: http://down.51cto.com/tag-Maven3.html

文档来源:http://wenku.baidu.com/view/80e4c3136edb6f1aff001fdd.html

posted @ 2012-05-19 15:27  万法自然~  阅读(204)  评论(0)    收藏  举报