簡體   English   中英

在子類gradle任務中設置項目屬性

[英]Set the project properties in subclassed gradle task

我正在定義一個gradle任務“launchIPad2Simulator”,它在robovm gradle插件中繼承了另一個已經定義的任務“launchIPadSimulatorfrom”。 目標是設置定義哪個模擬器將運行的項目屬性。

// 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 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'
}

嘗試

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

這是向項目對象添加動態屬性的gradle語法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM