Maven是一个项目管理和综合工具。Maven提供了开发人员构建一个完整的生命周期框架。开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期。
Maven构建过程
- 生成源码(如果项目使用自动生成源码)
- 从源码生成项目文档;
- 编译源码;
- 将编译后的代码打包成JAR文件或者ZIP文件
- 将打包好的代码安装到服务器、仓库或者其它的地方
pom文件
- modelVersion: 描述这个POM文件是遵从哪个版本的项目描述符。例如:4.0.0
- groupId: groupID是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
- artifactId: artifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
- modules: 一个多模块项目通过一个父POM 引用一个或多个子模块来定义
- parent: maven项目之间的继承关系
- packaging:打包方式,常用pom,jar,war,ear
jar、war、ear的使用和区别
- jar文件,扩展名为Java Application Archive,包含Java类的普通库、资源(resources)、辅助文件(auxiliary files)等。
- war文件,扩展名为Web Application Archive,包含全部Web应用程序。在这种情形下,一个Web应用程序被定义为单独的一组文件、类和资源,用户可以对jar文件进行封装,并把它作为小型服务程序(servlet)来访问。
- ear文件,扩展名为Enterprise Application Archive,包含全部企业应用程序。在这种情形下,一个企业应用程序被定义为多个jar文件、资源、类和Web应用程序的集合。
Maven项目结构:
---- app-parent
|-- pom.xml (pom)
|
|-- app-util
| |-- pom.xml (jar)
|
|-- app-dao
| |-- pom.xml (jar)
|
|-- app-service
| |-- pom.xml (jar)
|
|-- app-web
|-- pom.xml (war)
- 上述简单示意图中,有一个父项目(app-parent)聚合很多子项目(app-util, app-dao, app-service, app-web)。每个项目,不管是父子,都含有一个pom.xml文件。而且要注意的是,小括号中标出了每个项目的打包类型。父项目是pom,也只能是pom。子项目有jar,或者war。根据它包含的内容具体考虑。