美文网首页
POM之间的关系

POM之间的关系

作者: _花 | 来源:发表于2022-04-07 14:26 被阅读0次
image.png

可选依赖 Optional Dependencies

当一个项目A依赖另一个项目B时,项目A可能用到了项目B很少一部分功能,此时就可以在A中配置对B的可选依赖.

<project>
  ...
  <dependencies>
    <!-- declare the dependency to be set as optional -->
    <dependency>
      <groupId>sample.ProjectB</groupId>
      <artifactId>Project-B</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <optional>true</optional> <!-- value will be true or false only -->
    </dependency>
  </dependencies>
</project>

如果有一个新的项目C依赖A,即:Project-C <-- Project-A <-- Project-B。此时项目C就不会依赖项目B了。
如果项目C用到了涉及项目B的功能,那么就需要在pom.xml中重新配置对项目B的依赖。

依赖排除 Dependency Exclusions

1.第一种

依赖关系为:A<–B<–C

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
            <version>${springboot.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

当然,对于多重依赖,配置也很简单只需要在最外层依赖里排除即可

2.第二种

如果我们的项目有两个依赖项:A & B,而且A和B同时依赖了C,但不是同一个版本

  • 添加检查插件
<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-project-info-reports-plugin</artifactId>
        </plugin>
    </plugins>
</reporting>

然后运行:mvn project-info-reports:dependencies,来查看依赖项报告

  • 去除依赖项
<dependency>
      <groupId>org.apache.struts</groupId>
      <artifactId>struts2-core</artifactId>
      <version>${struts.version}</version>
      <exclusions>
          <exclusion>
              <groupId>org.freemarker</groupId>
              <artifactId>freemarker</artifactId>
          </exclusion>
      </exclusions>
</dependency>

父子继承其他pom.xml配置的机制

在父项目中新建Module作为子项目

 <parent>
        <artifactId>collection-management-server</artifactId>
        <groupId>com.baidu.aduhdmap</groupId>
        <version>1.0.0-SNAPSHOT</version>
        <relativePath>../ParentProject/pom.xml</relativePath>
</parent>

relativePath默认为…/pom.xml,如果路径不一样需要手动指定

dependencies 和 dependencyManagement 标签

在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。

需要注意的是:
dependencyManagement里只是声明依赖,并不实现引入。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom。
如果直接在父pom文件中<dependencies>标签中写入,则无需在子组件再次写入,所有子组件共用

plugins 和 pluginmanagement

和上述关系类似

相关文章

  • POM之间的关系

    可选依赖 Optional Dependencies 当一个项目A依赖另一个项目B时,项目A可能用到了项目B很少一...

  • maven中的dependencies与dependencyMa

    实验:结合一个练习项目讲解两者之间的关系 项目关系图1 验证:pom文件 d4cshiro-parent pom....

  • Maven

    @Maven POM 详解 使用maven命令来分析jar包之间的依赖关系

  • Maven概述

    POM组成:项目基本信息构建环境POM关系构建设置 查看实际生效的pom: mvn help:effective-...

  • 2018-09-28

    maven的作用pom 1.管理Jar (1).增加第三方Jar (2)jar包之间的依赖关系 2.将项目拆分若...

  • RabbitMq 消息发布/确认 以及对确认失败的消息的处理

    这部分没有涉及到交换机,所以一个消息只能被消费一次,多个消费者之间是竞争关系 1、连接rabbitMq pom文件...

  • 模块设计

    一个完整系统的各模块关系示例。每个服务都应当是一个独立的项目, 彼此之间只是通过 pom 引用。 普通目录 doc...

  • 在项目中引入slf4j的方法(以Maven为例)

    打开项目的pom.xml,在之间添加如下配置:

  • 关系之间

    史蒂芬柯维有一个重要的概念:生活中所有的事情可以分成“你所关注的”,“你所能影响的。”,我们应该把注意力放在...

  • 关系之间

    阿囡很容易喜欢上给她造成距离感的人, 一个隔壁班的同学, 一个高年级的学长, 一个时常出现又时常消失的身边人, 一...

网友评论

      本文标题:POM之间的关系

      本文链接:https://www.haomeiwen.com/subject/tqpjsrtx.html