一次巧合又巧合的Bug

作者: 吴世浩 | 来源:发表于2017-01-20 16:47 被阅读0次

    一、浩言

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

    二、背景

    原本的注册接口本身没问题的,但是我上次改了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下面,所以就被替换了,配置如下


    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>
    

    报错如下:


    Paste_Image.png

    四、思考

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

    五:浩语

                                               __                                                        
                                __  _  ____ __|  |__ _____    ___
                                \ \/ \/ /  |  \  |  \\__  \  /  _ \   
                                 \     /|  |  /   Y  \/ __ \(  <_> )
                                  \/\_/ |____/|___|  (____  /\____/ 
                                                        \/     \/          
                                     任何事情都是要靠努力和用心。                                                   
    

    相关文章

      网友评论

        本文标题:一次巧合又巧合的Bug

        本文链接:https://www.haomeiwen.com/subject/bmgibttx.html