我在寫一個Gradle任務來爲我的可執行文件定義一個全局工件標記。此任務將創建一個C
文件,該文件稍後將打包到包含其他來源的可執行文件中。如何在groovy append函數中捕獲變量?
task genArtifactMarker{
project.ext.HASH = "git rev-parse --short HEAD".execute().text
project.ext.ARTIFACT_VERSION = "$PROJECT-$VERSION-$HASH"
def version_file = new File('version.c')
version_file.append('\n/* Automatically generated file for marker */')
version_file.append('\nconst volatile char marker[] __attribute__ ((section ("MARKER"))) = "${ARTIFACT_VERSION}";')
}
如何在append函數中捕獲ARTIFACT_VERSION
變量?我想在我生成的version.c
文件中使用MY_EXE-V2.1.2-47add78
代替ARTIFACT_VERSION
。
編輯:
添加代碼,以幫助進行調試的請求。
task genArtifactMarker{
doLast{
project.ext.HASH = "git rev-parse --short HEAD".execute().text
def ARTIFACT_VERSION = "$PROJECT-$VERSION-$HASH"
def version_file = new File('version.c')
version_file.append('\n/* Automatically generated file for marker */')
version_file << """\nconst volatile char marker[] __attribute__ ((section ("MARKER"))) = "${ARTIFACT_VERSION}";"""
}
}
我的輸出如下:
/* Automatically generated file for marker */
const volatile char marker[] __attribute__ ((section ("MARKER"))) = "RPI-V2.1.2_PO3-e75ee8d
";
我想我的輸出如下:
/* Automatically generated file for marker */
const volatile char marker[] __attribute__ ((section ("MARKER"))) = "RPI-V2.1.2_PO3-e75ee8d";
你正在做的gradle產出的配置階段的「工作」時,應在執行階段來完成。將你的邏輯封裝在一個'doLast {...}'關閉 –
注意點。謝謝。 –