Я определяю задачу градиента «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'
}
Спасибо. С помощью этого синтаксиса я могу добавить свойства проекта динамически. Но теперь у меня проблема, когда я определяю несколько задач. Допустим, у меня есть launchIPad2Simulator, а затем я определяю еще один запускIPadAirSimulator. Свойства, установленные в последнем, также переопределяют для запуска симулятора iPad2. Вероятно, это связано с тем, что они определяются как свойства проекта. – RenatoIvancic
было бы проще использовать, если IPadSimulatorTask позволяет напрямую устанавливать свойства непосредственно в задачу вместо использования свойств проекта. одним обходным решением для вас может быть установка свойства проекта в блок doFirst {}. Таким образом, свойства устанавливаются непосредственно перед использованием задачи. Это должно позволить вам запускать несколько экземпляров org.robovm.gradle.tasks.IPadSimulatorTask. Я предлагаю вам поднять вопрос для этой проблемы у ребёнов robovm. –
Как вы уже сказали, IPadSimulatorTask должен позволять устанавливать свойства задачи. Я сделал вилку проекта гравюрного градиента и опробовал его, он работает так, как ожидалось. – RenatoIvancic