import org.apache.tools.ant.taskdefs.condition.Os subprojects { apply plugin: "checkstyle" apply plugin: "java" apply plugin: "maven" apply plugin: "idea" apply plugin: "signing" group = "io.grpc" version = "0.1.0-SNAPSHOT" sourceCompatibility = 1.6 targetCompatibility = 1.6 repositories { mavenCentral() mavenLocal() } [compileJava, compileTestJava].each() { it.options.compilerArgs += ["-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:-options"] it.options.encoding = "UTF-8" } javadoc.options.encoding = "UTF-8" ext { libraries = [ guava: 'com.google.guava:guava:18.0', // used to collect benchmark results hdrhistogram: 'org.hdrhistogram:HdrHistogram:2.1.4', hpack: 'com.twitter:hpack:0.10.1', javaee_api: 'javax:javaee-api:7.0', jsonp: 'org.glassfish:javax.json:1.0.4', jsr305: 'com.google.code.findbugs:jsr305:3.0.0', oauth_client: 'com.google.auth:google-auth-library-oauth2-http:0.1.0', okhttp: 'com.squareup.okhttp:okhttp:2.2.0', protobuf: 'com.google.protobuf:protobuf-java:3.0.0-alpha-2', protobuf_nano: 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-2', protobuf_plugin: 'ws.antonov.gradle.plugins:gradle-plugin-protobuf:0.9.1', // TODO: Unreleased dependencies. // These must already be installed in the local maven repository. netty: 'io.netty:netty-codec-http2:4.1.0.Beta5-SNAPSHOT', // Test dependencies. junit: 'junit:junit:4.11', mockito: 'org.mockito:mockito-core:1.10.19' ] // Determine the correct version of Jetty ALPN boot to use based // on the Java version. def alpnboot_version = '8.1.2.v20141202' if (JavaVersion.current().ordinal() < JavaVersion.VERSION_1_8.ordinal()) { alpnboot_version = '7.1.2.v20141202' } alpnboot_package_name = 'org.mortbay.jetty.alpn:alpn-boot:' + alpnboot_version def exeSuffix = Os.isFamily(Os.FAMILY_WINDOWS) ? ".exe" : "" // The split is to workaround everything after the colon in C:\ being // removed due to a bug in the protobuf plugin. // https://github.com/aantono/gradle-plugin-protobuf/issues/23 def splitRootDir = rootDir if (Os.isFamily(Os.FAMILY_WINDOWS)) { splitRootDir = splitRootDir.getPath().split(":", 2)[1] } protocPluginBaseName = 'protoc-gen-grpc-java' javaPluginPath = "$splitRootDir/compiler/build/binaries/java_pluginExecutable/$protocPluginBaseName$exeSuffix" } dependencies { testCompile libraries.junit, libraries.mockito } signing { required false sign configurations.archives } // Disable JavaDoc doclint on Java 8. It's annoying. if (JavaVersion.current().isJava8Compatible()) { allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') } } } checkstyle { configFile = file("$rootDir/checkstyle.xml") toolVersion = "6.5" ignoreFailures = true if (rootProject.hasProperty("checkstyle.ignoreFailures")) { ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean() } } checkstyleMain { source = fileTree(dir: "src", include: "**/*.java", excludes: ["${buildDir}/generated-sources", "**/TestServiceGrpc.java"]) } checkstyleTest { source = fileTree(dir: "test", include: "**/*.java", exclude: "${buildDir}/generated-sources") } task javadocJar(type: Jar) { classifier = 'javadoc' from javadoc } task sourcesJar(type: Jar) { classifier = 'sources' from sourceSets.main.allSource } artifacts { archives javadocJar, sourcesJar } uploadArchives.repositories.mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { if (rootProject.hasProperty("ossrhUsername") && rootProject.hasProperty("ossrhPassword")) { authentication(userName: ossrhUsername, password: ossrhPassword) } } snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { if (rootProject.hasProperty("ossrhUsername") && rootProject.hasProperty("ossrhPassword")) { authentication(userName: ossrhUsername, password: ossrhPassword) } } } [ install.repositories.mavenInstaller, uploadArchives.repositories.mavenDeployer, ]*.pom*.whenConfigured { pom -> pom.project { name "$project.group:$project.name" description project.description url 'https://github.com/grpc/grpc-java' scm { connection 'scm:svn:https://github.com/grpc/grpc-java.git' developerConnection 'scm:svn:git@github.com:grpc/grpc-java.git' url 'https://github.com/grpc/grpc-java' } licenses { license { name 'BSD 3-Clause' url 'http://opensource.org/licenses/BSD-3-Clause' } } developers { developer { id "grpc.io" name "gRPC Contributors" email "grpc-io@googlegroups.com" url "http://grpc.io/" // https://issues.gradle.org/browse/GRADLE-2719 organization = "Google, Inc." organizationUrl "https://www.google.com" } } } } }