一个大中型Java项目中,一般由若干个module组成,各个module各司其职,担任整个工程中不同角色。大多数情况下,大多数module都会用到相同的jar包,或者插件。如果每个module中都引入自己喜欢的jar、插件,不仅冗余,而且太多冗余jar包,使得资源浪费。为了统一管理各个module中的library jar plugin,让所有子module都继承一个父pom.xml。有同学说,既然有了继承,我就直接在pom.xml   的 dependencies中声明module中需要的library,不就好了!想想如果有一些module中不需要这样的library,岂不是又要引进冗余jar。而dependencyManagement正好解决了这一问题,他在父pom.xml中,不会直接到repository中解析你定义的依赖,而是在子module中,如果你用到了dependencyManagement中声明的dependency包,这时你只需要声明包的groupid, artifactid,即可,因为dependencyManagement已经替你定义好了版本version,从而既实现了版本统一管理,又可以各取所需!

dependencyManagement用于在父项目中统一对子项目依赖管理,在pom的project节点中定义如下(举例):

  1. <dependencyManagement>
  2. <dependencies>
  3. <dependency>
  4. <groupId>org.slf4j</groupId>
  5. <artifactId>slf4j-api</artifactId>
  6. <version>1.7.12</version>
  7. </dependency>
  8. <dependency>
  9. <groupId>ch.qos.logback</groupId>
  10. <artifactId>logback-core</artifactId>
  11. <version>1.1.3</version>
  12. </dependency>
  1. <span style="white-space:pre">    </span><dependency>
  2. <groupId>junit</groupId>
  3. <artifactId>junit</artifactId>
  4. <version>4.11</version>
  5. <scope>test</scope>
  6. </dependency>
  1. <dependency>
  2. <groupId>ch.qos.logback</groupId>
  3. <artifactId>logback-classic</artifactId>
  4. <version>1.1.3</version>
  5. </dependency>
  6. </dependencies>
  7. </dependencyManagement>

maven之 pluginManagement:

其实,它和dependencyManagement有相似功能,即:由父pom.xml定义该元素,可统一子项目中的插件。引用stackoverflow的问题帖子:

http://stackoverflow.com/questions/10483180/maven-what-is-pluginmanagement

用自己的理解翻译,ps:读者可自行翻译

在你的build中,pluginManagement仅仅是一种在所有module中分享相同插件配置的一种方式。

From Maven document:

pluginManagement: 它是一个被视作插件的一个元素。在很多module中,Plugin Management 以相同方式包含插件元素,而不是为某个特定项目构建(build)配置插件信息

它是用来配置从它继承的项目构建(build)。可是,这仅仅是配置在子module的plugins中确实引用到的插件。每个子module都有权利去覆盖PluginManagement 的定义。

maven 之dependencyManagement 和 pluginManagement的更多相关文章

  1. Maven中dependencyManagement使用

    在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器. 在dependencyManagement下申明的dependencies,Maven ...

  2. Maven 中 dependencyManagement 标签使用

    1.在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器. 2.pom.xml文件中,jar的版本判断的两种途径 1:如果dependenci ...

  3. (转)Maven中的DependencyManagement和pluginmanagement

    背景:最近在学习maven的多模块构建过程中看到DependencyManagement选项,对这个选项的使用做个记录! 区别与联系 这里介绍一个在父项目中的根结点中声明dependencyManag ...

  4. Maven的plugins、pluginManagement和dependencies、dependencyManagement

    plugins和dependencies下边配的都是真实使用的. pluginManagement和dependencyManagement下边配的都只是做声明的,一般配置在顶级pom中. 参考链接: ...

  5. Maven中plugins和pluginManagement的区别

    pluginManagement是表示插件声明,即你在项目中的pluginManagement下声明了插件,Maven不会加载该插件,pluginManagement声明可以被继承. pluginMa ...

  6. Maven 教程(22)— Maven中 plugins 和 pluginManagement

    原文地址https://blog.csdn.net/liupeifeng3514/article/details/80236827 plugins和pluginManagement的区别概述plugi ...

  7. Maven 中 dependencyManagement 元素,知识点

    Maven 提供的 dependencyManagement 元素既能让子模块继承到父模块的依赖配置,又能保证子模块依赖使用的灵活性.在 dependencyManagement 元素下的依赖声明不会 ...

  8. Maven中dependencyManagement作用说明

    https://blog.csdn.net/helllochun/article/details/81564921 在Maven多模块的时候,管理依赖关系是非常重要的,各种依赖包冲突,查询问题起来非常 ...

  9. maven 使用dependencyManagement统一管理依赖版本

    今日思语:人生方方长长,努力把她磨成方圆,所以 加油咯~ 使用maven可以很方便的进行项目依赖的管理,即可以管理我们显示引入具体版本的依赖,也可以管理某些第三方引入的一些依赖的版本,从而能更好的实现 ...

随机推荐

  1. vue+vuex+axios+echarts画一个动态更新的中国地图

    一. 生成项目及安装插件 # 安装vue-cli npm install vue-cli -g # 初始化项目 vue init webpack china-map # 切到目录下 cd china- ...

  2. Codeforce 295B Greg and Graph(Floyd的深入理解)

    题目链接:http://codeforces.com/problemset/problem/295/B 题目大意:给出n个点的完全有权有向图,每次删去一个点,求删掉该点之前整张图各个点的最短路之和(包 ...

  3. TCP连接建立与断开

    tcp状态 LISTEN:侦听来自远方的TCP端口的连接请求 LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和 ...

  4. ETL工具kettle基本使用

    1.下载kettle:https://sourceforge.net/projects/pentaho/files/Data%20Integration/7.0/pdi-ce-7.0.0.0-25.z ...

  5. android拾遗——Android之Notification和NotificationManager

    1.使用系统自带的Notification //创建一个NotificationManager的引用 String ns = Context.NOTIFICATION_SERVICE; Notific ...

  6. 【AtCoder】ARC062F - AtCoDeerくんとグラフ色塗り / Painting Graphs with AtCoDeer

    题解 考虑一个点双(因为是简单环),如果没有环(两点一线),那么乘上K 如果有一个环,那么用polya定理,每个置换圈有gcd(i,n)个循环节 如果有两个及以上的环,任何一种置换都合法,那么只和每个 ...

  7. WordCount_命令行运行时指定参数

    WordCountApp命令行运行时指定参数 1.修改之前的WordCountApp.java的代码 package cmd; import java.net.URI; import org.apac ...

  8. Session机制二(简易购物车案例)

    一:案例一(简易购物车) 1.目录结构 2.step1.jsp <%@ page language="java" contentType="text/html; c ...

  9. Ionic Js十六:滚动条

    ion-scroll ion-scroll 用于创建一个可滚动的容器. <ion-scroll [delegate-handle=""] [direction="& ...

  10. 在centOS使用systemctl配置启动多个tomcat

    公司服务器使用的是阿里云CentOS7,CentOS7和CentOS6目前最大区别就是service变成了现在的systemctl,简单的查了一下并结合使用,发现systemctl功能上等同于6上面的 ...