Para definir uma váriavel de ambiente em runtime no Maven, basta adicionarmos no configuration/systemPropertyVariables o valor desejado, como estamos falando especificamente do profile ativo, basta criarmos um nó que será o nome da váriavel e o valor, que no caso foi definido como o primeiro profile ativo:
Exemplo de profiles
<profiles>
<profile>
<id>profile-1</id>
...
</profile>
<profile>
<id>profile-2</id>
...
</profile>
</profiles>
O mapeamento é feito no plugin surefire *(ou se no failsafe). Definição da ENV:
<build>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemPropertyVariables>
<profileId>${project.activeProfiles[0].id}</profileId>
</systemPropertyVariables>
</configuration>
</plugin>
...
</plugins>
</build>
Para obter o valor no código basta usarmos:
System.getProperty("profileId")
Exemplo de uso:
- https://github.com/helpdeveloper/java-modular-architecture/blob/main/acceptance-test/pom.xml#L149
- https://github.com/helpdeveloper/java-modular-architecture/blob/main/acceptance-test/src/test/java/br/com/helpdev/atdd/DefaultContainerStarterTest.java#L71
Fonte: https://stackoverflow.com/a/34551514
Java / Maven – Como pegar os activeProfiles em runtime nos testes? (Get list of activated profile name during run time in maven java project)