Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发

一、分模块开发与设计

直接引用前面写过的

https://blog.csdn.net/weixin_51351637/article/details/128052572

二、聚合

直接引用前面写过的

https://blog.csdn.net/weixin_51351637/article/details/128052572

三、继承

直接引用前面写过的

https://blog.csdn.net/weixin_51351637/article/details/128052572

四、属性

4.1 基本介绍

经过上面的操作,我们的子模块和父模块之前有了一个良好的关系,但是在我们的父模块的内部很有可能会出现问题

比如说,同一个groupId下有不同的artifactId,很有可能会出现 artifactId不同。

或者说我们改了其中的一个版本,但是忘记改另外两个依赖的版本

如下图所示

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第1张图片

现在我们希望出现一种机制,能够统一更改同一个groupId不同artifactId的版本信息(version),这种机制叫做属性,以后的版本信息都用这个属性的内容

4.1.1 自定义属性

等同于定义变量,方便统一维护

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第2张图片

4.1.2 内置属性

使用Maven的内置属性,快速配置

调用格式:

${basedir}
${version}


${project.version}

4.1.3 Setting属性

使用Maven配置文件setting.xml中的标签属性,用于动态配置

比如说想读取Maven安装目录中的setting.xml文件中的内容,就可使用下面的形式

调用格式:

${settings.localRepository}

4.1.4 Java系统属性

读取java系统属性

${user.home}

maven里面也可以操作

系统属性查询方式:

mvn help:system

这样执行之后就会下载许多的插件,也会有两个分区,下面是系统变量

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第3张图片

比如我们填写这个,我们就可以获取到Java(TM) SE Runtime Environment

${java.runtime.name}

4.1.5 环境变量属性

下半区就是环境变量分区

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第4张图片

环境变量引用前加env.

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第5张图片

使用和4.1.4相同

4.2 定义属性

    
          1.8
           
          5.1.9.RELEASE
    

4.3 使用属性

    
        
            
            
                org.springframework
                spring-context
                ${spring.version}
            
        
    

另外说明

这个时候不需要在标签中填写。我们可以看到父工程的version和我们自己引入依赖的版本一个样子的1.0-SNAPSHOT,所以Maven为我们提供了一个比较方便的东西,如果我们想在中的使用和该pom.xml文件一个样的值,可以直接写 ${version}

    com.itheima
    ssm
    1.0-SNAPSHOT
    pom
    练习

    
        
            
            
                com.itheima
                ssm_pojo
                
                ${version}
            
        
    

但是说实话我在实习的时候看公司pom文件,并没有这么做,还是在properties中进行声明,因为公司的项目会有很多的文件,有时候我们在本地只会修改一两个工程包,其他的工程包的版本不会动。如果这个时候我们修改父工程的版本,剩下的子工程的版本都会改变,但是大部分子工程的内容是没有改变的,所以没有必要。
这种情况下在我的公司是从git上的分支再拉取自己的分支,写完代码push之前我们需要统一版本,这时候我们需要将parent工程的pom文件版本以及修改过其他工程的pom文件版本统一,没有修改的就不用动,再install(将修改后的工程下载到本地)、deploy一下,上传到git自己的分支,然后再合并到test分支进行测试(parent项目不合并)。
合并到test的时候肯定会有冲突,此时pom文件中的版本要以test分支的版本号一致,相当于又将版本改回去了

五、版本管理

5.1 SNAPSHOT与RELEASE区别

SNAPSHOT: 快照版本

东西还没做完,正在开发, 也就是未完成版

  • 项目开发过程中,为方便团队成员合作,解决模块间相互依赖和实时更新的问题,开发者对每个模块进行构建的时候,输出的临时性版本叫快照版本(测试阶段版本)

  • 快照版本会随着开发的进展不断地更新

RELEASE:发布版本,成品

我们之前在spring天天见到RELEASE

  • 项目开发到进入阶段里程碑后,向团队外部发布较为稳定的版本,这种版本所对应的构建文件是稳定的,即便进行功能的后续开发,也不会改变当前发布版本内容,这种版本成为发布版本

修改完版本记得install一下,将依赖下载到仓库。
说到底这个操作都是改了一个名

5.2 工程版本号约定

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第6张图片

六、资源配置

6.1 main资源文件对应信息

这是在父工程的pom.xml文件中统一配置,下面的资源的属性要在其他的资源文件中使用


   jdbc:mysql://localhost:3306/ssm_db

下面是在application.yaml中配置,比如

url: ${jdbc.url}

但是我们把项目install到仓库中,查看pom文件,发现是没有解析的,那这肯定是不行的

那我们怎么解决这件事呢?

在父工程的pom.xml中的构建里面定义清楚资源文件参与这种形式的使用


   
   
         
              
             ../ssm_dao/src/main/resources
             
             true
          
   

但是现在又存在了一个新的问题,如果有很多的工程,比如controller、service、dao等都存在类似的配置文件,那岂不是要添加很多?

答案是不用的,我们可以来一个通配的格式,如下所示


   
   
         
              
             ${project.basedir}/src/main/resources
             
             true
          
   

6.2 test资源文件对应信息

还有一种情况,就是测试类下面也会有一些配置文件,那这怎么做呢?

如下所示:


   
   
         
              
             ${project.basedir}/src/main/resources
             
             true
          
   

   
   
         
              
             ${project.basedir}/src/test/resources
             
             true
          
   

七、多环境开发配置

生产环境、开发环境、测试环境,在这三个不同的环境时,我们很有可能会改一下我们的配置(每次上线都需要把这些配置改一下),所以我们接下来要实现我们的配置能在多个环境运行,不用再修改配置

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第7张图片

7.1 创建多环境

环境一般就是指生产环境、开发环境、测试环境。

    
        
        
            dev
            
            
                jdbc:mysql://127.0.0.0:3306/ssm_db
           
        

        
        
            pro
            
                jdbc:mysql://localhost:3306/ssm_db
            
        

    

但是现在如果执行的话,我们的配置文件还是直接展示url: ${jdbc.url},并没有进行编译解析。

因为我们在Maven运行install的时候并没有指定环境,下面我们就指定环境

7.2 指定运行环境

-P表示指定环境

mvn install -P pro

进入公司实习之后,发现公司会使用nacos远程配置,在这个地方会指定运行的环境

Maven高级——聚合、继承、属性、版本管理、资源配置、多环境开发_第8张图片

我们不通过命令行,我想直接install就让环境生成,有没有办法呢?

有!我们可以设置一种环境作为默认使用

    
        
        
            dev
            
            
                jdbc:mysql://127.0.0.0:3306/ssm_db
           
            
            
                true
            
        

        
        
            pro
            
                jdbc:mysql://localhost:3306/ssm_db
            
        

    

你可能感兴趣的:(maven,maven,java,spring)