快捷搜索:  汽车  科技

资源有效配置原理(资源过滤配置)

资源有效配置原理(资源过滤配置)database.jdbc.connectionURL = jdbc:mysql://192.168.1.111:3306/testdatabase.jdbc.driverClass = com.mysql.jdbc.Driverdatabase.jdbc.username = devdatabase.jsbc.password = dev-pwd但是当测试人员想要构建项目产品并进行测试的时候,他们往往需要使用不同的数据库。可能测试环境的数据库配置如下:

在不同的环境中,项目的源码应该使用不同的方式进行构建,最常见的就是数据库配置了。

例如,在开发环境中,有些项目会在src/main/resources/目录下放置带有如下内容的数据库配置文件:

database.jdbc.driverClass = com.mysql.jdbc.Driver

database.jdbc.connectionURL = jdbc:mysql://localhost:3306/test

database.jdbc.username = dev

database.jsbc.password = dev-pwd

但是当测试人员想要构建项目产品并进行测试的时候,他们往往需要使用不同的数据库。可能测试环境的数据库配置如下:

database.jdbc.driverClass = com.mysql.jdbc.Driver

database.jdbc.connectionURL = jdbc:mysql://192.168.1.111:3306/test

database.jdbc.username = test

database.jsbc.password = test-pwd

连接数据库的URL、用户名和密码都发生了变化,类似的,当项目被发布到生产环境,使用的数据库配置又是另外一套了。这时比较原始的做法是,使用与开发环境一样的构件,然后在测试或者发布产品之前再手动改一下这些配置。这时可行的,也是比较常见的,但肯定不是最好的方法。手动往往就意味着低效和错误。

Maven属性默认只有在POM中才会被解析,也就是说,${db.username}放到pom中会变成dev,但是如果放到src/main/resources/目录下的文件中,构建的时候它将仍然还是${db.username}。因此,需要让Maven解析资源文件中的Maven属性。

资源文件的处理其实是maven-resources-plugin做的事情,它默认的行为只是将项目主资源文件复制到主代码编译输出目录中,将测试资源文件复制到测试代码编译输出目录中。不过只要通过一些简单的配置,该插件就能解析资源文件中的Maven属性,即开启资源过滤。

Maven默认的主资源目录和测试资源目录的定义是在超级POM中,要为资源目录开启过滤,只要在此基础上添加一行filtering配置即可。

为主资源目录开启过滤:

资源有效配置原理(资源过滤配置)(1)

为测试资源目录开启过滤:

资源有效配置原理(资源过滤配置)(2)

到目前为止,一切基本就绪,我们将数据库配置的变化部分提取成了Maven属性,在POM的profile中定义了这些属性的值,并且为资源目录开启了属性过滤。最后,只需要在命令行激活profile,Maven就能够在构建项目的时候使用profile中属性值替换数据库配置文件中的属性引用。

$ mvn clean install -Pdev

-P参数表示在命令行激活一个profile。这里激活了id为dev的profile。构建完成后,输出目录中的数据库配置就是开发环境的配置了。

-出自maven实战

猜您喜欢: