2017-08-07 5 views
0

Je souhaite disposer de 3 applications Java (un backend, un frontal et une application Android) à l'aide de tampons de protocole (gRPC) pour communiquer. Je voudrais donc que les 3 applications puissent toutes avoir accès à un repo protobuf partagé (Github) où je gère les fichiers .proto. Je suis novice dans l'utilisation de Gradle et protobufs, donc je ne suis pas sûr de la façon de gérer cela, et toute aide ou conseil serait apprécié. Puis-je demander à chaque projet Gradle de déclarer mon dépôt github protobuf en tant que dépendance, puis de le retirer et de le compiler lors de la construction du projet? Je suppose que ce serait un bon moyen de le faire, plutôt que de stocker les classes protobuf compilées, puisque l'application Android pourrait avoir besoin d'une version différente de la protobufs "Java-lite"? J'utilise google/protobuf-gradle-plugin pour compiler les fichiers .proto, et voir la documentation pour la compilation à partir de fichiers locaux, ou en tirant dans des projets qui ont des fichiers .proto précompilés, mais aucune documentation pour extraire des fichiers .proto distants. Suis-je sur la bonne voie?Gestion de la bibliothèque Shared Protocol Buffer et utilisation de Gradle to Compile

Répondre

0

Sous quelle forme est votre fichier .proto distant/repo? Si c'est juste une url, alors vous pouvez utiliser Télécharger Tâche:

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' 
       } 
      } 
     } 
    } 
}