diff --git a/library/build.gradle b/library/build.gradle
index 91f0a31..effe7c8 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -1,55 +1,9 @@
 apply plugin: 'android-library'
-apply plugin: 'maven'
-apply plugin: 'signing'
 
 group = 'com.davemorrissey.labs'
 archivesBaseName = 'subsampling-scale-image-view'
 version = '3.6.0'
 
-signing {
-    required { has("release") && gradle.taskGraph.hasTask("uploadArchives") }
-    sign configurations.archives
-}
-
-uploadArchives {
-    configuration = configurations.archives
-    repositories.mavenDeployer {
-        beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
-
-        repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
-            authentication(userName: sonatypeUsername, password: sonatypePassword)
-        }
-
-        pom.project {
-            name 'SubsamplingScaleImageView'
-            packaging 'aar'
-            description 'Custom image views for Android with pinch to zoom, panning, rotation and animation support, with easy extension so you can add your own overlays and touch event detection.'
-            url 'https://github.com/davemorrissey/subsampling-scale-image-view'
-
-            scm {
-                url 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
-                connection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
-                developerConnection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
-            }
-
-            licenses {
-                license {
-                    name 'The Apache Software License, Version 2.0'
-                    url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
-                    distribution 'repo'
-                }
-            }
-
-            developers {
-                developer {
-                    id 'davemorrissey'
-                    name 'Dave Morrissey'
-                }
-            }
-        }
-    }
-}
-
 dependencies {
     compile fileTree(dir: 'libs', include: '*.jar')
     compile 'com.android.support:support-annotations:25.0.0'
@@ -82,4 +36,6 @@
         debug.setRoot('build-types/debug')
         release.setRoot('build-types/release')
     }
-}
\ No newline at end of file
+}
+
+apply from: rootProject.file('release.gradle')
diff --git a/release.gradle b/release.gradle
new file mode 100644
index 0000000..068e2d9
--- /dev/null
+++ b/release.gradle
@@ -0,0 +1,105 @@
+apply plugin: 'maven'
+apply plugin: 'signing'
+
+def isReleaseBuild() {
+    return version.contains("SNAPSHOT") == false
+}
+
+def getMavenRepositoryUrl() {
+    return hasProperty('repositoryUrl') ? property('repositoryUrl') : "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
+}
+
+def getMavenRepositoryUsername() {
+    return hasProperty('sonatypeUsername') ? property('sonatypeUsername') : ""
+}
+
+def getMavenRepositoryPassword() {
+    return hasProperty('sonatypePassword') ? property('sonatypePassword') : ""
+}
+
+afterEvaluate { project ->
+    task androidJavadoc(type: Javadoc) {
+        source = android.sourceSets.main.java.srcDirs
+        classpath += files(android.bootClasspath)
+    }
+
+    task androidJavadocJar(type: Jar) {
+        classifier = 'javadoc'
+        from androidJavadoc.destinationDir
+    }
+
+    task androidSourcesJar(type: Jar) {
+        classifier = 'sources'
+        from android.sourceSets.main.java.srcDirs
+    }
+
+    android.libraryVariants.all { variant ->
+        def name = variant.name.capitalize()
+        task "jar${name}"(type: Jar, dependsOn: variant.javaCompile) {
+            from variant.javaCompile.destinationDir
+        }
+    }
+
+    artifacts {
+        archives androidJavadocJar
+        archives androidSourcesJar
+        archives jarRelease
+    }
+
+    signing {
+        required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") }
+        sign configurations.archives
+    }
+
+    uploadArchives {
+        configuration = configurations.archives
+        repositories.mavenDeployer {
+            beforeDeployment {
+                MavenDeployment deployment -> signing.signPom(deployment)
+            }
+
+            repository(url: getMavenRepositoryUrl()) {
+                authentication(
+                        userName: getMavenRepositoryUsername(),
+                        password: getMavenRepositoryPassword())
+            }
+
+            pom.project {
+                name 'SubsamplingScaleImageView'
+                packaging 'aar'
+                description 'Custom image views for Android with pinch to zoom, panning, rotation and animation support, with easy extension so you can add your own overlays and touch event detection.'
+                url 'https://github.com/davemorrissey/subsampling-scale-image-view'
+
+                scm {
+                    url 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
+                    connection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
+                    developerConnection 'scm:git@github.com:davemorrissey/subsampling-scale-image-view.git'
+                }
+
+                licenses {
+                    license {
+                        name 'The Apache Software License, Version 2.0'
+                        url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+                        distribution 'repo'
+                    }
+                }
+
+                developers {
+                    developer {
+                        id 'davemorrissey'
+                        name 'Dave Morrissey'
+                    }
+                }
+            }
+        }
+    }
+
+    task installArchives(type: Upload) {
+        configuration = configurations.archives
+        repositories {
+            mavenDeployer {
+                repository url: "file://${System.properties['user.home']}/.m2/repository"
+            }
+        }
+    }
+}
