Maven基础
· POM 代表工程对象模型。它是使用Maven 工作时的基本组建,是一个xm文件。 · 它被放在工程根目录下,文件命名为pom.xml。 · POM包含了关于工程和各种配置细节的信息,Maven 使用这些信息构建工程。
groupId:项目工程组唯一标识符,通常是域名的反序写法
artifactId: 项目工程唯一标识
version:项目版本(RELEASE 项目发布版本)
dependencies:依赖集
dependency:依赖
Maven常用命令
mvn -V : 查看Maven的版本,也用来检查Maven是否安装成功 mvn compile:编译,将Java源文件编译成class文件 mvn test:执行test目录下的测试用例 mvn package:打包,将Java工程打成jar包 mvn clean:清理环境,清除target文件夹 mvn install:安装,将当前项目安装到Maven的本地仓库中
maven本地仓库路劲:~/.m2
Maven相关特性
传递依赖和排除依赖
专递依赖:如果我们的项目引用了一个jar 包,而该jar 包又引用了其他jar 包。那么在默认情况下,项目编译时,Maven 会把直接用和间接引用的jar包都下载到本地(~/.m2/repository ) 排除依赖:如果我们只想下载直接引用的jar包,那么需要在 pom.xml 中做如下配置(给出需要排除的坐标,放在exclusion中)
<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>0.94.17</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
依赖冲突
若项目中多个iar同时引用了相同的iar时,会产生依赖冲突,Maven采用了两种避免冲突的策略,因此在Maven中是不存在依赖冲突的
短路优先 本项目->Ajar-> Bjar -> X.jar
本项目->C.jar -> X,jar (优先) 声明优先
若引用路径长度相同时,在pom.xml中谁先被声明,就使用谁
多模块项目/聚合
父模块pom文件的配置: packaging 类型必须是 pom(父模块解耦)
<groupId>com.demo</groupId>
<artifactId>com</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>
聚合子模块:使用modules标签
<modules>
<module>coupon-common</module>
<module>coupon-template</module>
<module>coupon-settlement</module>
<module>coupon-distribution</module>
</modules>