前言
在日常开发中,我们大多都会有开发环境(dev)、测试环境(test)、生产环境(prod),不同环境的参数肯定不一样,我们需要在打包的时候,不同环境打不同当包,如果手动改,一方面效率低,容易出错,而且每次打包都改动,非常麻烦,所以Maven给我们提供了profile的配置。
正文
Maven resources plugin支持明确声明<directory>指定的资源目录中哪些资源需要处理,哪些资源可以不被处理。
Maven resource 中的<include>与<exclude>用于包含或排除某一文件目录下的文件是否是工程资源的。若<include>与<exclude>划定的范围存在冲突,则以<exclude>配置为准。多数情况下,使用<include>和<exclude>是为了配合<filtering>实现替换文件中的变量的需要。
例如:
在某一个工程中,src/main/resources目录下都是工程的资源文件,并不需要<include>和<exclude>再进行划定。但如果需要对且仅对其中的jdbc.properties和app.properties两个文件进行过滤,则需要借助<include>和<exclude>进行如下的配置:
<properties>
<profiles.dir>src/profiles</profiles.dir>
<resources.dir>src/main/resources</resources.dir>
</properties>
<!--environment-->
<profiles>
<profile>
<id>dev</id>
<build>
<resources>
<resource>
<directory>src/profiles/dev</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>test</id>
<build>
<resources>
<resource>
<directory>src/profiles/test</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>prod</id>
<build>
<resources>
<resource>
<directory>src/profiles/prod</directory>
</resource>
</resources>
</build>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>${profiles.dir}/*.*</include>
<include>${resources.dir}/*.*</include>
</includes>
</resource>
<resource>
<directory>${resources.dir}</directory>
<excludes>
<exclude>jdbc.properties</exclude>
<exclude>app.properties</exclude>
</excludes>
</resource>
</resources>
</build>