簡體   English   中英

執行任務時如何將變量寫入gradle屬性文件?

[英]how to write variables to gradle property file when you execute task?

我有一個這樣的案例。 我需要在每次使用 gradle 發布版本后保存當前日期。 有沒有可能將日期保存到 gradle.properties 文件中,我可以在下一個構建作業中讀取它?

我的文件:gradle.properties:

version=0.0.1
date=

構建.gradle:

task changeDate() {
    file = new File("changelogs/CHANGELOG_RELEASE_FROM_"+getDate()+".md");
    project.setProperty("date",getDate());
}

它起作用並且不會將日期變量保存到 gradle.properties 中。

所以我希望我可以在我的 gradle.properties 文件中有一個發布日期:

gradle.properties:

version=0.0.1
date=12.04.2019

方法getPropertyfindPropertysetPropertygradle.properties文件沒有直接關系。 相反,它們提供對Project實例范圍內屬性的訪問, build.gradle將根據該實例進行評估。 這個范圍包括許多不同的屬性,其中包括所謂的額外屬性(來自gradle.properties文件)。

但是,Gradle 為這個功能提供了一個名為WriteProperties的任務類型。 只需指定目標文件並定義一些屬性:

task changeDate(type: WriteProperties) {
    outputFile = file('gradle.properties')
    property 'date', getDate()
}

您可以嘗試執行以下操作:

import java.time.*;

task rel {
    doLast {
        ant.propertyfile(file: "gradle.properties") {
            entry( key: "date", value: LocalDateTime.now())
        }
    }
}

假設, rel是您的release任務或任何其他任務,執行意味着您發布了。 您必須在其配置中添加一個doLast閉包,以便在執行任務后運行一些代碼。 在此閉包中,您正在修改屬性文件中的某些屬性。

LocalDateTime和它的導入只是為了舉例,您可以使用另一種方法確定獲取當前日期。

在您的情況下,它可能看起來像:

task changeDate() {
    doLast {
        ant.propertyfile(file: "gradle.properties") {
            entry( key: "date", value: LocalDateTime.now())
        }
    }
}

但是你必須讓你的changeDate以某種方式執行,如果不是的話。

暫無
暫無

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

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