blob: 4e497486e335c619dd1c1d3acd48f383c67ddbcb [file] [log] [blame]
Kun Zhang4bc2d6d2015-04-17 10:49:11 -07001buildscript {
2 repositories {
3 mavenCentral()
4 mavenLocal()
5 }
6 dependencies {
7 classpath 'com.google.gradle:osdetector-gradle-plugin:1.2.1'
8 }
9}
Eric Andersonb938ba52015-02-28 09:59:25 -080010
nathanmittler164b7342014-12-15 09:58:05 -080011subprojects {
Eric Andersonc3e8dae2015-01-30 14:58:07 -080012 apply plugin: "checkstyle"
nathanmittler164b7342014-12-15 09:58:05 -080013 apply plugin: "java"
14 apply plugin: "maven"
nmittler52f42202015-01-21 14:30:14 -080015 apply plugin: "idea"
Kun Zhang4bc2d6d2015-04-17 10:49:11 -070016 apply plugin: "osdetector"
Eric Anderson192144e2015-03-02 13:31:14 -080017 apply plugin: "signing"
nathanmittler164b7342014-12-15 09:58:05 -080018
nmittlerf8314582015-01-27 10:25:39 -080019 group = "io.grpc"
nathanmittler164b7342014-12-15 09:58:05 -080020 version = "0.1.0-SNAPSHOT"
21
22 sourceCompatibility = 1.6
23 targetCompatibility = 1.6
24
25 repositories {
26 mavenCentral()
27 mavenLocal()
28 }
29
Eric Anderson76d09552015-03-12 15:25:11 -070030 [compileJava, compileTestJava].each() {
31 it.options.compilerArgs += ["-Xlint:unchecked", "-Xlint:deprecation", "-Xlint:-options"]
32 it.options.encoding = "UTF-8"
nmittler02c953e2015-01-26 14:03:11 -080033 }
34
Eric Anderson14444a92015-03-11 16:44:38 -070035 javadoc.options.encoding = "UTF-8"
36
Jakob Buchgraber7ddcdfd2015-02-13 16:21:53 -080037 ext {
38 libraries = [
Jakob Buchgraber7ddcdfd2015-02-13 16:21:53 -080039 guava: 'com.google.guava:guava:18.0',
Jakob Buchgraber7ddcdfd2015-02-13 16:21:53 -080040 // used to collect benchmark results
41 hdrhistogram: 'org.hdrhistogram:HdrHistogram:2.1.4',
Jeff Pinnerb1cc7cc2015-02-25 10:17:23 -080042 hpack: 'com.twitter:hpack:0.10.1',
nmittlerb897a892015-02-23 12:03:59 -080043 javaee_api: 'javax:javaee-api:7.0',
44 jsonp: 'org.glassfish:javax.json:1.0.4',
45 jsr305: 'com.google.code.findbugs:jsr305:3.0.0',
Louis Ryan767a12c2015-03-02 15:05:09 -080046 oauth_client: 'com.google.auth:google-auth-library-oauth2-http:0.1.0',
nmittlerb897a892015-02-23 12:03:59 -080047 okhttp: 'com.squareup.okhttp:okhttp:2.2.0',
Eric Andersona6f5fff2015-02-26 07:53:17 -080048 protobuf: 'com.google.protobuf:protobuf-java:3.0.0-alpha-2',
49 protobuf_nano: 'com.google.protobuf.nano:protobuf-javanano:3.0.0-alpha-2',
nmittlerb897a892015-02-23 12:03:59 -080050 protobuf_plugin: 'ws.antonov.gradle.plugins:gradle-plugin-protobuf:0.9.1',
nathanmittler164b7342014-12-15 09:58:05 -080051
Jakob Buchgraber7ddcdfd2015-02-13 16:21:53 -080052 // TODO: Unreleased dependencies.
53 // These must already be installed in the local maven repository.
nmittler2a425092015-03-11 12:15:30 -070054 netty: 'io.netty:netty-codec-http2:4.1.0.Beta5-SNAPSHOT',
nathanmittler164b7342014-12-15 09:58:05 -080055
Jakob Buchgraber7ddcdfd2015-02-13 16:21:53 -080056 // Test dependencies.
57 junit: 'junit:junit:4.11',
Eric Anderson192144e2015-03-02 13:31:14 -080058 mockito: 'org.mockito:mockito-core:1.10.19'
Jakob Buchgraber7ddcdfd2015-02-13 16:21:53 -080059 ]
60
61 // Determine the correct version of Jetty ALPN boot to use based
62 // on the Java version.
63 def alpnboot_version = '8.1.2.v20141202'
64 if (JavaVersion.current().ordinal() < JavaVersion.VERSION_1_8.ordinal()) {
65 alpnboot_version = '7.1.2.v20141202'
66 }
67
68 alpnboot_package_name = 'org.mortbay.jetty.alpn:alpn-boot:' + alpnboot_version
Eric Andersonb938ba52015-02-28 09:59:25 -080069
Kun Zhang4bc2d6d2015-04-17 10:49:11 -070070 def exeSuffix = osdetector.os == 'windows' ? ".exe" : ""
Eric Andersonb938ba52015-02-28 09:59:25 -080071 // The split is to workaround everything after the colon in C:\ being
72 // removed due to a bug in the protobuf plugin.
73 // https://github.com/aantono/gradle-plugin-protobuf/issues/23
74 def splitRootDir = rootDir
Kun Zhang4bc2d6d2015-04-17 10:49:11 -070075 if (osdetector.os == 'windows') {
Eric Andersonb938ba52015-02-28 09:59:25 -080076 splitRootDir = splitRootDir.getPath().split(":", 2)[1]
77 }
Kun Zhang90706dc2015-04-09 13:11:31 -070078 protocPluginBaseName = 'protoc-gen-grpc-java'
zhangkun83da3c3f82015-03-11 18:03:31 -070079 javaPluginPath = "$splitRootDir/compiler/build/binaries/java_pluginExecutable/local_arch/$protocPluginBaseName$exeSuffix"
Jakob Buchgraber7ddcdfd2015-02-13 16:21:53 -080080 }
nathanmittler164b7342014-12-15 09:58:05 -080081
82 dependencies {
83 testCompile libraries.junit,
84 libraries.mockito
85 }
Eric Anderson192144e2015-03-02 13:31:14 -080086
87 signing {
88 required false
89 sign configurations.archives
90 }
91
nmittler732cfc02015-03-03 07:59:13 -080092 // Disable JavaDoc doclint on Java 8. It's annoying.
93 if (JavaVersion.current().isJava8Compatible()) {
94 allprojects {
95 tasks.withType(Javadoc) {
96 options.addStringOption('Xdoclint:none', '-quiet')
97 }
98 }
99 }
100
Eric Andersonc3e8dae2015-01-30 14:58:07 -0800101 checkstyle {
102 configFile = file("$rootDir/checkstyle.xml")
Xudong Ma9aae6f62015-04-06 21:04:56 +0800103 toolVersion = "6.5"
Eric Anderson26141b42015-03-21 10:59:17 -0700104 ignoreFailures = true
105 if (rootProject.hasProperty("checkstyle.ignoreFailures")) {
106 ignoreFailures = rootProject.properties["checkstyle.ignoreFailures"].toBoolean()
107 }
Eric Andersonc3e8dae2015-01-30 14:58:07 -0800108 }
109
110 checkstyleMain {
111 source = fileTree(dir: "src", include: "**/*.java",
112 excludes: ["${buildDir}/generated-sources", "**/TestServiceGrpc.java"])
113 }
114
115 checkstyleTest {
116 source = fileTree(dir: "test", include: "**/*.java",
117 exclude: "${buildDir}/generated-sources")
118 }
119
Eric Anderson192144e2015-03-02 13:31:14 -0800120 task javadocJar(type: Jar) {
121 classifier = 'javadoc'
122 from javadoc
123 }
124
125 task sourcesJar(type: Jar) {
126 classifier = 'sources'
127 from sourceSets.main.allSource
128 }
129
130 artifacts {
131 archives javadocJar, sourcesJar
132 }
133
134 uploadArchives.repositories.mavenDeployer {
135 beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
zhangkun83da3c3f82015-03-11 18:03:31 -0700136 String stagingUrl
137 if (System.getProperty('repositoryId')) {
138 stagingUrl = 'https://oss.sonatype.org/service/local/staging/deployByRepositoryId/' + System.getProperty('repositoryId')
139 } else {
140 stagingUrl = 'https://oss.sonatype.org/service/local/staging/deploy/maven2/'
141 }
142 repository(url: stagingUrl) {
Eric Anderson192144e2015-03-02 13:31:14 -0800143 if (rootProject.hasProperty("ossrhUsername")
144 && rootProject.hasProperty("ossrhPassword")) {
145 authentication(userName: ossrhUsername, password: ossrhPassword)
146 }
147 }
148
149 snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") {
150 if (rootProject.hasProperty("ossrhUsername")
151 && rootProject.hasProperty("ossrhPassword")) {
152 authentication(userName: ossrhUsername, password: ossrhPassword)
153 }
154 }
155 }
156
157 [
158 install.repositories.mavenInstaller,
159 uploadArchives.repositories.mavenDeployer,
160 ]*.pom*.whenConfigured { pom ->
161 pom.project {
Eric Anderson7e8a02c2015-03-12 17:03:01 -0700162 name "$project.group:$project.name"
Eric Anderson192144e2015-03-02 13:31:14 -0800163 description project.description
164 url 'https://github.com/grpc/grpc-java'
165
166 scm {
167 connection 'scm:svn:https://github.com/grpc/grpc-java.git'
168 developerConnection 'scm:svn:git@github.com:grpc/grpc-java.git'
169 url 'https://github.com/grpc/grpc-java'
170 }
171
172 licenses {
173 license {
174 name 'BSD 3-Clause'
175 url 'http://opensource.org/licenses/BSD-3-Clause'
176 }
177 }
Eric Anderson7e8a02c2015-03-12 17:03:01 -0700178
179 developers {
180 developer {
181 id "grpc.io"
182 name "gRPC Contributors"
183 email "grpc-io@googlegroups.com"
184 url "http://grpc.io/"
185 // https://issues.gradle.org/browse/GRADLE-2719
186 organization = "Google, Inc."
187 organizationUrl "https://www.google.com"
188 }
189 }
Eric Anderson192144e2015-03-02 13:31:14 -0800190 }
191 }
nathanmittler164b7342014-12-15 09:58:05 -0800192}