项目工程针对开发和生产有两套配置,
开发配置文件目录:
src/main/resources/
applicationContext.xml (开发和生产共用)
dubbo.properties (开发和生产不同)
生产配置文件目录:
src/main/profile/product/
dubbo.properties
maven中profile配置如下:(其中 basedir 是 maven 的内置变量,是工程根目录的绝对路径)
<profiles> <profile> <id>dev</id> <properties> <profile.dir>${basedir}/src/main/resources</profile.dir> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> <profile> <id>product</id> <properties> <profile.dir>${basedir}/src/main/profile/product</profile.dir> </properties> </profile> </profiles>
<project>的<build>配置如下:
<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes>
<!-- 使用excludes标签可以排除文件 --> </resource> <resource> <directory>${profile.dir}</directory> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> <filtering>true</filtering> </resource> </resources> </build>
本来,maven在copy资源文件时,不会覆盖已存在的文件,但是加上<filtering>后,会覆盖文件哦,同时该命令会打开文件。
<profile>内部也可以添加<build>标签,执行顺序是先profile/build,后project/build。
project/build属于公共配置,而profile/build属于profile私有配置。