《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
浙公网安备 33010602011771号