了解Maven基础

126 阅读2分钟

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>