我希望设置使用Maven的Java项目,以便在本地开发和运行单元测试时,资源从标准src/main/resources
和src/test/resources
目录中获取,而在应用< em> profile 资源将被特定于部署的资源覆盖。理想情况下,特定于配置文件的资源将是全部资源的子集,因此该过程应首先编写常规资源,然后在第一个之上应用特定于配置文件的资源。
我的目录布局是标准布局,其中 profiles 资源位于src/main/env/{profile}
下。
我设法在build
/ resources
下使用多个节来做到这一点:
<profiles>
<profile>
<id>dev</id>
<activation><activeByDefault>true</activeByDefault></activation>
<properties>
<targetEnv>dev</targetEnv>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<targetEnv>test</targetEnv>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<targetEnv>prod</targetEnv>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/env/${targetEnv}</directory>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<build>
这是可行的,但是,我的第一个尝试是以相反的顺序排列两个资源目录(第一个是常规目录,特定于配置文件的目录),以匹配覆盖过程。相反,它用常规文件覆盖了特定于配置文件的文件。
Maven是否完全保证在build
/ resources
下订购这些节?