【问题标题】:JVM Arguments in NetBeans with gradle带有 gradle 的 NetBeans 中的 JVM 参数
【发布时间】:2017-01-13 10:06:17
【问题描述】:

我在将 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

【问题讨论】:

    标签: java gradle jvm netbeans-8


    【解决方案1】:

    感谢@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"]
    }
    

    【讨论】:

    • 您的解决方案对我不起作用。在根项目上找不到参数 [build_28bus5y71kwmo5sgwcrxdkkvy$_run_closure5@37d70d88] 的方法 run()
    • hm,你能发布你的 build.gradle 并描述你所做的步骤吗?
    【解决方案2】:

    将属性传递给 gradle build 和将其传递给您的应用程序是有区别的。您已经知道可以在build.gradle 中设置属性(在https://docs.gradle.org/current/userguide/application_plugin.html 中有描述)。您可以做的是将一个属性传递给 Gradle,然后在 buildfile 中查找它并将其进一步传递给您启动的应用程序。 顺便说一句:这样做时,您可以将系统属性 (-D) 或项目属性 (-P) 传递给 Gradle,如 https://docs.gradle.org/current/userguide/build_environment.html#properties

    中所述

    【讨论】:

      【解决方案3】:
       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
      

      【讨论】:

      • 这对于 Maven 项目是正确的,但不幸的是对于 Gradle 不是。对话框看起来完全不同
      猜你喜欢
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 2018-03-03
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多