Maven surefire: append to argLine

user321605 picture user321605 · Dec 11, 2012 · Viewed 17.8k times · Source

I have 2 profiles that may or may not be used together to run a group of tests. They each require different vmargs to run, but if they are used together it's ok to have them appended to each other.

What I'm looking for is a way to set argLine to be the concatenation of its current value plus what I set.

I was hoping it would as simple as

<argLine>${argLine} -DnewVMArg</argLine>

Is there something similar I can do to make this happen?

I made an attempt at fixing it which results in maven getting stuck in a recursive cycle. It's documented below.

My Most recent attempt was to define a property <my.argLines></my.argLines> globally, and then to modify this within the profiles.

In each profile, in a properties block, I set overrode the property to:

<my.argLines>${my.argLines} -myUniqueToProfileArgs</my.argLines>

In each surefire configuration for the profiles, I set <argLines> to be:

<argLines>${my.argLines}</argLines>

This logically fits for me, but the way it evalutes is apparently not going to mesh.

Answer

MariuszS picture MariuszS · Jan 11, 2014

Define your default arguments -DnewVMArg inside argLine like below:

<properties>
    <customArg/>
    <argLine>${customArg} -DnewVMArg</argLine>
</properties>

Define profiles arguments

<profiles>
    <profile>
        <id>profile1</id>
        <properties>
            <customArg>-DmyUniqueToProfile1Args</customArg>
        </properties>
    </profile>
    <profile>
        <id>profile2</id>
        <properties>
            <customArg>-DmyUniqueToProfile2Args</customArg>
        </properties>
    </profile>
</profiles>

Additional plugin configuration is not required

<build>
    <plugins>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.16</version>
            <configuration/>
        </plugin>
....

I have tested this configuration, my results below.

Default

mvn surefire:test -X 

Result

(...)java -jar -DnewVMArg (...) 

Goal with profile

mvn surefire:test -X -Pprofile1

Result

(...)java -DmyUniqueToProfile1Args -DnewVMArg -jar (...)