提问者:小点点

使用gradle的NetBeans中的JVM参数


我很难将NetBeans中的JVM参数传递给我的Gradle项目。我以前的尝试没有成功,也许有人可以帮助我。

以下是我到目前为止所做的尝试:我通过右击项目来添加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

因此,这些参数显示在< code > JVM Arguments:[-Dtest = mytest value]中,但似乎没有传输到应用程序,并且< code > system . getproperty(' test ')导致< code>null。我还尝试使用具有相同效果的自定义任务。

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

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

< code > system . getproperty(' test ')会产生< code>mytestvalue。

我目前的解决方法是在build.gradle文件中设置JVM参数,这很好,但是我想避免将参数直接写入该文件。

我正在使用Gradle 3.3和NetBeans 8.2


共3个答案

匿名用户

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

我只需要用扩展运行任务

run {
    systemProperties = System.properties
}

并且我的参数被传递到我的应用程序,在那里我可以使用它。

更新

上述方法按预期工作,但如果您不想委托所有财产,则可以指定所需的属性。例如,您希望设置<code>mytestvalue</code>

您通过NetBeans传递

-Dtest=mytestvalue

在< code>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"]
}

匿名用户

将属性传递给gradle构建和传递给应用程序之间有区别。您已经知道可以在build.gradle中设置属性(如https://docs.gradle.org/current/userguide/application_plugin.html). 您可以做的是将属性传递给Gradle,并在构建文件中查找它,然后将其进一步传递给启动的应用程序。BTW:执行此操作时,可以将系统属性(-D)或项目属性(-P)传递给Gradle,如中所述https://docs.gradle.org/current/userguide/build_environment.html#properties

匿名用户

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

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

-Dtest=testing