一次巧合又巧合的Bug

一、浩言

如果你是对的,你没必要发脾气;如果你是错的,你没资格发脾气—这才是真正的智慧

二、背景

原本的注册接口本身没问题的,但是我上次改了pom文件之后,测试就发现注册失败了,关键就是单纯的最后一次插入失败,因此就老老实实的去找bug了,日志也打印了,但是插入的时候version就是变为了’0.0.1-SNAPSHOT’,其实这个值实很敏感的,因为maven的版本号就是这样,所以我就把maven的版本号改了,结果果然,这里插入的数据又变为新的maven版本号,我勒个去的,这就郁闷了,但是我前面一个插入也有version的斑斑号插入的,结果检查一发现,xml里面是写固定了,好吧,继续后面这个插入的说,我记得我也没改什么,就是改了资源过滤,根据不同的参数得到不同的配置文件而已,问题从这入手。

三、问题所在

所以我把maven打完包后,进入打包文件中查看xml,看到如下图的结果,打包的时候后version已经被替换了。所以<a herf=”http://www.jianshu.com/p/7d383a5e8240″>maven工具不同环境打包加载属性方式</a>中介绍了另外一个获取属性的方法就是${version}的方式来获取数据的。因为我在pom.xml里面制定了过滤的目录是resource下面文件,因为我的xml放在mapper下面,所以就被替换了,配置如下

《一次巧合又巧合的Bug》 Paste_Image.png

  <modelVersion>4.0.0</modelVersion>
  <groupId>test</groupId>
  <artifactId>test</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>

......

<profiles>
    <profile>  
        <id>test</id>  
        <properties>  
            <package.environment>test</package.environment>  
        </properties>  
    </profile>  
    <profile>  
        <id>production</id>  
        <properties>  
            <package.environment>production</package.environment>  
        </properties>  
    </profile>  
    <profile>  
        <id>development</id>  
        <properties>  
            <package.environment>development</package.environment>  
        </properties>  
         <activation>  
                <activeByDefault>true</activeByDefault>  
          </activation>
    </profile>  
</profiles>
<build>
<resources>
        <!-- <resource>
            <directory>src/main/resources/config</directory>  
            <excludes>  
                <exclude>test/**</exclude>    
                <exclude>production/**</exclude>    
                <exclude>development/**</exclude>    
            </excludes>  
            <filtering>true</filtering>        
        </resource> -->
        <resource>
            <directory>src/main/resources</directory>  
            <excludes>  
                <exclude>config/test/**</exclude>    
                <exclude>config/production/**</exclude>    
                <exclude>config/development/**</exclude>    
            </excludes>  
            <filtering>true</filtering>        
        </resource>
        <resource>    
            <directory>src/main/resources/config/${package.environment}</directory>    
        </resource>  
</resources>

报错如下:

《一次巧合又巧合的Bug》 Paste_Image.png

四、思考

那么上面说了是我指定目录问题,那么如果我指定的目录是src/main/resources/config下的,就是上面注释的代码,过滤后的文件就只用我的test or production or development文件的东西,这样我这个目录下的文件我都得使用include进行包含操作。也是很麻烦。所以我改了xml里面的获取数据方式#{version}
所以这是一次巧合中的巧合,第一个巧合是我修改了打包的方式,根据不同参数打包不同配置文件,再巧合的是我的代码里面的参数竟然会被maven里的属性进行覆盖,这有获取值的方式问题,也有巧合问题了。所以工具用的同时也要注意问题。

五:浩语

                                           __                                                        
                            __  _  ____ __|  |__ _____    ___
                            \ \/ \/ /  |  \  |  \\__  \  /  _ \   
                             \     /|  |  /   Y  \/ __ \(  <_> )
                              \/\_/ |____/|___|  (____  /\____/ 
                                                    \/     \/          
                                 任何事情都是要靠努力和用心。                                                   
    原文作者:吴世浩
    原文地址: https://www.jianshu.com/p/2fad06d46a86
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞