精华内容
下载资源
问答
  • Maven模块项目依赖管理及dependencies与dependencyManagement的区别1、DepencyManagement应用场景当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、...

    Maven多模块项目依赖管理及dependencies与dependencyManagement的区别

    1、DepencyManagement应用场景

    当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。

    由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base-parent来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。

    在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。

    来看看我们项目中的应用:

    pom继承关系图:

    依赖关系:

    Itoo-base-parent(pom.xml)

    org.eclipse.persistence

    org.eclipse.persistence.jpa

    ${org.eclipse.persistence.jpa.version}

    provided

    javax

    javaee-api

    ${javaee-api.version}

    Itoo-base(pom.xml)

    itoo-base-parent

    com.tgb

    0.0.1-SNAPSHOT

    ../itoo-base-parent/pom.xml

    4.0.0

    itoo-base

    ejb

    javax

    javaee-api

    com.fasterxml.jackson.core

    jackson-annotations

    org.eclipse.persistence

    org.eclipse.persistence.jpa

    provided

    这样做的好处:统一管理项目的版本号,确保应用的各个项目的依赖和版本一致,才能保证测试的和发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样想升级或者切换到另一个版本时,只需要在父类容器里更新,不需要任何一个子项目的修改;如果某个子项目需要另外一个版本号时,只需要在dependencies中声明一个版本号即可。子类就会使用子类声明的版本号,不继承于父类版本号。

    2、Dependencies

    相对于dependencyManagement,所有生命在dependencies里的依赖都会自动引入,并默认被所有的子项目继承。

    3、区别

    dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承)

    dependencyManagement里只是声明依赖,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且version和scope都读取自父pom;另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。

    注意 ${project.version} 变量指的是应用的 version 。

    顶层 pom 中的 dependencies 与 dependencyManagement 中的 dependencies 元素有一个重要的区别:

    dependencyManagement 中的 dependencies 元素只表明依赖项版本的优先选择,并不影响项目的依赖项;而 dependencies 元素则影响项目的依赖项。

    4、Maven约定优于配置

    它提出这一概念,为项目提供合理的默认行为,无需不必要的配置。提供了默认的目录

    src                   ——>         源代码和测试代码的根目录

    main                            应用代码的源目录

    java                     源代码

    resources           项目的资源文件

    test                               测试代码的源目录

    java                      测试代码

    resources            测试的资源文件

    target                                   编译后的类文件、jar文件等

    对于Maven约定优于配置的理解,一方面对于小型项目基本满足我们的需要基本不需要自己配置东西,使用Maven已经配置好的,快速上手,学习成本降低;另一方面,对于不满足我们需要的还可以自定义设置,体现了灵活性。配置大量减少了,随着项目变的越复杂,这种优势就越明显。

    展开全文
  • 在所有的关于Maven模块项目的配置完成以后,针对子类项目之间的依赖配置进行特殊处理, 配置完所有的配置以后,需要进行父类项目的进行如下操作: 首先需要针对所有的子类项目进行编译,如下: 选中父类项目...

    在所有的关于Maven多模块项目的配置完成以后,针对子类项目之间的依赖配置进行特殊处理,
    配置完所有的配置以后,需要进行父类项目的进行如下操作:
    首先需要针对所有的子类项目进行编译,如下:
    选中父类项目点击右键–>Run AS–>Maven install
    这里写图片描述
    生完以上的内容以后,可在自己配置的Maven的本地jar库里面会看到相应的生成文件
    这里写图片描述
    有了以上的生成的子类jar包以后,需要在其他需要引用该子类项目的时候进行配置

    这里写图片描述
    如果不出意外,在spis-web的子类项目可以调用spis-common下面的所有文件。

    展开全文
  • 对于几乎在每个模块都需要引用的依赖,去各自的模块配置中添加太麻烦了,就想着在父模块中添加,然后在子模块中继承就可以了。首先,需要注意: 父模块中要有对应的模块标签: <modules> <module>my...

    对于几乎在每个模块都需要引用的依赖,去各自的模块配置中添加太麻烦了,就想着在父模块中添加,然后在子模块中继承就可以了。首先,需要注意:

    父模块中要有对应的模块标签:

    <modules>
    	<module>my-querydsl-web</module>
    	<module>my-querydsl-service</module>
    	<module>my-querydsl-entity</module>
    </modules>

    子模块要指定对应的父模块标签:

    <parent>
    	<groupId>com.wzh</groupId>
    	<artifactId>my-querydsl</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<relativePath/>
    </parent>

    这样父模块中添加的依赖在子模块中就可以直接使用

    另外需要注意的区别,如下依赖可以被子模块继承

    <dependencies>
    	<dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>fastjson</artifactId>
    		<version>1.2.70</version>
    	</dependency>
    </dependencies>

    下面标签的依赖不会被子模块继承

    <dependencyManagement>
    	<dependencies>
    		<dependency>
    			<groupId>com.alibaba</groupId>
    			<artifactId>fastjson</artifactId>
    			<version>1.2.70</version>
    		</dependency>
    	</dependencies>
    </dependencyManagement>

     

    展开全文
  • Maven POM文件、多模块以及依赖关系

    万次阅读 2014-02-20 15:57:59
    一、POM.XML 1、ProjectObject Model:项目对象模型 2、基本项: project:pom.xml的顶级元素。...packaging:类型(如JAR、WAR、EAR等等),默认是JAR,所有带有子模块的项目的packaging 都为pom。 version

    一、POM.XML

    1、ProjectObject Model:项目对象模型

    2、基本项:

    • project:pom.xml的顶级元素。
    • groupId:指出创建这个工程的组织或团队的唯一标识。
    • plugins:插件。
    • artifactId:基本名称。
    • packaging:类型(如JAR、WAR、EAR等等),默认是JAR,所有带有子模块的项目的packaging

      都为pom。

    • version:版本号。
    • modelVersion:指出POM使用哪个版本的对象模型。

    二、多模块

    1、如何创建

            参考:http://www.cnblogs.com/quanyongan/archive/2013/05/28/3103243.html

    2、为什么要分多模块

        软件公司通常的一种做法就是将多个项目构建到主要产品中。维护依赖关系链和一次性地构建整个产品足以成为一个挑战,但是如果使用Maven的话,事情将变得简单。如果您创建了一个指向其它子模块的 pom.xml父文件,Maven将为您处理整个构建过程。它将分析每个子模块的pom.xml文件,并且按照这些子模块的相互依赖顺序来构建项目。如果每个项目明确地指明它们的依赖项,那么子模块在父文件中的放置顺序是不造成任何影响的。但是考虑到其他的开发者,最好保证子模块在pom.xml父文件中 的放置顺序和您期望的子项目被构建的顺序一样。

            参考:http://juvenshun.iteye.com/blog/305865

    3、依赖另一个项目的子模块

        A项目下有2个子模块A1,A2;B项目下有3个子模块B1,B2,B3;

        A1依赖B1和A2; A2依赖B2,B3;

        则,需要先运行B项目,成功之后再运行A项目。

    三、依赖关系

    1、简介

        参看:管理依赖

    2、scope参数

    指定依赖项在何种阶段是所需的。


    <dependency>
        <groupId>aa</groupId>
        <artifactId>aa</artifactId>
        <version>1.5.1</version>
        <scope>compile</scope>
    </dependency>

    ——》参数值:

    • compile:默认值。表示是所有任务所需的资源,会随项目一起发布。
    • test:用于编译和运行测试代码时所需的资源,不会随项目发布。
    • runtime:运行时所需的资源,如JDBC驱动。
    • provided:类似compile,JDK部分或应用服务器的classpath所需的资源,期望JDK、容器

      或使用者会提供这个依赖,如servlet.jar。

    • system:类似provided,必须指定systemPath,需要显示提供依赖的jar,

      maven不会在Repository中查找。

     

     

    展开全文
  • 在每一个maven项目中,都存在一个pom文件,这是一个maven的核心配置文件,我们必须掌握其中的常用标签才能够使用好maven 1.1pom文件的作用 POM(Project Object Model,项目对象模型 ),是maven管理项目的核心思想,所以...
  • maven 配置模块项目 pom modules

    千次阅读 2017-06-29 10:30:22
    maven 配置模块项目 pom modules 所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml。它们之间通过继承和聚合(也称作多模块,multi-module)相互关联。那么,为什么要这么做呢?...
  • 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。 由于我们的模块很多,所以...
  • maven项目中的pom文件依赖关系

    千次阅读 2019-12-10 17:10:50
    maven项目中的pom文件经常需要依赖其他项目的包,但是如果其他项目包本身又依赖有其他包,则会一起依赖到本项目中,出现多余引用,此时建议使用标签去除多余依赖。 在eclipse中,可以查看pom文件,如图: 在Filter...
  • Maven pom.xml 添加本地jar包依赖以及打包方法发布时间:2020-09-17 08:10:15来源:脚本之家阅读:168作者:StrugglionMaven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法:1. 安装到本地仓库...
  • 今天写项目,增加了一个子模块,然后在pom.xml加入依赖,发现还是无法导入依赖的子项目的类。 一番捣鼓找到了解决方案,这个感觉也是idea的坑吧,下面进入正题 1.添加的maven模块截图 2.pom加入依赖的...
  • 在项目时用到maven管理项目,在一个就项目的基础上开发新的项目;关于子项目和父项目,子项目与子项目之间的调用问题,发现自己存在不足,以下是自己查询的问题,解决了自己的疑惑。 原文链接:...
  • 近期在做一个普通javaweb项目转转换成maven项目的任务。原项目类型:javaWeb项目两个源码包一个产品基础包,一个基于产品基础包的开发包,两个都是普通javaWeb项目。本来应该是开发包可以单边引用产品基础包的,由于...
  • 整个项目以pom型项目进行组织,其模块可以是jar项目,也可以是war项目,也可以pom项目。合理的使用maven-module项目,可以是项目结构分明,同时提高了代码的复用性。本文以maven插件官方示例(具体地址请查看附录)...
  • 今天想到了一个问题,如果一个依赖只有子模块用到了,是放入子模块pom.xml 呢,还是放入父模块pom.xml 呢? 理论上当然是子模块单独声明更符合逻辑。但是以上问题的场景来源有两个: 为了方便,或者考虑到...
  • Maven中多模块的创建,依赖及主子pom之间的依赖继承Maven中多模块的创建及依赖继承子pom会自动使用父pom中的依赖(jar包)父模块作版本管理不实际依赖,子模块按需依赖Maven中多子模块依赖关系子pom间存在引用关系...
  • Maven中可以通过继承父模块pom,来实现pom.xml配置的继承和传递,便于各种Maven插件以及程序依赖的统一管理。通过将子类模块的公共配置,抽象聚合生成父类模块,能够避免pom.xml的重复配置。由于父类模块本身并不...
  • Maven本地子模块互相依赖

    千次阅读 2020-01-06 09:10:16
    很多时候,我们自己的项目有许多的子模块,之间互相有依赖,但是我们没有私服来发布打好的jar包. 最常见的就是本地有一个Util包, 随手写的其他项目想要引用, 却苦于没有私服. 把代码扔到同一个项目, 强迫症有忍不住. 这...
  • IntelliJ 中Maven pom.xml依赖不生效解决

    千次阅读 2017-12-20 17:28:39
    IntelliJ 中Maven pom.xml依赖不生效解决 问题描述: 在IntelliJ中创建了Maven项目,并在pom.xml中加入了 slf4j 和 log4j 的依赖,但在编写程序时发现IntelliJ根本没有关于 slf4j 和 log4j 的文本辅助,查看之下才...
  • Maven之父POM文件配置

    2018-08-02 17:36:21
    配置父工程pom文件,注意一点是在package打包方式为pom,在新建的子模块文件中会生成&lt;modules&gt;&lt;/modules&gt;    2. 为了使整个大工程的spring-boot版本保持一致需要 &lt;parent&...
  • 1. 模块介绍 1.1模块如下 parent 为 父级,父级下只有一个pom文件主要,其他可忽略 B 为子模块,包含springboot 启动类 C 为公共模块,(不包含springboot 启动类) ...2.1.2 配置依赖 dep...
  • maven模块项目依赖管理与依赖继承

    万次阅读 2019-02-15 15:29:42
    1、指定父模块与默认继承 dependencies即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承) ...http://maven.apache.org/POM/4.0.0"  xmlns:xsi="htt...
  • 先把你添加的其他依赖全部去掉,只剩下单纯的B-A,B-C的依赖,然后先 maven install父项目,把父子关系建立起来,父项目A中要包括duimaven插件的引用,例如: &lt;build&gt;  &lt;plugins&gt;  ....
  • ${basedir} 项目根目录 ${project.build.directory} 构建目录,...${project.xxx} 当前pom文件的任意节点的内容 ** 在父级项目pom中如何找到子项目的文件路径?上面这些都是找的父级项目路径,但子项目路径找不到。 **
  • maven POM文件详解

    千次阅读 2019-04-22 22:43:50
    http://www.blogjava.net/hellxoul/archive/2013/05/16/399345.html ...1.前言 Maven,发音是[`meivin],"专家"的意思。它是一个很好的项目管理工具,很早就进入了我的必备工具行列,但是这次为了把project1项...
  • 今天做一个SSM+Maven模块的项目时,pom.xml中添加了依赖,但还是无法引用,我的项目结构为: 其中Crowdfuning-main是war工程,Crowdfuning-parent是pom工程,其他为子工程。Crowdfuning-main的依赖项目是剩下的...
  • 所以现在统一采用父子工程(或叫父子模块)的pom.xml组织方式,即有一个父工程,它这模块什么内容也没有,只有一个pom.xml文件,即它是一个专门管理依赖包的模块,并且pom.xml中的packaging 为pom,如下: ...
  • maven模块依赖冲突问题汇总记录

    千次阅读 2020-12-20 12:22:32
    目录前言:今天学习和总结了一下maven的相关知识点,发现一些比较基础的东西居然也会忘记,这里对于一些日常工作中可能会遇到的问题进行了一下汇总。idea怎么创建maven多module的项目首先了解上面是多module?一句话...
  • 当子模块pom.xml中配置依赖后,另一个子模块却不能自动导入这些依赖? 问题分析: 子模块pom.xml:这里主要看这两个用于test单元测试的依赖包! 子模块:由于没有导入到这些依赖包,所以程序报红. 通过查阅...
  • 理解 maven模块项目依赖关系

    千次阅读 2018-04-17 11:22:56
    语言功底差,直接上代码。然后再解释1。父pom&lt;?xml version="...http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc...
  • 您可以使用DependencyManagement部分重写依赖项的版本:com.fasterxml.jacksonjackson-bom2.8.8com.fasterxml.jacksonjackson-bom这是父级的一个例子:xmlns:xsi=...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,827
精华内容 21,930
关键字:

mavenpom配置模块依赖