我很努力的讓一個任務只在定義特定值時執行。只在定義的屬性上執行Gradle運行任務
我正在使用Gradle 3.5。
task signJar(type: SignJar, dependsOn: reobfJar) {
onlyIf {
project.hasProperty('mod_keystore')
}
keyStore = project.keyStore
alias = project.keyStoreAlias
storePass = project.keyStorePass
keyPass = project.keyStoreKeyPass
inputFile = jar.archivePath
outputFile = jar.archivePath
}
正如你所看到的,我已經嘗試了唯一的If語句,但任務仍在運行。這導致到崩潰:
Could not get unknown property 'keyStore' for root project 'JustAnotherEnergy' of type org.gradle.api.Project.
屬性「mod_keystore」是沒有定義的地方,但代碼獲取的執行。
task signJar(type: SignJar, dependsOn: reobfJar) {
if(project.hasProperty('mod_keystore')) {
keyStore = project.keyStore
alias = project.keyStoreAlias
storePass = project.keyStorePass
keyPass = project.keyStoreKeyPass
inputFile = jar.archivePath
outputFile = jar.archivePath
}
}
This works。代碼沒有得到執行,但我遇到了其他問題: 如果未定義屬性'mod_keystore',Gradle無法爲例如'keyStore'屬性設置值,但任務SignJar要求設置這個值。
這意味着只有在定義屬性'mod_keystore'時才應執行此任務。如果未定義,則應該跳過該任務。