There are two ways to add a list of system properties to Failsafe:
This configuration is the replacement of the deprecated systemProperties. It can accept any value from Maven's properties that can be converted to String value.
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.10</version>
<configuration>
<systemPropertyVariables>
<propertyName>propertyValue</propertyName>
<buildDirectory>${project.build.directory}</buildDirectory>
[...]
</systemPropertyVariables>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project><project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.10</version>
<configuration>
<systemProperties>
<property>
<name>propertyName</name>
<value>propertyValue</value>
</property>
[...]
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>Take note that only String valued properties can be passed as system properties. Any attempt to pass any other Maven variable type (i.e. List or a URL variable) will cause the variable expression to be passed literally (unevaluated). So having the example below:
<project>
[...]
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.10</version>
<configuration>
<systemProperties>
<property>
<name>buildDir</name>
<value>${project.build.outputDirectory}</value>
</property>
</systemProperties>
</configuration>
</plugin>
</plugins>
</build>
[...]
</project>will literally pass ${project.build.outputDirectory} because the value of that expression is a File, not a String.
To inherit the "systemProperties" collection from the parent configuration, you will need to specify combine.children="append" on the systemProperties node in the child pom:
<systemProperties combine.children="append">
<property>
[...]
</property>
</systemProperties>