之所以看Maven,是因为看到一些文章,讲Maven是如何支持项目构建的,是下一代Ant……。于是乎,经不起诱惑,也开始接触了一下Maven。
Maven的基本概念先不讲,这里主要记录我的一些体会。
我对Maven印象最为深刻的是:Maven其实不是Ant,Ant通过Task完成很多关于项目编译,打包之类的问题,然后提供了很多的Task,完成其它的工作。Maven的目标其实非常特定,它就是为了简化项目构建的过程。
在日常开发当中,我们会有很多个project,然后每个Project都会import一堆相关的jar文件,然后还需要自己搞定jar文件的版本。虽然,我现在会把这些jar文件放在一个目录,然后每次都从那个目录中去add jar。但是,这样也是比较烦琐。
此外,如果一个项目需要用到其它项目的JAR,而其它项目也是正在开发当中的。那么,一般的做法,如果两个项目自己都可以控制的话,那么就自己手工build。要不然的话,就去通知另外一个项目提交代码,打成Jar包,供另外的项目所引用。这种依赖关系的控制也是比较麻烦。所以,很多项目要么就干脆防同一个项目了,一build的时候就需要build所有的类,确实给每个人增加了很多负担。
Maven的目标就是要简化项目的构建过程。从Maven来源于Turbine的实践,可以知道它当时就是要解决多个类似项目引用类似JAR,构建方式不同的问题。但是,在现实世界中,各个项目确实会在构建方式和代码结构上有所不同。因此,能够做的就是将变化的和不变化的分开。
Maven的方式是创建项目工程模型,通过定义POM文件来描述项目的资源构建方式。这个POM中包含的内容相当的多,但是通常应用的可能不会很多:)
另外,针对各种不同的依赖,Maven有她的管理方式。Center Repository。中央仓库(其实我们自己也有中央仓库,只是没有它这么好)。maven build好的工程会放到Center Repository,这个东西,一方面当作配置库,一方面是个资源库。然后在本地找不到的东西,可以去远端的Center Repository找。因此,这个Center Repository的组织方式,也是有一套讲究的。一个项目最终作为JAR, WAR或者其它方式在Center Repository存储,一般是以项目名称来组织,这个就是groupId,然后通过artifactsId来表示,另外,通过Version来表示artifacts的版本:)应用途径相当简单。
到目前为止,我只是学会了Maven的一些最基本的操作。5 min 入门 ,哈哈
不变的还有:良好项目构建的过程。
Maven的基本概念先不讲,这里主要记录我的一些体会。
我对Maven印象最为深刻的是:Maven其实不是Ant,Ant通过Task完成很多关于项目编译,打包之类的问题,然后提供了很多的Task,完成其它的工作。Maven的目标其实非常特定,它就是为了简化项目构建的过程。
在日常开发当中,我们会有很多个project,然后每个Project都会import一堆相关的jar文件,然后还需要自己搞定jar文件的版本。虽然,我现在会把这些jar文件放在一个目录,然后每次都从那个目录中去add jar。但是,这样也是比较烦琐。
此外,如果一个项目需要用到其它项目的JAR,而其它项目也是正在开发当中的。那么,一般的做法,如果两个项目自己都可以控制的话,那么就自己手工build。要不然的话,就去通知另外一个项目提交代码,打成Jar包,供另外的项目所引用。这种依赖关系的控制也是比较麻烦。所以,很多项目要么就干脆防同一个项目了,一build的时候就需要build所有的类,确实给每个人增加了很多负担。
Maven的目标就是要简化项目的构建过程。从Maven来源于Turbine的实践,可以知道它当时就是要解决多个类似项目引用类似JAR,构建方式不同的问题。但是,在现实世界中,各个项目确实会在构建方式和代码结构上有所不同。因此,能够做的就是将变化的和不变化的分开。
Maven的方式是创建项目工程模型,通过定义POM文件来描述项目的资源构建方式。这个POM中包含的内容相当的多,但是通常应用的可能不会很多:)
另外,针对各种不同的依赖,Maven有她的管理方式。Center Repository。中央仓库(其实我们自己也有中央仓库,只是没有它这么好)。maven build好的工程会放到Center Repository,这个东西,一方面当作配置库,一方面是个资源库。然后在本地找不到的东西,可以去远端的Center Repository找。因此,这个Center Repository的组织方式,也是有一套讲究的。一个项目最终作为JAR, WAR或者其它方式在Center Repository存储,一般是以项目名称来组织,这个就是groupId,然后通过artifactsId来表示,另外,通过Version来表示artifacts的版本:)应用途径相当简单。
到目前为止,我只是学会了Maven的一些最基本的操作。5 min 入门 ,哈哈
不变的还有:良好项目构建的过程。
- validate
- generate-sources
- process-sources
- generate-resources
- process-resources
- compile
- package