Add Sonatype OSSRH upload support, with nice POMs

Mockito was upgraded to latest to solve JavaDoc issue with
ArgumentsAreDifferent.

We don't yet publish any artifacts for grpc-compiler.
diff --git a/build.gradle b/build.gradle
index cf0914e..079d0db 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,6 +4,7 @@
     apply plugin: "java"
     apply plugin: "maven"
     apply plugin: "idea"
+    apply plugin: "signing"
 
     group = "io.grpc"
     version = "0.1.0-SNAPSHOT"
@@ -42,7 +43,7 @@
 
                 // Test dependencies.
                 junit: 'junit:junit:4.11',
-                mockito: 'org.mockito:mockito-core:1.10.8'
+                mockito: 'org.mockito:mockito-core:1.10.19'
         ]
 
         // Determine the correct version of Jetty ALPN boot to use based
@@ -69,4 +70,64 @@
         testCompile libraries.junit,
                     libraries.mockito
     }
+
+    signing {
+        required false
+        sign configurations.archives
+    }
+
+    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 {
+            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'
+                }
+            }
+        }
+    }
 }