问题描述
在这里真的需要一些帮助,因为我似乎无法弄清楚。
我已遵循以下指南https://mkyong.com/maven/maven-profiles-example/
中的 Maven个人资料–示例2这是我的pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- necessary for intellij to function -->
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<groupId>groupId</groupId>
<artifactId>testAPI.automation.java</artifactId>
<profiles>
<profile>
<id>test</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<env>test</env>
</properties>
</profile>
<profile>
<id>integration</id>
<properties>
<env>integration</env>
</properties>
</profile>
</profiles>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-path</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>json-schema-validator</artifactId>
<version>4.1.2</version>
</dependency>
<dependency>
<groupId>org.exparity</groupId>
<artifactId>hamcrest-date</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
</dependencies>
<build>
<!-- Loading all ${} -->
<filters>
<filter>src/main/resources/env/config.${env}.properties</filter>
</filters>
<!-- Map ${} into resources -->
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>*.properties</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M3</version>
<configuration>
<parallel>methods</parallel>
<threadCount>10</threadCount>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- display active profile in compile phase -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-help-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>show-profiles</id>
<phase>compile</phase>
<goals>
<goal>active-profiles</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
这是我的属性文件。在“测试”和“集成”时,我仅使用两个环境配置
这是我的BaseTest类。以前,我直接从pom.xml文件获取URL值,并将它们分配给变量以供测试使用。现在如何访问配置文件中存储的值,以便将它们分配给变量以供测试使用?
调试时,我得到的都是空值。在终端中运行'mvn软件包-P集成'也不起作用
但是,它确实表示我在执行“ mvn软件包-P集成”时指定的配置文件处于活动状态
总而言之,我要实现的目标是访问存储在配置文件中的值,以便可以将其分配给变量以供测试使用。也许我误会了它。我对Maven和Java还是陌生的,将不胜感激
谢谢
解决方法
System.getProperty
不用于从用户定义的文件中检索值。您需要手动加载属性,如下所示:
public class BaseTest {
String BaseUrl;
public BaseTest() {
Properties prop = new Properties();
try (InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("config.properties")) {
prop.load(resourceAsStream);
BaseUrl = (String) prop.get("url.baseUrl");
} catch (IOException e) {
e.printStackTrace();
}
}
}
,
请参阅 How to read data from java properties file using Spring Boot
您编写的代码只能从环境变量中读取值。