所以,这是我的困境。我正在使用 gradle 进行构建,需要生成一些 protobuf 类。我知道有一个插件可以做到这一点,但它只适用于 gradle 2.12+,这使得我的构建速度比我正在使用的(2.8)慢两倍以上,所以我不想升级。
我做了一个这样的任务:
task protoc << {
exec {
commandLine = ['protoc', "--proto_path", "${projectDir}/src/main/proto", "--java_out", "src/gen/main/java"] + protoFiles
}
}
它可以工作......但现在我必须告诉每个想要构建的人首先安装protoc
。
这里有一个maven Artifact :https://mvnrepository.com/artifact/com.google.protobuf/protoc
这显然提供了可执行文件,但我不知道如何告诉 gradle 下载它然后执行。我知道如何为 javaexec
执行此操作,但不知道如何为非 java 可执行文件执行此操作。
我可以在这里使用一些魔法咒语吗?
最佳答案
我认为它应该有效:
plugins {
id "com.google.osdetector" version "1.3.1"
}
repositories {
jcenter()
}
configurations {
protoc
}
dependencies {
protoc "com.google.protobuf:protoc:3.1.0:${osdetector.classifier}@exe"
}
task executeProtoc(type: Exec) {
executable configurations.protoc.singleFile
args "--proto_path", "${projectDir}/src/main/proto"
args "--java_out", "src/gen/main/java"
args protoFiles
}
关于java - 有没有办法获得 `Exec` 依赖工件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273675/