SpringBoot+Maven多模块聚合pom.xml常见配置 您所在的位置:网站首页 配置pom文件的jar包依赖 SpringBoot+Maven多模块聚合pom.xml常见配置

SpringBoot+Maven多模块聚合pom.xml常见配置

#SpringBoot+Maven多模块聚合pom.xml常见配置| 来源: 网络整理| 查看: 265

文章目录 一、jar的版本判断的两种途径二、dependencyManagement意义三、packaging标签配置四、Maven build标签

一、jar的版本判断的两种途径

在Maven中dependencyManagement的作用其实相当于一个对所依赖jar包进行版本管理的管理器,是继承自该项目的所有子项目的默认依赖信息。 pom.xml文件中,jar的版本判断的两种途径:

如果dependencies里的dependency自己没有声明version元素,那么maven就会倒dependencyManagement里面去找有没有对该artifactId和groupId进行过版本声明,如果有,就继承它,如果没有就会报错,告诉你必须为dependency声明一个version

如果dependencies中的dependency声明了version,那么无论dependencyManagement中有无对该jar的version声明,都以dependency里的version为准。

pom.xml //只是对版本进行管理,不会实际引入jar org.springframework spring-core 3.2.7 //会实际下载jar包 org.springframework spring-core 二、dependencyManagement意义

在maven多模块项目中,为了保持模块间依赖的统一,常规做法是在parent model中,使用dependencyManagement预定义所有模块需要用到的dependency(依赖),然后,子model根据实际需要引入parent中预定义的依赖

好处:

1、依赖统一管理(parent中定义,需要变动dependency版本,只要修改一处即可);

2、代码简洁(子model只需要指定groupId、artifactId即可)

3、dependencyManagement只会影响现有依赖的配置,但不会引入依赖,即子model不会继承parent中dependencyManagement所有预定义的depandency,只引入需要的依赖即可,简单说就是“按需引入依赖”或者“按需继承”;因此,在parent中严禁直接使用depandencys预定义依赖,坏处是子model会自动继承depandencys中所有预定义依赖;

注: 1、maven的继承跟java一样,单继承,也就是说子model中只能出现一个parent标签; 2、maven的依赖(dependencies)有传递性,为了解决兼容性问题,就用exclusions来排除造成兼容性问题的依赖。exclusions是在某个具体依赖里面配置的。

三、packaging标签配置 4.0.0 com.t.test.center test-centerr 1.0-SNAPSHOT pom test-center UTF-8 1.8 1.8 test-module1 test-module2 test-module3

packaging默认类型jar类型,如果不做配置,maven会将该项目打成jar包。常见项目的打包类型:pom、jar、war:

pom ---------> 父类型都为pom类型jar ---------> 内部调用或者是作服务使用war ---------> 需要部署的项目(一般web相关)

小结:父级项目里packaging打包方式一般配置成pom,pom 表示项目里没有java代码,也不执行任何代码,只是为了聚合工程或传递依赖用的。

四、Maven build标签

1、在Maven的pom.xml文件中,存在如下两种< build>:

(1)全局配置(project build)

针对整个项目的所有情况都有效,包含了基本的build元素,还包含两个特殊的元素,即各种和< extensions>。

(2)配置(profile build)

针对不同的profile配置,包含了基本的build元素。

... install basedir}/target version}--> ${artifactId}-${version} /**定义*.properties文件,包含一个properties列表,该列表会应用到支持filter的resources中。也就是说,定义在filter的文件中的name=value键值对,会在build时代替${name}值应用到resources中。maven的默认filter文件夹为${basedir}/src/main/filters **/ filters/filter1.properties ... ...

小结:build标签中还有更多的元素,更多的可参考博文pom.xml文件详解:https://blog.csdn.net/weixin_47061482/article/details/109817802

2、< build>中常用的Resources配置、plugins配置

build标签中还有很多的元素,这里重点分析下常见的几个配置:

Resources配置 用于包含或者排除某些资源文件plugins配置 用于指定使用的插件 常见代码片段eg: src/main/resources true org.springframework.boot spring-boot-maven-plugin 2.1.6.RELEASE false org.apache.maven.plugins maven-war-plugin 3.2.3 false maven-compiler-plugin 3.7.0 ${maven.compiler.source} ${maven.compiler.target} UTF-8 maven-resources-plugin 3.0.2 UTF-8

接下来我们分别看下这几个配置 (1)Resources配置:

... META-INF/plexus true ${basedir}/src/main/plexus configuration.xml **/*.properties ... ...

1)resources 一个resources元素的列表。每一个都描述与项目关联的文件是什么和在哪里 2)targetPath 指定build后的resource存放的文件夹,默认是basedir。 通常被打包在jar中的resources的目标路径是META-INF 3)filtering true/false,表示为这个resource,filter是否激活 4)directory 定义resource文件所在的文件夹,默认为${basedir}/src/main/resources 5)includes 指定哪些文件将被匹配,以*作为通配符 6)excludes 指定哪些文件将被忽略 7)testResources 定义和resource类似,只不过在test时使用

(2)Plugins、pluginManagement: pluginManagement一般是用来在父POM中定义,提供给子POM使用,子POM也可以覆盖这个定义,而且你在父POM中定义了版本之后,子模块中直接应用groupId和artifactId,而不用指定版本,同时也方便统一管理;而在父POM中的pluginManagement并不会介入到Maven的生命周期。

plugins就是直接引入一个plugin,而且可以绑定到Maven相关的生命周期上。

pluginManagement主要是为了统一管理插件,确保所有子POM使用的插件版本保持一致,类似dependencies和dependencyManagement。

org.apache.maven.plugins maven-source-plugin 2.1 true compile jar org.apache.maven.plugins maven-source-plugin


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有