所以,这是我的困境。我正在用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神器:https://mvnrepository.com/artifact/com.google.protobuf/protoc 明显提供了可执行文件,但我无法弄清楚如何告诉gradle下载并执行。我知道如何为javaexec
而不是非java可执行文件执行此操作。
我可以在这里使用一些魔法咒语吗?
我不得不改变这'命令行= [configurations.protoc.singleFile, “--proto_path” ,“$ {projectDir}/src/main/proto”..]' - 由于某种原因,你写下它的方式失败了(“Missing input file” - 看起来像protoc没有得到args)为什么,我很久以前就放弃了试图找出Gradle语法背后的逻辑,只是使用任何作品:) 否则,工作很棒!谢谢你的帮助! – Dima
嗯...我猜,我说得太快了:( 它对我来说是在当地工作的,但现在我在jenkins上得到了这个:'不能运行程序“/home/jenkins/.gradle/caches/modules-2/files -2.1/com.google.protobuf/protoc/2.6.1/49565269d355231128f9689f0cc050725bcea6fd/protoc-2.6.1-linux-x86_64.exe“:error = 13,Permission denied' 任何想法? – Dima
可能您应该设置可执行标志为这个文件在linux平台上:)尝试添加如下内容: 'doFirst {Runtime.runtime.exec(“chmod + x”+ configurations.protoc.singleFile)}'在任务部分 –