1.<
dependency> 元素定义了项目的相关依赖,其中有一些元素,各自的定义为:
- <groupId> : 项目或者组织的唯一标识,并且配置时生成路径也是由此生成的.如 <groupId>com.qmbb</groupId> 生成的相对路径为 com/qmbb (生成的路径在本地的 ~./m2/repository 中)
- <artifactId> 项目的通用名称 (也会由此生成路径)
- <version> 项目的版本
- <packaging> 打包机制 如pom, jar, maven-plugin, ejb, war, ear, rar, par
- <name> && <url> pom提供的描述性的元素,和可阅读的名字 可不选
- <scope> 主要管理依赖的部署,现在有五个值
- compile 缺省值,适用于所有阶段,会随着项目一起发布. 编译和打包的时候会将依赖存进去 (默认值)
- 被依赖的Maven构件在compile、runtime和test的时候都可以在classpath中找到
- provided 类似于compile,期望JDK,容器或使用者会提供这个依赖 只能作用于编译和测试时,没有传递性
- 被依赖的Maven构件在compile和test的时候都可以在classpath中找到,在runtime的时候由JDK或容器提供
- runtime 只在运行时使用, 如JDBC驱动,适用于运行和测试阶段
- 被依赖的Maven构件在runtime和test的时候都可以在classpath中找到,在compile时不是必须的
- test 只在测试时使用,用于编译和运行测试代码.不会随项目发布
- 被依赖的Maven构件在test的时候可以在classpath中找到,在compile和runtime时不是必须的
- system 类似于provided.需要显式提供包含依赖的jar,Maven不会在Repository中查找它
- 被依赖的Maven构件在compile和test的时候都可以在classpath中找到,在runtime的时候必须显式将JAR加入到classpath中
- import 只使用在<dependencyManagement>中,表示从其它的pom中导入的<dependency>配置
- compile 缺省值,适用于所有阶段,会随着项目一起发布. 编译和打包的时候会将依赖存进去 (默认值)
2.maven的生命周期
- 清除生命周期(删除整个构建目录,target目录)
- mvn clean
- 验证项目是否正确
- validate
- 编译项目的源代码
- compile
- 使用合适的单元测试框架运行测试。这些测试应该不需要代码被打包或发布
- test
- 将编译好的代码打包成可分发的格式 ,如JAR,WAR,或者EAR
- package
- 执行所有检查,验证包是有效的,符合质量规范
- verify
- 安装包至本地仓库,以备本地的其它项目作为依赖使用
- install
- 复制最终的包至远程仓库,共享给其它开发人员和项目(通常和一次正式的发布相关)
- deploy
3.
pom的文件结构
- pom的模型版本
- <modelVersion>4.0.0</modelVersion>
- 基本配置
- build配置
- 环境配置
- 其他信息等
4.
多模块聚合结构
- maven3开始支持maven项目的多模块(multi-modules)结构.这样的Maven项目成为聚合项目.通常由一个父模块和若干个子模块构成.
- 父模块必须以pom为打包类型
- 父模块的pom中的<modules> 必须给出所有的子模块
- 其中的每一个modules都是一个Maven项目
- 示例
- <groupId>com.quanminbb</groupId>
<artifactId>qmxbb-platform</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>modules</module>
<module>webapps</module>
</modules>
- <groupId>com.quanminbb</groupId>