从 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