maven实战 读书笔记一#高级程序员进阶之路#
2011-05-31 20:41
197 查看
第1章 Maven简介
maven是一种优秀强大的构建工具,帮助我们自动化构建过程,从清理、编译、测试、生产报告、打包再到部署。maven主要服务于java平台的项目构建、依赖管理等。
maven通过坐标体系唯一的定位到一个构件(artifact)。
maven为全世界的java开发者提供了一个免费的中央仓库;它的衍生工具(如nexus),可以帮助我们进行快速的搜索。
和Make一样,Ant也都是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务。针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,Maven就执行内置的、完整的构建过程。这在很大程度上消除了重复。
maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户再项目间切换的时候就免去了额外的学习成本,可以说是“约定优于配置”(Convention Over Configuration)。
第3章 Maven使用入门
就像Make的Makefile、Ant的build.xml,Maven项目的核心是pom.xml。
"mvn clean compile":clean告诉maven清理输出目录target/;compile告诉maven编译项目主代码(maven约定是在src/main/java下)。执行过程中,maven首先执行clean:clean任务,删除target/目录。默认情况下,maven构建的所有输出都在target/目录中;接着执行resources:resources任务,获取项目配置资源(maven约定是在src/main/resources下);最后执行compiler:compile任务,将项目驻代码编译至target/classes目录下。
上面提到的clean:clean、resources:resources和compiler:compile对应了一些Maven插件及插件目标,比如clean:clean是clean插件的clean目标,compiler:compile是compiler插件的compile目标。
"mvn clean test":maven实际执行的可不止这两个任务,还有clean:clean、resources:resources、compiler:compile、resources:testResources以及compiler:testCompile。在Maven执行测试(test)之前,它会先自动执行项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作,这是Maven生命周期的一个特性。
"mvn clean package":maven会在打包之前执行编译、测试等操作,然后会调用jar插件的jar目标将项目主代码打包成一个jar或war等。打包成功后,就可以复制这个jar文件到其他项目的classpath中使用,但是如何才能让其他的maven项目直接引用这个jar呢?就用到了下面的命令:
"mvn clean install":实际是在打包之后,再执行安装任务install:install。从输出结果可以看到该任务将项目输出的jar安装到本地maven库。
在项目的根目录中放置pom.xml,在src/main/java目录中放置项目的主代码,在src/test/java中放置项目的测试代码。之所以一步一步地展示这些步骤,是为了能让可能是Maven初学者的你得到最实际的感受。我们称这些基本的目录结构和pom.xml文件内容称为项目的骨架,当第一次创建项目骨架的时候,你还会饶有兴趣地去体会这些默认约定背后的思想,第二次,第三次,你也许还会满意自己的熟练程度,但第四、第五次做同样的事情,你可能就会恼火了。
每次都要自己创建pom文件和约定的文件夹,你就觉得繁琐的,所以就有archetype这个插件,它的generate命令,就可以帮助我们选择已经定义好的项目骨架,帮助我们搭建出项目的基本结构。
默认情况下,maven假设主代码位于src/main/java目录;项目资源位于src/main/resources;对应的,默认的测试代码目录是src/test/java;
groupid、artifactid、version是任何一个maven项目最基本的坐标。
maven中央仓库 http://repo1.maven.org/maven2/
POM 文件中还有一个值为 test 的元素 scope,scope 为依赖范围,若依赖范围为 test 则表示该依赖只对测试有效,换句话说,测试代码中的 import JUnit 代码是没有问题的, 但是如果我们在主代码中用 import JUnit 代码,就会造成编译错误。如果不声明依赖范 围,那么默认值就是 compile,表示该依赖对主代码和测试代码都有效。
本文出自 “热爱-专业-从容” 博客,请务必保留此出处http://tanlun.blog.51cto.com/3142453/578654
maven是一种优秀强大的构建工具,帮助我们自动化构建过程,从清理、编译、测试、生产报告、打包再到部署。maven主要服务于java平台的项目构建、依赖管理等。
maven通过坐标体系唯一的定位到一个构件(artifact)。
maven为全世界的java开发者提供了一个免费的中央仓库;它的衍生工具(如nexus),可以帮助我们进行快速的搜索。
和Make一样,Ant也都是过程式的,开发者显式地指定每一个目标,以及完成该目标所需要执行的任务。针对每一个项目,开发者都需要重新编写这一过程,这里其实隐含着很大的重复。Maven是声明式的,项目构建过程和过程各个阶段所需的工作都由插件实现,并且大部分插件都是现成的,开发者只需要声明项目的基本元素,Maven就执行内置的、完整的构建过程。这在很大程度上消除了重复。
maven对于项目目录结构、测试用例命名方式等内容都有既定的规则,只要遵循了这些成熟的规则,用户再项目间切换的时候就免去了额外的学习成本,可以说是“约定优于配置”(Convention Over Configuration)。
第3章 Maven使用入门
就像Make的Makefile、Ant的build.xml,Maven项目的核心是pom.xml。
"mvn clean compile":clean告诉maven清理输出目录target/;compile告诉maven编译项目主代码(maven约定是在src/main/java下)。执行过程中,maven首先执行clean:clean任务,删除target/目录。默认情况下,maven构建的所有输出都在target/目录中;接着执行resources:resources任务,获取项目配置资源(maven约定是在src/main/resources下);最后执行compiler:compile任务,将项目驻代码编译至target/classes目录下。
上面提到的clean:clean、resources:resources和compiler:compile对应了一些Maven插件及插件目标,比如clean:clean是clean插件的clean目标,compiler:compile是compiler插件的compile目标。
"mvn clean test":maven实际执行的可不止这两个任务,还有clean:clean、resources:resources、compiler:compile、resources:testResources以及compiler:testCompile。在Maven执行测试(test)之前,它会先自动执行项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作,这是Maven生命周期的一个特性。
"mvn clean package":maven会在打包之前执行编译、测试等操作,然后会调用jar插件的jar目标将项目主代码打包成一个jar或war等。打包成功后,就可以复制这个jar文件到其他项目的classpath中使用,但是如何才能让其他的maven项目直接引用这个jar呢?就用到了下面的命令:
"mvn clean install":实际是在打包之后,再执行安装任务install:install。从输出结果可以看到该任务将项目输出的jar安装到本地maven库。
在项目的根目录中放置pom.xml,在src/main/java目录中放置项目的主代码,在src/test/java中放置项目的测试代码。之所以一步一步地展示这些步骤,是为了能让可能是Maven初学者的你得到最实际的感受。我们称这些基本的目录结构和pom.xml文件内容称为项目的骨架,当第一次创建项目骨架的时候,你还会饶有兴趣地去体会这些默认约定背后的思想,第二次,第三次,你也许还会满意自己的熟练程度,但第四、第五次做同样的事情,你可能就会恼火了。
每次都要自己创建pom文件和约定的文件夹,你就觉得繁琐的,所以就有archetype这个插件,它的generate命令,就可以帮助我们选择已经定义好的项目骨架,帮助我们搭建出项目的基本结构。
默认情况下,maven假设主代码位于src/main/java目录;项目资源位于src/main/resources;对应的,默认的测试代码目录是src/test/java;
groupid、artifactid、version是任何一个maven项目最基本的坐标。
maven中央仓库 http://repo1.maven.org/maven2/
POM 文件中还有一个值为 test 的元素 scope,scope 为依赖范围,若依赖范围为 test 则表示该依赖只对测试有效,换句话说,测试代码中的 import JUnit 代码是没有问题的, 但是如果我们在主代码中用 import JUnit 代码,就会造成编译错误。如果不声明依赖范 围,那么默认值就是 compile,表示该依赖对主代码和测试代码都有效。
本文出自 “热爱-专业-从容” 博客,请务必保留此出处http://tanlun.blog.51cto.com/3142453/578654
相关文章推荐
- maven实战 读书笔记二#高级程序员进阶之路#
- maven实战 读书笔记四#高级程序员进阶之路#
- maven实战 读书笔记三#高级程序员进阶之路#
- Java程序员进阶路线-高级java程序员养成
- 读书笔记之:C++编程惯用法——高级程序员常用的方法和技巧
- 如何进阶成为高级程序员
- Java 进阶 从低级程序员到高级程序员
- 如何进阶c++高级程序员
- 从程序员到高级系统架构师完美进阶
- 10个重要部分,讲述从程序员到高级系统架构师该如何进阶?
- 10个重要部分,讲述从程序员到高级系统架构师该如何进阶?
- Java高级程序员面试宝典之网站架构
- 《UNIX环境高级编程》十七高级进程间通信读书笔记
- 重构与高级程序员review
- 一位高级程序员对IT新人的几点建议
- 一梦浮生2012 IOS高级进阶目录
- 初级程序员和高级程序员的区别(转)
- 《maven实战》读书笔记(三)——仓库