maven

项目管理工具——Maven学习笔记(十、Maven传递依赖)

2017-05-18  本文已影响30人  鲁克巴克诗

传递依赖关系

假设 A 依赖 B , B 依赖 C ,我们称 A 对 B 是第一直接依赖, B 对 C 是第二直接依赖, A 对 C 是传递依赖。

现在使用Eclipse做实验证明这个结论~
1.首先创建三个Maven项目。

Paste_Image.png

2.让【maventest-a】依赖【maventest-b】。那么首先需要将【maventest-b】打包安装到本地仓库,这样【maventest-a】才可以在本地仓库找到它,完成依赖。

Paste_Image.png Paste_Image.png Paste_Image.png Paste_Image.png

这样,【maventest-b】的包就存在于本地仓库了~然后在pom.xml文件中添加依赖如下:


Paste_Image.png

编译【maventest-a】。

Paste_Image.png Paste_Image.png

成功!同样照这个步骤,完成【maventest-b】依赖【maventest-c】。

完成【maventest-c】的jar包安装到本地仓库后,【maventest-b】的pom.xml文件添加【maventest-c】的依赖,然后编译【maventest-b】。


Paste_Image.png

3.这时【maventest-a】对【maventest-c】就是传递依赖。虽然【maventest-a】没有直接依赖于【maventest-c】,但由于【maventest-a】直接依赖【maventest-b】,【maventest-b】又直接依赖于【maventest-c】,所以【maventest-a】是间接依赖了【maventest-c】。
实践出真理,如图可知,我们的结论是正确的:

Paste_Image.png

4.但是呢,假如我们不想要这个传递依赖呢。就是【maventest-a】只想依赖【maventest-b】,不想跟【maventest-c】有关系,该怎么办呢?这里,我们就需要用到排除依赖。很简单,在pom.xml里添加<exclusions>标签,具体如图:

Paste_Image.png

如图所述,在依赖【maventest-b】的时候,我们排除了【maventest-c】。

Paste_Image.png

果然只剩下【maventest-b】了!


增加一点题外内容,在Eclipse里。有个小问题。

Paste_Image.png

在【JRE System Library】默认是【J2SE-1.5】,但我实际用的是1.8哎,该怎么解决这个问题呢?

Paste_Image.png

找到maven的settings.xml文件,增加如下内容:

<profile>
      <id>jdk-1.8</id>

      <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
      </activation>

      <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
      </properties>
     
    </profile>

这回再新建项目就是正确的了!

Paste_Image.png
上一篇下一篇

猜你喜欢

热点阅读