• SpringCloud-6-pom文件中常用的标签


    4.7 pom文件中常用的标签
    • packaging:指定maven打包的方式
    • pom:管理maven项目的,内部无源码,配置在父项目中,在子项目继承或聚合maven模块
    • war:将项目打成war包,对于web项目来说,通常会设置为war
    • jar:普通java项目,通常会设置为jar
    • dependency:配置jar包的gav坐标,这样maven就可以自动下载相关jar包了

    • scope:在dependency标签下有一个scope标签,该标签的作用是可以设置依赖在项目的使用阶段,通常来说,项目包含:编译、运行、测试、打包这些不同的阶段。

    • compile:是默认值,适用于所有阶段,编译、运行、测试、打包都会包含到项目中
    • test:只在测试时使用,用于编译和运行测试代码,不会随项目发布, 例如junit,如果不修改junit依赖中的scope,我们只能在test目录下使用junit相关类。
    • runtime:只在运行时使用,例如mysql的JDBC驱动依赖,我们在编写代码的时候使用java.sql包下的类即可,在运行的时候才会用到该依赖,适用运行和测试阶段。
    • provided:编译、运行阶段使用,打包时不会包含该依赖,例如servlet.jar,这个包在tomcat容器中已经提供了,因此打包时servlet.jar 无需包含在项目中
    • system:类似provided,需要显式提供包含依赖的jar的路径(使用systemPath标签),Maven不会在仓库中查找它。使用较少
    • optional:在dependency标签下有一个optional标签,若将A的POM文件中某个依赖optional设置为true,则标识项目A的POM文件有如下依赖声明,optional表示该依赖只影响项目A, 如果有项目B依赖了A,则这两个依赖不会被传递;因此如果B依赖了A,并且只用到了spring-cloud-context,则需在B的POM中显示声明依赖spring-cloud-context即可

      
        org.springframework.cloud
        spring-cloud-context
        3.1.3
        compile
        true
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
    • systemPath:在dependency标签下有一个systemPath标签,引入非本地仓库中的jar包,有时候我们需要使用一些jar包,但是这些jar在maven仓库中并不存在,此时可以使使用下面方式引用,以log4j为例

    
      org.projectlombok
      lombok
      1.16.18
      system
      ${project.basedir}/src/main/webapp/WEB-INF/lib/log4j-1.2.17.jar
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    存在问题?如此引入非本地参考的jar包时,在使用maven打包时是不会将该jar打包入项目中的【Maven打包不会将这个非本地仓库的jar包打进去】,所以还需要添加过滤方式:

    
            
                
                    ${project.basedir}/lib
                    BOOT-INF/lib/
                    
                        **/*.jar
                    
                
                
                    src/main/resources
                    BOOT-INF/classes/
                
            
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • properties:对于同一个技术需要编写很多个依赖引入相关的jar包,每个依赖中都要填写版本号,倘若更换版本号的话,修改的地方比较多,所以可以使用properties统一管理版本号,logback-version可以自由命名,通过${}方式进行引用:
     	
            UTF-8
            1.8
            1.8
            4.12
            1.2.17
            1.16.18
        
        
            
                org.projectlombok
                lombok
            
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 内置属性:
    • ${basedir} 表示项目根目录,即包含pom.xml文件的目录

    • ${version} 等同于 ${project.version} 或者 ${pom.version} 表示项目版本

    • type:在dependency标签下有一个type标签,表示引用依赖的类型,默认为jar即引入一个特定的jar包。
    • type为pom表示当我们需要引入很多jar包的时候会导致pom.xml过大,我们可以想到的一种解决方案是定义一个父项目,但是父项目只有一个,也有可能导致父项目的pom.xml文件过大。这个时候我们引进来一个type为pom,意味着我们可以将所有的jar包打包成一个pom,然后我们依赖了pom,即可以下载下来所有依赖的jar包
    • 父pom.xml管理了版本:
    
            
                org.apache.zookeeper
                zookeeper
                ${zookeeper.version}
                pom
                
                    
                        org.slf4j
                        slf4j-log4j12
                    
                
            
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 子pom.xml引用:
    
        org.apache.zookeeper
        zookeeper
        pom
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 父pom.xml管理定义了是pom类型,子pom.xml不写pom项目中就不能正常使用相关类。
    • dependencyManagement 组件,依赖管理

    作用:用来申明依赖,但不导入。dependencies 组件用于导入依赖,注意两者区别特性:

    • 子项目不会继承 dependencyManagement 组件中声明的依赖。
    • 但如果子项目想导入某个父pom 中 dependencyManagement 中的依赖,只需要填写 groupId 和 artifactId ,不需要填写版本号,maven会自动去父pom 的 dependencyManagement 中找对应的 version,包括scope、exclusions等
    
            
                
                
                    org.springframework.cloud
                    spring-cloud-dependencies
                    2021.0.3
                    pom
                    import
                
            
        
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • import的作用:有此标签则子项目中所有不声明版本的依赖均可导入,无此标签子项目中所有不声明版本的依赖则会报版本不能为空错误。所以该标签导入依赖范围,该依赖范围只能与 dependencyManagement 元素配合使用,其功能是将目标 spring-cloud-dependencies项目的pom.xml 文件中 dependencyManagement 的配置导入合并到当前 pom.xml 的 dependencyManagement 中。
    • import 说明继承了dependencyManagement中所有的依赖,从而导致当前pom能够导入不写版本的依赖。
    下一篇:SpringCloud-7-Spring Boot使用Jetty容器
  • 相关阅读:
    Mac安装brew及前端环境「亲测有效」
    数商云SRM采购管理系统应用流程详解,采购平台助力化工行业提升招标采购质效
    设计模式-中介者模式
    【Axure高保真原型】日历日期原型模板
    权威推荐!腾讯安全DDoS边缘安全产品获国际研究机构Omdia认可
    5分钟带你了解python中超级好用的库 you-get
    本地部署Element-Plus开发文档
    qt 重载信号,使用“&“方式进行connect()调用解决方案
    深入ftrace function graph功能
    MyBatis使用mapper代理方式完成入门案例(对数据库进行查询)
  • 原文地址:https://blog.csdn.net/weixin_42045639/article/details/126821299