maven中几个标签配置记录

Posted 敲代码的小小酥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven中几个标签配置记录相关的知识,希望对你有一定的参考价值。

一、dependencyManagement标签

<dependencyManagement>标签在父工程的pom中定义,用于声明所依赖的jar包的版本号等信息,那么所有子项目再次引入此依赖jar包时则无需显式的列出版本号。Maven会沿着父子层级向上寻找拥有dependencyManagement 元素的项目,然后使用它指定的版本号。
例如:
在父工程pom.xml中定义如下声明:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>1.2.3.RELEASE</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

在子类工程中,无需再声明依赖版本:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

该标签的好处是方便所有jar包版本的统一管理。
注意: dependencyManagement中定义的只是依赖的声明,并不实现引入,因此子项目需要显式的声明需要用的依赖。

二、标签的pom值

例如:

<dependencies>
  <dependency>
      <groupId>org.sonatype.mavenbook</groupId>       
      <artifactId>persistence-deps</artifactId>       
      <version>1.0</version>
     <type>pom</type>
 </dependency> 
</dependencies>

type默认的值是jar。即依赖某个jar包,以及jar包中所依赖的其他jar包,都会依赖进来。如果将type标签改为pom。那么意思就是不再依赖这个jar包本身,而是依赖这个jar包所定义的pom。将这个jar包pom中所依赖的jar都传递过来。如上面的配置,就是将persistence-deps.jar的pom里所依赖的内容,传递过来。
注意: type定义为pom,是将依赖jar包pom中<dependencies>中依赖的jar包都传递依赖过来。而 </dependencyManagement>中的内容不会弄过来。

三、标签的import值

例如:

  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>project-A</groupId>
        <artifactId>project-A</artifactId>
        <version>1.0</version>
        <scope>import</scope>
        <type>pom</type>
      </dependency>
      ...
    </dependencies>
  </dependencyManagement>

<scope>值写成import的意思是,将依赖jar包中pom的</dependencyManagement>内容复制一份过来,而不是继承关系。如上配置,就是将A项目的</dependencyManagement>内容复制一份到本项目,即使用A项目中定义的jar包版本。
注意: import不会将A项目具体的依赖项<dependencies>复制过来,他只是用了A项目的</dependencyManagement>,不存在传递依赖现象。
<scope>import</scope>需要和<type>pom</type>一起使用才生效,单独使用<scope>import</scope>不行。即在有<type>pom</type>的情况下,如果配置了<scope>import</scope>,那么就是复制对方的<dependencyManagement>内容过来。如果没有<scope>import</scope>,就是将对方的<depencies>内容传递依赖过来。
补充: </dependencyManagement>下的<dependencies>只是用于声明版本的。如果想依赖jar包,需要在单独的<dependencies>中定义jar包声明。

四、SpringBoot项目配置

在使用springboot时,通常工程有自己的父模块,而不能继承spring-boot-starter-parent时,文档推荐配置

<dependencyManagement>
	<dependencies>
		<dependency>
			<!-- Import dependency management from Spring Boot -->
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-dependencies</artifactId>
			<version>2.1.12.RELEASE</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

我们看到,这里多了一个import,它的意思是将spring-boot-dependencies 中dependencyManagement的dependencies,全部引入到当前工程的dependencyManagement中。import只能用在dependencyManagement块中,它将spring-boot-dependencies 中dependencyManagement下的dependencies插入到当前工程的dependencyManagement中,所以不存在依赖传递。
当没有<scope>import</scope>时,意思是将spring-boot-dependencies 的dependencies全部插入到当前工程的dependencies中,并且会依赖传递。

参考文章:maven pom类型,有import和没有import的区别

以上是关于maven中几个标签配置记录的主要内容,如果未能解决你的问题,请参考以下文章

HTML超文本标记语言-HTML中几个常用标签及属性

分享嵌入式中几个实用的shell脚本!

工作中几个点回想

种草 Vue3 中几个好玩的插件和配置

种草 Vue3 中几个好玩的插件和配置

python 微服务开发书中几个方便的python框架