2015-08-08 5 views
1

Я определяю задачу градиента «launchIPad2Simulator», которая подклассифицирует еще одну заданную задачу «launchIPadSimulatorfrom» в плагине robovm gradle. Цель состоит в том, чтобы установить свойства проекта, которые определяют, какой имитатор будет работать.Задайте свойства проекта в задаче подкласса градации

// Run the IPad2 simulator 
task launchIPad2Simulator2(type: org.robovm.gradle.tasks.IPadSimulatorTask) { 

    project.setProperty("robovm.device.name", "iPad-2") 
    project.setProperty("robovm.arch", "x86") 
} 

Но проблема в том, что я должен сначала определить свойства в файле gradle.properties. Им даже не нужно назначать какую-либо ценность. Все содержимое файла gradle.properties:

robovm.device.name 
robovm.arch 

Я предпочел бы gradle.properties файл пуст, но если выше задача не будет затем запустить, ошибка: Ошибка: (112, 0) Нет такого имущества : robovm.device.name для класса: org.gradle.api.internal.project.DefaultProject_Decorated.

Также, если свойства заданы только в задаче следующим образом (gradle.properties пуст), они игнорируются.

// Run the IPad2 simulator 
task launchIPad2Simulator2(type: org.robovm.gradle.tasks.IPadSimulatorTask) { 

    project.properties.put("robovm.device.name", "iPad-2") 
    project.properties.put("robovm.arch", "x86") 
} 

Итак, каков правильный способ динамического задания свойств проекта в подклассовой задаче?

=== Редактирование ===

Хорошо, теперь я вижу, что установка свойства проекта тоже не хорошо, потому что в нескольких задач, которые он получает перезаписаны. Поэтому, возможно, это не должно быть свойств проекта на первом месте.

ТЕмп решение теперь с помощью командной строки вызова задач:

// simulator with properties launched from command line 
task launchIPad2Simulator1(type: Exec) { 
    commandLine 'gradle', '-Probovm.device.name=iPad-2', '-Probovm.arch=x86', 'launchIPadSimulator' 
} 

ответ

4

попробовать

task launchIPad2Simulator2(type: org.robovm.gradle.tasks.IPadSimulatorTask) { 
    project.ext."robovm.device.name" = "iPad-2" 
    project.ext."robovm.arch" = "x86" 
} 

это Gradle синтаксис для добавления динамических Properites к объекту проекта.

+0

Спасибо. С помощью этого синтаксиса я могу добавить свойства проекта динамически. Но теперь у меня проблема, когда я определяю несколько задач. Допустим, у меня есть launchIPad2Simulator, а затем я определяю еще один запускIPadAirSimulator. Свойства, установленные в последнем, также переопределяют для запуска симулятора iPad2. Вероятно, это связано с тем, что они определяются как свойства проекта. – RenatoIvancic

+0

было бы проще использовать, если IPadSimulatorTask позволяет напрямую устанавливать свойства непосредственно в задачу вместо использования свойств проекта. одним обходным решением для вас может быть установка свойства проекта в блок doFirst {}. Таким образом, свойства устанавливаются непосредственно перед использованием задачи. Это должно позволить вам запускать несколько экземпляров org.robovm.gradle.tasks.IPadSimulatorTask. Я предлагаю вам поднять вопрос для этой проблемы у ребёнов robovm. –

+0

Как вы уже сказали, IPadSimulatorTask должен позволять устанавливать свойства задачи. Я сделал вилку проекта гравюрного градиента и опробовал его, он работает так, как ожидалось. – RenatoIvancic

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