精华内容
下载资源
问答
  • 当我们的项目模块很多的时候,我们使用Maven管理项目非常方便,帮助我们管理构建、文档、报告、依赖、scms、发布、分发的方法。可以方便的编译代码、进行依赖管理、管理二进制库等等。 由于我们的模块很多,所以...

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

         由于我们的模块很多,所以我们又抽象了一层,抽出一个itoo-base-parent来管理子项目的公共的依赖。为了项目的正确运行,必须让所有的子项目使用依赖项的统一版本,必须确保应用的各个项目的依赖项和版本一致,才能保证测试的和发布的是相同的结果。
    
        在我们项目顶层的POM文件中,我们会看到dependencyManagement元素。通过它元素来管理jar包的版本,让子项目中引用一个依赖而不用显示的列出版本号。Maven会沿着父子层次向上走,直到找到一个拥有dependencyManagement元素的项目,然后它就会使用在这个dependencyManagement元素中指定的版本号。
    

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

                                                                                              pom继承关系图:
    

    在这里插入图片描述

    父项目的dependencyManagement

    <dependencyManagement>
    		
    		<dependencies>
    			<dependency>
    				<groupId>org.eclipse.persistence</groupId>
    				<artifactId>org.eclipse.persistence.jpa</artifactId>
    				<version>${org.eclipse.persistence.jpa.version}</version>
    				<scope>provided</scope>
    			</dependency>
    			
    			<dependency>
    				<groupId>javax</groupId>
    				<artifactId>javaee-api</artifactId>
    				<version>${javaee-api.version}</version>
    			</dependency>
    		</dependencies>
    	</dependencyManagement>
    

    子项目:dependencies

    <!--继承父类-->
    <parent>
    		<artifactId>itoo-base-parent</artifactId>
    		<groupId>com.tgb</groupId>
     
    		<version>0.0.1-SNAPSHOT</version>
    		<relativePath>../itoo-base-parent/pom.xml</relativePath>
    	</parent>
    		<modelVersion>4.0.0</modelVersion>
    		<artifactId>itoo-base</artifactId>
    		<packaging>ejb</packaging>
    		
    		<!--依赖关系-->
    		<dependencies>
    		<dependency>
    			<groupId>javax</groupId>
    			<artifactId>javaee-api</artifactId>
    		</dependency>
    		
    		<dependency>
    			<groupId>com.fasterxml.jackson.core</groupId>
    			<artifactId>jackson-annotations</artifactId>
    		</dependency>
    		
    		<dependency>
    			<groupId>org.eclipse.persistence</groupId>
    			<artifactId>org.eclipse.persistence.jpa</artifactId>
    			<scope>provided</scope>
    		</dependency>
    	</dependencies>
    </project>
    

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

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

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

    4、Maven约定优于配置
    它提出这一概念,为项目提供合理的默认行为,无需不必要的配置。提供了默认的目录
    src ——> 源代码和测试代码的根目录

    main 应用代码的源目录

    java 源代码

    resources 项目的资源文件

    test 测试代码的源目录

    java 测试代码

    resources 测试的资源文件

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

    展开全文
  • Eclipse-maven-聚合项目

    2020-06-10 11:19:59
    文章目录前言聚合继承整体架构依赖关系构建模块 前言 历史笔记,由 @为知笔记 中好几年前编写,后整理放到csdn中 聚合 项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起...

    前言

    • 历史笔记,由 @为知笔记 中好几年前编写,后整理放到csdn中

    聚合

    • 项目开发通常是分组分模块开发,每个模块开发完成要运行整个工程需要将每个模块聚合在一起运行,
    • 比如:dao、service、web三个工程最终会打一个独立的war运行。而dao和service 通过jar包的方式配置到web中

    继承

    • 继承 – > 在父工程中,需要设置管理依赖版本
    • 继承是为了消除重复,如果将dao、service、web分开创建独立的工程则每个工程的pom.xml文件中的内容存在重复。
    • 比如:设置编译版本、锁定spring的版本的等,可以将这些重复的配置提取出来在父工程的pom.xml中定义。

    整体结构

    • 图解
      在这里插入图片描述

    依赖关系

    • 项目依赖关系,不一定非要这么干,这个只是历史经验

      model-model:存放实体类

      manager-mapper:主要用来写对数据库的增删改查的

      manager-utils:写一些工具类,比如金额的验证,数据格式化加个小数点

      manager-service:用来封装mapper的,把它写成服务
      manager-biz:主要是用来对manager-service的服务做进一步抽象的(一般不需要)

      manager-facade:主要是用来写接口给外部系统调用的(一般不需要)

      manager-integration:用来写调用别的系统的接口的(一般不需要)
      manager-web:主要用来写页面的

    构建父模块

    • 创建一个parent父工程将通用的pom配置抽取出来聚合:聚合多个模块运行。
    • 在父工程的pom.xml中抽取一些重复的配置的
    • 比如:锁定jar包的版本、设置编译版本、插件等

    创建项目

    • 选择maven project
      在这里插入图片描述

    选择一个简单的结构

    在这里插入图片描述

    填写配置信息

    1. 填写pacjaging:类型为 pom
      在这里插入图片描述

    构建子模块

    • 子模块的构建流程都是一模一样’’

    构建项目

    • 这里选择为Maven Module
      在这里插入图片描述

    选择父类工程

    在这里插入图片描述

    配置模块信息

    1. 这里在选择版本边编写的时候 如果是 jar 就 0.0.1 如果是war 就1.0.0
      在这里插入图片描述
    展开全文
  • MAVEN

    2020-09-18 16:40:03
    这样做的好处:统一管理项目的版本号,确保应用的各个项目的依赖版本一致,才能保证测试的发布的是相同的成果,因此,在顶层pom中定义共同的依赖关系。同时可以避免在每个使用的子项目中都声明一个版本号,这样...

    MAVEN

    1.dependencyManagement

    Maven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素

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

    2.dependencies

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

    3.区别

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

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



    作者:angeChen
    链接:https://www.jianshu.com/p/afba8648a531
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    展开全文
  • maven多模块之间的依赖关系

    万次阅读 2018-05-11 15:12:42
    Guns项目项目名和包名出错:1、JDK版本,maven默认使用1.52、模块之间的依赖关系,即&lt;dependency&gt;,里边的&lt;groupId&gt;、&lt;artifactId&gt;问题:模块改名,parent模块中pom修改...

    Guns项目改项目名和包名出错:

    1、JDK版本,maven默认使用1.5


    2、模块之间的依赖关系,即<dependency>,里边的<groupId>、<artifactId>

    问题:模块改名,parent模块中pom修改<module>,但是出错,clean和install不能解决


    3、修改了子模块对父模块引用<relativePath>出错



    4、修改了父模块的groupId和artifactId,name---->是否可以直接修改groupId


    5、更换了包名,需要注意类里面import的包路径,模块admin和模块core里面的代码有些包名相同,注意

    6、换包名,注意重复的import


    7、出现不明错误


    8、

    展开全文
  • Maven理解

    2020-04-26 21:36:17
    Maven概念流程目录关键字Maven的坐标仓库位置的关系修改默认JDK版本生命周期工程聚合详细教程 概念 Maven是Apache软件基金会组织维护的一款自动化构建工具,专注服务于Java平台的项目构建依赖管理 网址:Maven...
  • 在一个复杂的项目中,项目的各个模块存在各种相互依赖关系。优化一个多模块项目的POM最好通过几步来做。总的来说,我们总是寻找一个...Maven提供简单的机制能让你将所有的依赖重构到一个POM。重复的依赖声明很难保...
  • Optional定义后,该依赖只能在本项目中传递,不会传递到引用该项目的父项目中,父项目需要主动引用该依赖才行。 Exclusions则是主动排除子项目传递过来的依赖。 假如有三个项目分别为A项目、B项目、C项目,依赖...
  • 创建多模块项目时,相信有部分同学对模块个子模块的pom文件产生了疑问,子模块是否能自动继承模块的依赖。这就得讲到dependencyManagementdependencies的区别了 关于dependencyManagementdependencies的...
  • 也就是说,Maven会根据你引入 pom 的依赖来自动管理各依赖之间的关系,而它们有可能是继承自父项目或者它本身。因此可能会有多个不同版本的同一依赖,然而只有在发生循环依赖的时候才会产生问题。 Maven 自身包含...
  • 注: 用在父项目中管理依赖包的版本,但不实际引入。 用于子项目继承。 备注:今天有好些实习的同事问到Maven中关于dependencyManagement普通dependencies的区别,说多了,麻烦,记录一下、 在Maven多模块的时候...
  • 除了项目构建,Maven最核心的功能是软件包的依赖管理,能够自动分析项目所需要的依赖软件包,并到Maven中心仓库去下载。 A)管理依赖的jar包 B)管理工程之间的依赖关系。 3.2. Maven本地仓库 在当前系统用户的...
  • 上一篇 : 1. 概述 文章目录1. SpringBoot SpringCloud 版本关系2....创建一个 Maven 项目作为父项目 删除父项目中的 src 目录(用不上) 修改父项目的 POM 文件,导入依赖 <!--修改打包方式为 pom-->
  • 1.创建一个空的maven工程,作为整个集群的工程。导入项目所需要的一些依赖。如:springboot,springcloud依赖,springboot启动器,mysql数据库,日志相关的log4j,logback等。 主要问题:注意springboot,spring...
  • 企业中的角 企业...多模块...企业...大...不小... maven maven maven ... enterpre级生成工具...... 依赖关系已安装到用户计算机上的本地Maven存储库中。 在节点与节点相关的程序包管理(无论是npm,yarn还是pnp
  • pom - project object model

    2017-04-05 14:10:00
    POM包含了四类描述配置:   项目总体信息 它包含了一个项目的名称、项目的URL、发起的...它会依赖于其它项目,可能从父项目继承POM设置。   POM语法 项目版本 &lt;major version&gt;.&lt;mi...
  • pom.xml简介

    2016-07-17 16:01:10
    1.概念 Project Object Model,项目对象模型,通过xml格式描述程序之间的依赖程序...基础配置<modelVersion>4.0.0描述maven版本信息,现在唯一支持maven2、maven3的版本<parent></parent>节点,描述继承关系,如果
  • springcloudspringboot的依赖包存在版本对应关系,所以选择springcloud版本时请查看springcloud官网。 注:把项目作为工程,把packing改为pom。 &lt;?xml version="1.0" ...
  • Java_聚合工程_POM

    2019-03-03 15:09:16
    Maven工程的拆分聚合 (1)定义工程,集中管理依赖版本,模块基于工程进行创建; (2)模块拆分的越细,可重用越高,避免重复代码; (3)模块之间需要通过依赖来建立关系; (4)三层结构(dao:取数据;...
  • 2.4.3项目模块 25 核心 - spring-security-core.jar 25 远程处理 - spring-security-remoting.jar 25 Web - spring-security-web.jar 25 配置 - spring-security-config.jar 26 LDAP - spring-security-ldap.jar 26 ...
  • 如果你的 hera 使用的是 2.4.1 版本以上的,使用maven执行 mvn clean package -Dmaven.test.skip=true -Pdev 打包后在根目录会出现如图所示的压缩包 你可以通过 ssh 把该包上传到服务器,解压该tar.gz包。然后修改 ...
  • 项目构建:jdk1.8、Maven 3 持久层框架:Mybatis 模板框架:Thymeleaf 分页插件:PageHelper 加密:MD5加密 运行环境:腾讯云Centos7 3.数据库 MySQL 5.7 二、功能需求 因为是个人博客,所以没有做用户权限管理...
  • 工程包含了 SpringAOP,死锁,JUC同步锁,读-写同步锁,ThreadLocal使用,JUC线程池Spring提供的线程池,jdk 1.8 中的日期时间API,数据结构中 图的实现及操作广度优先遍历/深度优先遍历(其他待完善),生成XML...

空空如也

空空如也

1 2
收藏数 23
精华内容 9
关键字:

maven父项目和本项目关系