maven3 自学笔记(一) Maven依赖

来源:互联网 发布:水弹的数据 编辑:程序博客网 时间:2024/06/07 18:26

Maven 的依赖

1、依赖作用域:

通过<scope></scope> 来控制依赖的范围。

例如:

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>4.10</version>

<scope>test</scope>

</dependency>

只有当test的时候,才会使用此依赖。将 junit的包打入

默认的依赖范围是 compile

常用的依赖如下:

<scope>test</scope> 在测试范围有效,在编译和打包的时候不会依赖

<scope>compile</scope>在编译范围有效,在编译和打包的时候会将这个依赖存储进去

<scope>provided</scope>在编译和测试的时候有效,但是要警惕 生成war包时候,不会导入,理由是,服务器的web服务已经打开,再打包会和web服务器的包冲突

<scope>runtime</scope>在运行的时候依赖,在编译的时候不会去依赖

2、传递依赖冲突

场景一: (-->代表依赖)

A-->B1.0

C-->B1.1

D-->AC

对于以上场景 Maven是通过  pom.xml里 如果 先依赖 A ,则是 B1.0,如果D先依赖 C则是B1.1

场景二:

A-->B1.0

C-->B1.1

D-->AC

E--->DC

对于以上场景,maven是通过选择最短路径来判定的。

比如 E--->C---B1.1  只有两级依赖

E-->D-->A-->B1.0  有三级依赖。

所以 在E中是依赖 B1.1

如果想要手动控制 依赖可以使用:

在依赖的对象中加入如下配置,将该依赖中的某些包剔除出去

<exclusions>

          <exclusion>

          <groupId>B</groupId>

          <artifactId>B</artifactId>

          </exclusion>

</exclusions>

3、依赖的聚合

未了避免每个模块都打包,可以使用一个pom.xmle配置 

  <groupId>随便取名字</groupId>

  <artifactId>随便去名字</artifactId>

  <version>随意版本号</version>

  <packaging>pom</packaging>

<modules>

<module>A模块相对路径</module>

<module>B模块的相对路径</module>

<module>C模块的相对路径</module>

<module>D模块的相对路径</module>

</modules>

执行以上 的pom之后,他会将所有的子模块全部打包

4、使用maven继承

   可以定义 类似父类的  pom.xml

   子模块 的pom.xml继承  父的pom.xml

代码如下:

<parent>

<groupId>cn.group</groupId>

<artifactId>parent</artifactId>

<version>0.0.1</version>

<relativePath>../parent/pom.xml</relativePath>

</parent>

继承可以把依赖全部继承。

可以使用选择依赖。在父pom.xml中定义

<dependencyManagement>

...

</dependencyManagement>

在 子pom中通过

<groupId>cn.group.xx</groupId>

<artifactId>xx</artifactId>

原创粉丝点击