2017-08-07 3 views
0

プロトコルバッファ(gRPC)を使用して3つのJavaアプリケーション(バックエンド、フロントエンド、およびAndroidアプリケーション)を通信したいと考えています。だから、3つのアプリケーションすべてが.protoファイルを管理する共有protobufリポジトリ(Github)にアクセスできるようにしたいと思います。私はGradleとprotobufsを初めて使用しているので、これを管理する適切な方法が何であるか分かりません。また、何か助けや指導をいただければ幸いです。各Gradleプロジェクトでgithub protobuf repoを依存関係として宣言してからプロジェクトをビルドするときにコンパイルすることはできますか? Androidアプリではprotobufsの「Java-Lite」の別のバージョンが必要なので、コンパイルされたprotobufクラスを格納するのではなく、この方法で行うのが良い方法だと思いますか?私はgoogle/protobuf-gradle-pluginを使用して.protoファイルをコンパイルし、ローカルファイルからコンパイルするためのドキュメントを参照するか、プリプロコンパイルされた.protoファイルを持つプロジェクトをプルするが、リモートの.protoファイルをプルするためのドキュメントはない。正しい軌道にいるのですか?共有プロトコルバッファライブラリの管理とGradleを使用したコンパイル

答えて

0

リモートの.protoファイル/リポジトリはどのような形式ですか?単なるURLの場合は、タスクをダウンロードしてください:

buildscript { 
    repositories { 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0' 
    } 
} 

plugins { 
    id "de.undercouch.download" version "3.2.0" 
} 

group 'testtest' 
version '1.0-SNAPSHOT' 

apply plugin: 'java' 
apply plugin: 'com.google.protobuf' 


sourceCompatibility = 1.8 

repositories { 
    mavenCentral() 
} 

task downloadFile << { 
    download { 
     src 'https://raw.githubusercontent.com/grpc/grpc-java/master/compiler/src/test/proto/test.proto' 
     dest "$projectDir/src/main/proto/test.proto" 
     overwrite true 
    } 
} 

build.dependsOn downloadFile 

dependencies { 
    compile "io.grpc:grpc-protobuf-lite:1.5.0" 
    compile "io.grpc:grpc-stub:1.5.0" 
} 

protobuf { 
    protoc { 
     artifact = 'com.google.protobuf:protoc:3.3.0' 
    } 
    plugins { 
     javalite { 
      artifact = "com.google.protobuf:protoc-gen-javalite:3.0.0" 
     } 
     grpc { 
      artifact = "io.grpc:protoc-gen-grpc-java:1.5.0" 
     } 
    } 
    generateProtoTasks { 
     all().each { task -> 
      task.builtins { 
       remove java 
      } 
      task.plugins { 
       javalite {} 
       grpc { 
        option 'lite' 
       } 
      } 
     } 
    } 
} 
関連する問題