资讯专栏INFORMATION COLUMN

Maven多模块之父子关系

陆斌 / 3225人阅读

摘要:多模块父模块创建先创建个简单的空的作为父项目子模块创建重新创建一个作为子项目父子模块继承关系注意此时父子模块为两个独立的项目。特别注意,如果父项目提供了和,则删除子项目坐标中的和,直接继承父项目相关坐标。

Maven多模块项目,适用于一些比较大的项目,通过合理的模块拆分,实现代码的复用,便于维护和管理。尤其是一些开源框架,也是采用多模块的方式,提供插件集成,用户可以根据需要配置指定的模块。
Maven多模块(pom) 1.1 父模块创建

先创建个简单的空的Maven Project作为父项目

1.2 子模块创建

重新创建一个Maven Project作为子项目

1.3 父子模块(继承关系)

注意:此时父子模块为两个独立的项目。

步骤1:子项目中加入节点,传入父项目完整坐标。

步骤2:将子项目中的依赖都注释掉。

注意:此时子项目中的没有了Maven Dependencies。

步骤3:将子项目注释的依赖添加到父项目中。

注意:此时子项目中的依赖又添加回来了。

这种直接在父工程中加入的方式,让子工程可以直接复用依赖,但是缺点是所有的子项目无条件继承父工程所有依赖,所以如果要在父工程中添加依赖只能针对非常通用的依赖。

在父项目中再添加一个依赖。

子项目同时也继承了新添加的依赖。

那如果不想无条件继承父工程的所有依赖,而想让子项目自行选择需要的依赖又该如何做呢?

1.4 dependencyManagement
在父项目中用节点包裹节点,并且添加的是完整的依赖坐标(gav)

此时子项目中的Maven Dependencies又会消失,说明添加节点后,它并不负责相关依赖的下载。

子项目加入相应同样依赖,注意不要加versionversion继承自父项目),需要什么样的依赖就声明什么。

特别注意,如果父项目提供了groupidversion,则删除子项目坐标中的groupidversion,直接继承父项目相关坐标。

dependencyManagement的作用:依赖版本管理器

本身并不下载任何依赖,只是管理依赖的版本。依赖的下载依然需要多带带的(不加dependencyManagement,额外写一个)去做

如果中的没有声明版本号(version),maven会去寻找有无对应的dependencyManagement,当前工程没有就会向上找父工程。如果找到就以dependencyManagement中对应依赖声明的version为准,否则报错version is missing。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73714.html

相关文章

  • Maven的pom文件那些事

    摘要:文件项目隶属的实际项目名实际项目中的一个项目模块名称版本号当前项目打包的方式,默认为以上的配置会获得一个格式的包用于定义构建输出的一些附属的构建。 pom.xml文件 org.son.nexus//项目隶属的实际项目名 nexus-indexer//实际项目中的一个maven项目模块名称 2.0.0//版本号 jar//当前maven项目打包的方式,默认为jar 以上的配置会获得一个-...

    NoraXie 评论0 收藏0
  • vue中8种组件通信方式, 值得收藏!

    摘要:一父组件通过的方式向子组件传递数据,而通过子组件可以向父组件通信。而且只读,不可被修改,所有修改都会失效并警告。 之前写了一篇关于vue面试总结的文章, 有不少网友提出组件之间通信方式还有很多, 这篇文章便是专门总结组件之间通信的 vue是数据驱动视图更新的框架, 所以对于vue来说组件间的数据通信非常重要,那么组件之间如何进行数据通信的呢?首先我们需要知道在vue中组件之间存在什么样...

    BicycleWarrior 评论0 收藏0
  • 前端数据驱动的价值

    摘要:数据驱动应该是从这种模式开始流行的。这种其实已经非常趋向与数据驱动了。可以看到数据驱动的难点和关键点就是数据结构的设计。数据驱动主要是处理模块之间的一种逻辑。 数据驱动应该是从flux/redux + react这种模式开始流行的。 他的背后不仅仅是数据驱动这么简单,在复杂的系统中,我觉得它解决了一个很关键的问题就是模块间的交互/通信。有很多文章拿他和mvc/mvvm去比较,我个人觉...

    ivyzhang 评论0 收藏0
  • 阿里巴巴开源框架JarsLink

    摘要:也是阿里巴巴的开源项目之一,目前在微贷事业群广泛使用。模块的版本,如果版本号和之前加载的不一致,框架则会重新加载模块。 JarsLink (原名Titan) 是一个基于JAVA的模块化开发框架,它提供在运行时动态加载模块(一个JAR包)、卸载模块和模块间调用的API。也是阿里巴巴的开源项目之一 https://github.com/alibaba/ja...,目前在微贷事业群广泛使用。...

    coolpail 评论0 收藏0
  • 阿里巴巴开源框架JarsLink

    摘要:也是阿里巴巴的开源项目之一,目前在微贷事业群广泛使用。模块的版本,如果版本号和之前加载的不一致,框架则会重新加载模块。 JarsLink (原名Titan) 是一个基于JAVA的模块化开发框架,它提供在运行时动态加载模块(一个JAR包)、卸载模块和模块间调用的API。也是阿里巴巴的开源项目之一 https://github.com/alibaba/ja...,目前在微贷事业群广泛使用。...

    lanffy 评论0 收藏0

发表评论

0条评论

陆斌

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<