我有一个位于 $PROJECT_HOME/src/test/resources 的 test.properties 文件,其内容如下:
hostname=${host}
Run Code Online (Sandbox Code Playgroud)
我还有一个 main.properties 文件位于: $PROJECT_HOME/src/main/resources 具有相同的内容。
然后我在我的项目的 pom 文件中指定了以下几行。
<properties>
<host>localhost</host>
</properties>
<build>
<resources>
<!-- Filter resource files -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
....
</build>
Run Code Online (Sandbox Code Playgroud)
执行 mvn clean install 后,我看到目标文件夹中的 main.properties 替换为 localhost 值。但是我的 test.properties 中的属性不是...
我的第一个想法是调整资源如下:
<properties>
<host>localhost</host>
</properties>
<build>
<resources>
<!-- Filter resource files -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
....
</build>
Run Code Online (Sandbox Code Playgroud)
现在构建时,test.properties 文件将替换为 localhost 值,但放置在目标的 classes 文件夹中。在测试类中,仍然存在没有替换值的 test.properties 文件...
有没有办法也替换 test-classes 文件夹中的值?我的想法是在我的本地服务器上使用 localhost 值而不将其指定为参数,并在对测试服务器执行集成测试时使用备用主机覆盖此值。在这种情况下,我在我们的持续集成系统上指定值 -Dhost=<>。
这应该可以工作(尽管 test.properties 不会最终出现在您的 classes 文件夹中,并且 test-classes 将同时具有 test.properties 和 main.properties 以及我认为是您想要但不确定的替换值)。
<resources>
<!-- Filter resource files -->
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<testResources>
<!-- Filter test resource files -->
<testResource>
<directory>src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
Run Code Online (Sandbox Code Playgroud)
此外,您可能希望拥有两个属性${host}(在 host.properties 中引用)和${test.host}(在 test.properties 中引用),否则如果您-Dhost在集成构建期间指定,它将替换 host.properties 和 test.properties 中的值. 通过这种方式,您可以指定-Dtest.host更改用于集成测试的主机,而不是部署时设置的主机。
| 归档时间: |
|
| 查看次数: |
1832 次 |
| 最近记录: |