從 gradle 執行 shell 指令碼

shell 指令碼是一種非常通用的方法,可以將你的構建擴充套件到你能想到的任何內容。

作為一個例子,這裡有一個簡單的指令碼來編譯 protobuf 檔案並將結果 java 檔案新增到源目錄以進行進一步編譯:

def compilePb() {
    exec {
        // NOTICE: gradle will fail if there's an error in the protoc file...
        executable "../pbScript.sh"
    }
}

project.afterEvaluate {
    compilePb()
}

此示例的’pbScript.sh’shell 指令碼位於專案的根資料夾中:

#!/usr/bin/env bash
pp=/home/myself/my/proto

/usr/local/bin/protoc -I=$pp \
 --java_out=./src/main/java \
  --proto_path=$pp \
 $pp/my.proto \
 --proto_path=$pp \
 $pp/my_other.proto