2017-01-13 11 views
0

У меня возникли трудности с передачей аргументов JVM в NetBeans моему проекту Gradle. Мои предыдущие попытки не увенчались успехом, и кто-то может мне помочь.JVM Аргументы в NetBeans с градиентом

Вот что я пробовал до сих пор: Я добавляю аргумент 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. Я также попытался использовать пользовательские задачи с тем же эффектом.

Если я создаю файл фляги и передать аргументы все работает, как ожидалось:

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

System.getProperty('test') результаты в mytestvalue.

Мое текущее обходное решение - установить аргументы JVM в файле build.gradle, который отлично работает, но я хочу избавиться от записи аргументов непосредственно в этот файл.

Я использую Gradle 3.3 и NetBeans 8.2

ответ

0

Благодаря @MarvinFrommhold и его сообщение https://stackoverflow.com/a/26141841/7220665 я, наконец, нашел то, что хотел.

я просто должен был расширить задачу запустить с

run { 
    systemProperties = System.properties 
} 

и мои аргументы передаются через мое приложение, где я могу его использовать.

UPDATE

подход выше работ, как задумано, но если вы не хотите, чтобы делегировать все свойства, которые вы можете указать те, которые вам нужны.Например, вы хотите установить 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"] 
} 
+0

Ваше решение не работает для меня. Не удалось найти метод run() для аргументов [build_28bus5y71kwmo5sgwcrxdkkvy $ _run_closure5 @ 37d70d88] в корневом проекте – user1278890

+0

hm, можете ли вы разместить свой build.gradle и описать шаги, которые вы сделали? –

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 
+2

Это верно для проектов Maven, но, к сожалению, не для Gradle. Диалог выглядит совершенно иначе –

0

Существует разница между передачей свойство Gradle построить и передать его в приложение. Вы уже знаете, что вы можете установить свойство в своем 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

 Смежные вопросы

  • Нет связанных вопросов^_^