使用Gradle和Netbeans将系统属性传递给应用程序

时间:2016-08-19 15:05:00

标签: java netbeans gradle

要从命令行运行我的应用程序,我运行:

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

在我的代码中,我有:

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

哪个物业得到了解决。但是,当我尝试使用内置的调试Netbeans任务进行调试时,该属性为null。我的运行输出是:

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]

来自哪个:

enter image description here

我在参数和JVM arguemtns中设置它以查看是否要设置它。无论我做什么,它都是空的。有人可以帮我弄清楚如何设置系统属性,以便我的应用可以获得它吗?

2 个答案:

答案 0 :(得分:1)

您正在Gradle JVM上设置该属性,该属性几乎与运行应用程序的JVM无关。如果您想使用Gradle启动应用程序进行调试,则必须调整Gradle构建文件以进行设置或将系统属性转发给debug任务。

假设debug任务的类型为JavaExec,则类似

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

debug任务的配置中,以转发您在" JVM Arguments"中设置的内容。 Netbeans的领域。

答案 1 :(得分:0)

似乎“ Arguments(每行是一个参数):”和“ JVM Arguments(每行是一个参数):”字段为Gradle任务本身提供了值。我设法将属性传递给应用程序的方法是将它们附加到jvmLineArgs参数中(参见图片)。

enter image description here

我的应用程序现在正在接收profiles属性。

感谢@Vampire的“猜测工作”,大声笑!