Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass args to JVM which runs tests with Gradle

Tags:

java

gradle

I am a Gradle rookie and I am not sure whether Gradle will start the new JVM when it runs the test set.

Like Passing JVM arguments to Gradle test task I want to pass some parameters to the JVM running the test set.

I added the following lines to build.gradle:

...
test {
    groovy {
        jvmArgs '-agentpath:/usr/lib/code_dependency_capturer.so' // add line
        srcDirs = ['src/test']
        if (!JavaVersion.current().isJava8Compatible()) {
            exclude '**/v8/*'
            exclude '**/vm8/*'
        }
    }
    resources {
        srcDirs = ['src/test-resources']
    }
}
...

But it tells me:

A problem occurred evaluating root project 'groovy'.
Could not find method jvmArgs() for arguments[-agentpath:/usr/lib/code_dependency_capturer.so] on source set 'test' of type org.gradle.api.internal.tasks.DefaultSourceSet. 

I googled this error but failed to solve it.

like image 824
nail fei Avatar asked May 20 '18 13:05

nail fei


1 Answers

Try setting the jvmArgs of the enclosing test task rather than trying to set them on groovy.

The error you are getting suggests that jvmArgs isn’t present on groovy.

Example:

...
test {
    jvmArgs '-agentpath:/usr/lib/code_dependency_capturer.so' // add line
    groovy {      
        srcDirs = ['src/test']
        ...
    }
    ...
}

This is just a guess as I don’t have a gradle setup handy on which to confirm but worth a try as jvmArgs is documented as a property for test:

https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html#org.gradle.api.tasks.testing.Test:jvmArgs

List<String> jvmArgs

The extra arguments to use to launch the JVM for the process. Does not include system properties and the minimum/maximum heap size.

Since jvmArgs is a list of String you can pass it multiple arguments, refer to:

http://docs.groovy-lang.org/next/html/documentation/working-with-collections.html#_list_literals

Example:

  jvmArgs ["-Xarg1", "-Xarg2"]

For "-Dprop=value" system properties use the systemProperties of the test task instead:

https://docs.gradle.org/current/dsl/org.gradle.api.tasks.testing.Test.html#org.gradle.api.tasks.testing.Test:systemProperties

like image 115
Drew MacInnis Avatar answered Nov 08 '22 10:11

Drew MacInnis