一、浩言
如果你是对的,你没必要发脾气;如果你是错的,你没资格发脾气---这才是真正的智慧
二、背景
原本的注册接口本身没问题的,但是我上次改了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 \/ __ \( <_> )
\/\_/ |____/|___| (____ /\____/
\/ \/
任何事情都是要靠努力和用心。
网友评论