所以,這是我的困境。我正在用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)}'在任務部分 –