Refactor the maven upload build stuff

This also adds the required javadoc jars
diff --git a/build.gradle b/build.gradle
index e571f0e..e291e8f 100644
--- a/build.gradle
+++ b/build.gradle
@@ -64,13 +64,13 @@
 task release() {
 }
 
+// The projects that get pushed to maven
+def maven_release_projects = ['smali', 'baksmali', 'dexlib2', 'util']
+
 subprojects {
     apply plugin: 'java'
     apply plugin: 'idea'
-    apply plugin: 'maven'
-    apply plugin: 'signing'
 
-    group = 'org.smali'
     version = parent.version
 
     ext {
@@ -93,52 +93,74 @@
         mavenCentral()
     }
 
-    signing {
-        required { gradle.taskGraph.hasTask("uploadArchives") }
-        sign configurations.archives
-    }
+    if (project.name in maven_release_projects) {
+        apply plugin: 'maven'
+        apply plugin: 'signing'
 
-    uploadArchives {
-        repositories.mavenDeployer {
-            configuration = configurations.archives
+        group = 'org.smali'
 
-            beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
+        task javadocJar(type: Jar, dependsOn: javadoc) {
+            classifier = 'javadoc'
+            from 'build/docs/javadoc'
+        }
 
-            if (rootProject.hasProperty('sonatypeUsername') && rootProject.hasProperty('sonatypePassword')) {
-                repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
-                    authentication(userName: sonatypeUsername, password: sonatypePassword)
-                }
-            }
+        task sourcesJar(type: Jar) {
+            classifier = 'sources'
+            from sourceSets.main.allJava
+        }
 
-            pom.artifactId = project.name
+        artifacts {
+            archives javadocJar
+            archives sourcesJar
+        }
 
-            pom.project {
-                name project.name
-                url 'http://smali.org'
-                packaging 'jar'
-                licenses {
-                    license {
-                        name 'The BSD 3-Clause License'
-                        url 'http://opensource.org/licenses/BSD-3-Clause'
-                        distribution 'repo'
+        signing {
+            required { gradle.taskGraph.hasTask("uploadArchives") }
+            sign configurations.archives
+        }
+
+        uploadArchives {
+            repositories.mavenDeployer {
+                configuration = configurations.archives
+
+                beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) }
+
+                if (rootProject.hasProperty('sonatypeUsername') && rootProject.hasProperty('sonatypePassword')) {
+                    repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") {
+                        authentication(userName: sonatypeUsername, password: sonatypePassword)
                     }
                 }
-                scm {
-                    connection 'scm:git:git://github.com/JesusFreke/smali.git'
-                    developerConnection 'scm:git:git@github.com:JesusFreke/smali.git'
-                }
-                developers {
-                    developer {
-                        id 'jesusfreke'
-                        name 'Ben Gruver'
-                        email 'jesusfreke@jesusfreke.com'
+
+                pom.artifactId = project.name
+
+                pom.project {
+                    name project.name
+                    url 'http://smali.org'
+                    packaging 'jar'
+                    licenses {
+                        license {
+                            name 'The BSD 3-Clause License'
+                            url 'http://opensource.org/licenses/BSD-3-Clause'
+                            distribution 'repo'
+                        }
+                    }
+                    scm {
+                        connection 'scm:git:git://github.com/JesusFreke/smali.git'
+                        developerConnection 'scm:git:git@github.com:JesusFreke/smali.git'
+                    }
+                    developers {
+                        developer {
+                            id 'jesusfreke'
+                            name 'Ben Gruver'
+                            email 'jesusfreke@jesusfreke.com'
+                        }
                     }
                 }
             }
         }
-    }
 
-    tasks.getByPath(':release').dependsOn(uploadArchives)
+        tasks.getByPath(':release').dependsOn(uploadArchives)
+    }
 }
 
 buildscript {