• maven中几个标签配置记录


    一、dependencyManagement标签

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

    <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.springframework.bootgroupId>
                    <artifactId>spring-boot-starter-webartifactId>
                    <version>1.2.3.RELEASEversion>
                dependency>
            dependencies>
        dependencyManagement>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

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

    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4

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

    二、标签的pom值

    例如:

    <dependencies>
      <dependency>
          <groupId>org.sonatype.mavenbookgroupId>       
          <artifactId>persistence-depsartifactId>       
          <version>1.0version>
         <type>pomtype>
     dependency> 
    dependencies>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

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

    三、标签的import值

    例如:

      <dependencyManagement>
        <dependencies>
          <dependency>
            <groupId>project-AgroupId>
            <artifactId>project-AartifactId>
            <version>1.0version>
            <scope>importscope>
            <type>pomtype>
          dependency>
          ...
        dependencies>
      dependencyManagement>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    四、SpringBoot项目配置

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

    <dependencyManagement>
    	<dependencies>
    		<dependency>
    			
    			<groupId>org.springframework.bootgroupId>
    			<artifactId>spring-boot-dependenciesartifactId>
    			<version>2.1.12.RELEASEversion>
    			<type>pomtype>
    			<scope>importscope>
    		dependency>
    	dependencies>
    dependencyManagement>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

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

  • 相关阅读:
    Python自学教程9-python中的if语句,你知道多少?
    vue预览xlsx
    UWB定位系统中为何要加入陀螺仪
    【题解】金牌导航-高斯消元/Luogu P3232 游走
    如何将本地代码托管到Gitee上
    重要的 SQL Server 函数 - 日期函数
    猿创征文|uniapp tabbar自定义风格
    xavier china server
    HashMap遍历之EntrySet————小练习
    经典OJ题:链表中的倒数第K个节点
  • 原文地址:https://blog.csdn.net/qq1309664161/article/details/126360307