3

robovm gradle プラグインで、既に定義されている別のタスク「launchIPadSimulatorfrom」をサブクラス化する gradle タスク「launchIPad2Simulator」を定義しています。目標は、どのシミュレーターを実行するかを定義するプロジェクト プロパティを設定することです。

// 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 ファイルを空にしたいのですが、上記のタスクを実行すると、エラー: Error:(112, 0) No such property: robovm.device.name for class: 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

1 に答える 1

12

試す

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

これは、動的プロパティをプロジェクト オブジェクトに追加するための gradle 構文です。

于 2015-08-08T23:36:15.027 に答える