2

really need some help here because I cannot seem to figure this out.

I have followed Maven Profiles – Example 2 in the following guide https://mkyong.com/maven/maven-profiles-example/

Here is my pom.xml file:

<?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>

Here are my properties files. I am only using two env configs at the moment 'test' and 'integration' enter image description here

enter image description here

enter image description here

enter image description here

Here is my BaseTest class. Previously I was getting the URL values directly from the pom.xml file and assigning them to variables for use in my tests. How do I now access the values stored in the config files so I can assign them to variables for use in my tests?

enter image description here

When I debug, all I get are nulls. Running 'mvn package -P integration' in the terminal does not work either

enter image description here

However, it does say that the profile I specified is active when I execute 'mvn package -P integration'

enter image description here

In summary, what I am trying to achieve is to access the values stored in the config files so I can assign them to variables for use in my tests. Maybe I have misunderstood it. I am pretty new to Maven and Java and any help would be greatly appreciated

Thanks

JLee101
  • 93
  • 1
  • 1
  • 8

2 Answers2

0

System.getProperty is not used to retrieve values from the user-defined file. You need to load properties manually, something like the following:

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();
        }
    }

}
Jan Schultke
  • 17,446
  • 6
  • 47
  • 96
-1

Please refer How to read data from java properties file using Spring Boot

The code you have written will only read values from environment variables.