Gradle plugin for using Google Protocol Buffers in your Gradle project.
build.gradle
// Apply the plugin
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.tomcawley:gradle-protobuf-plugin:0.2'
}
}
apply plugin: 'gradleProtobufPlugin'
// Point to your protobuf library for compilation of the generated files
dependencies {
compile "com.google.protobuf:protobuf-java:2.4.1"
}
// And finally the important stuff
protoBuf {
protoc {
'Mac OS X' {
path = "/Users/user/Downloads/protobuf-2.4.1/src/protoc"
}
}
// Optional, defaults to 'src/main/proto'
sourceSets {
proto {
srcDir = 'src/main/proto'
}
}
lang {
java {
genDir = 'src/main/java'
}
cpp {
genDir = 'src/main/c++'
}
}
}
Programming languages supported:
-
Java
lang { java }
Compiles the .proto files into .java files (output to lang.java.genDir).
Implies:
apply plugin: 'java' compileJava.dependsOn compileProto clean.dependsOn cleanProto
-
C++
lang { cpp }
.proto generation only at this time.
-
Python
lang { python }
.proto generation only at this time.
- compileProto - Compiles the .proto files found in protoBuf.sourceSets.proto.srcDir for each programming language specified.
- cleanProto - Deletes the generated files for each programming language compiled.
-
protoc { ... }
Platform dependent. Specify the name of your platform as determined by Java's System.getProperty("os.name");
path specifies the path to the protoc executable for your platform.
Examples:
protoc {
'Mac OS X' {
path = '/path/to/protoc'
}
'Windows 7' {
path = 'C:\\Path\\To\\protoc.exe'
}
`Windows XP' {
path = 'C:\\Path\\To\\protoc.exe'
}
}
-
sourceSets { ... }
Optional; if unspecified configures proto.srcDir=src/main/proto
// Override sourceSets { proto { srcDir = '/where/you/want' } }
Supports only local files. Remote folders coming soon (e.g., http://your/protos).
-
lang { ... }
Configures the programming language(s) you want your
.proto
files compiled to. The default genDir is src/main/$name, where $name is the name of the programming language (e.g., java, cpp, python).// Override lang { java { genDir = 'src' } }
Defaults:
lang { java // Defaults genDir to 'src/main/java' cpp // Defaults genDir to 'src/main/cpp' python // Defaults genDir to 'src/main/python' }