user489041
user489041

Reputation: 28294

Pass System Property to Application using Gradle and Netbeans

To run my application from the command line, I run:

java -Dconfig.file=./config/devApp.config -jar ./build/libs/myJar.jar

and inside my code, I have:

String configPath = System.getProperty("config.file");

Which gets the property just fine. However, when I try to debug using the built in debug Netbeans task, the property is null. The output of my run is:

Executing: gradle debug
Arguments: [-Dconfig.file=./config/devApp.config, -PmainClass=com.comp.entrypoints.Runner, -c, /home/me/Documents/projects/proj/settings.gradle]
JVM Arguments: [-Dconfig.file=./config/devApp.config]

Which is coming from:

enter image description here

I set it in both the arguments and JVM arguemtns to see if either would set it. Regardless of what I do, it is null. Can someone help me figure out how to set the system property so my app can get it?

Upvotes: 1

Views: 861

Answers (2)

Alo
Alo

Reputation: 3834

It seems that the "Arguments (each line is an argument):" and "JVM Arguments (each line is an argument):" fields provide values to the Gradle task itself. How I managed to pass properties over to the application was to append them to the jvmLineArgs argument (see image).

enter image description here

My application is now receiving the profiles property.

Thanks to @Vampire for the "guess work", lol!

Upvotes: 0

Vampire
Vampire

Reputation: 38639

You are setting the property on the Gradle JVM which has almost nothing to do with the JVM your application runs in. If you want to use Gradle to start your app for debugging, you have to tweak your Gradle build file to set or forward the system property to the debug task.

Assuming the debug task is of type JavaExec this would be something like

systemProperty 'config.file', System.properties.'config.file'

in the configuration of your debug task to forward what you set up in the "JVM Arguments" field in Netbeans.

Upvotes: 1

Related Questions