NetBeans中的JVM参数与gradle

时间:2017-01-13 10:06:18

标签: java gradle jvm netbeans-8

我在将NetBeans中的JVM参数传递给Gradle项目时遇到了困难。我之前的尝试没有成功,也许有人可以帮助我。

这是我到目前为止所尝试的内容: 我通过右键单击项目添加JVM参数 - >属性 - >构建任务 - >运行 - >将JVM值放在指定的字段中

-Dtest=mytestvalue

(不幸的是,我的声誉不足以添加嵌入式图像) 当我之后通过右键单击运行项目并运行它时显示:

Executing: gradle :run
Arguments: [-PcmdLineArgs=, -c, D:\NetBeansProjects\app\settings.gradle]
JVM Arguments: [-Dtest=mytestvalue]

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:run

10:54:55.899 [main] System.getProperty('test') null

因此,参数显示在JVM Arguments: [-Dtest=mytestvalue]中,但未转移到它看起来的应用程序,而System.getProperty('test')会导致null。我也尝试使用具有相同效果的自定义任务。

如果我创建一个jar文件并传递参数,一切都按预期工作:

λ java -Dtest=mytestvalue -jar app.jar
System.getProperty('test') mytestvalue

System.getProperty('test')会产生mytestvalue

我目前的解决方法是在build.gradle文件中设置JVM参数,该文件工作正常,但我想摆脱将参数直接写入该文件。

我正在使用Gradle 3.3和NetBeans 8.2

3 个答案:

答案 0 :(得分:0)

 You can right click on the project, and select Properties.

 Click on Run category and insert you configuration in VM Options(not JVM).

VM-argument

-Dtest=testing

答案 1 :(得分:0)

将属性传递给gradle构建并将其传递给应用程序之间存在差异。您已经知道可以在build.gradle中设置该属性(https://docs.gradle.org/current/userguide/application_plugin.html中对此进行了描述)。您可以做的是将属性传递给Gradle,并在内部构建文件中查找它并将其进一步传递给您启动的应用程序。 顺便说一句:执行此操作时,您可以将系统属性(-D)或项目属性(-P)传递给Gradle,如https://docs.gradle.org/current/userguide/build_environment.html#properties中所述

答案 2 :(得分:0)

感谢@MarvinFrommhold和他的帖子https://stackoverflow.com/a/26141841/7220665我终于找到了我想要的东西。

我只需要用

扩展运行任务
run {
    systemProperties = System.properties
}

我的论据会传递到我可以使用它的应用程序。

<强>更新

上述方法按预期工作,但如果您不想委派所有属性,则可以指定所需的属性。例如,您要设置mytestvalue

您通过NetBeans传递

-Dtest=mytestvalue

并在build.gradle

run {
    // delegate the property 'mytestvalue' to the jvm 
    systemProperty "mytestvalue", System.getProperty("mytestvalue")

    // confirm that the property has been delegated
    println "mytestvalue: " + systemProperties["mytestvalue"]
}