gpt4 book ai didi

java - 在 maven java 项目运行时获取激活的配置文件名称列表

转载 作者:行者123 更新时间:2023-12-04 00:54:11 27 4
gpt4 key购买 nike

我需要能够使用在 JUnit 测试运行时激活的配置文件。
我想知道是否有任何方法可以做类似的事情:

String str = System.getProperty("activated.profile[0]");

或任何其他相对方式...

我意识到有一个选项可以使用 ${project.profiles[0].id}但不知何故它不起作用。

有任何想法吗?

最佳答案

当使用 surefire 运行单元测试时,它通常会产生一个新的 JVM 来运行测试,我们必须将信息传递给新的 JVM。这通常可以使用“systemPropertyVariables”标签来完成。

我能够使用快速入门 Java 项目来练习这个,我将它添加到 POM 中:

我声明了以下配置文件

<profiles>
<profile>
<id>special-profile1</id>
</profile>
<profile>
<id>special-profile2</id>
</profile>
</profiles>

这是万无一失的配置:
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19</version>
<configuration>
<systemPropertyVariables>
<profileId>${project.activeProfiles[0].id}</profileId>
</systemPropertyVariables>
</configuration>
</plugin>
...
</plugins>
</build>

在我的单元测试中,我添加了以下内容:
/**
* Rigourous Test :-)
*/
public void testApp()
{
System.out.println("Profile ID: " + System.getProperty("profileId"));
}

在没有配置文件的情况下调用“测试”命令时(即使用 mvn test ),我得到了这个:

-------------------------------------------------- -----
测试结果
-------------------------------------------------- -----
运行 com.fxs.AppTest
配置文件 ID:开发
测试运行:1,失败:0,错误:0,跳过:0,耗时:0.003 秒 - 在 com.fxs.AppTest

结果 :

测试运行:1,失败:0,错误:0,跳过:0

我们使用了 mvn -P special-profile2 test , 我懂了

-------------------------------------------------- -----
测试结果
-------------------------------------------------- -----
运行 com.fxs.AppTest
个人资料 ID:special-profile2
测试运行:1,失败:0,错误:0,跳过:0,耗时:0.002 秒 - 在 com.fxs.AppTest

结果 :

测试运行:1,失败:0,错误:0,跳过:0

这将传递第一个 Activity 配置文件的名称。如果我们可能有多个 Activity 配置文件,那么我们可能需要使用更多的系统属性。

注意:我使用 Maven 3.1.1 对此进行了测试

关于java - 在 maven java 项目运行时获取激活的配置文件名称列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34547962/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com