title: Android Library Gradle release JAR
body: <p>How can I release Jar packaging of <code>android-library</code> project?<br>
  I've found, classes.jar is located under <code>build/bundles/release/classes.jar</code> and I suppose this is correct Jar package (contains <code>*.class</code> files).</p>
  
  <p>Is there some official way, to release library as JAR instead of AAR ?</p>
  
  <p><strong>Edit</strong><br>
  I use Gradle to release Maven artifacts, and I'd like to release JAR along with AAR package.   So JAR with signature, md5, manifest, ...<br>
  based on <a href="https://chris.banes.me/2013/08/27/pushing-aars-to-maven-central/" rel="noreferrer">https://chris.banes.me/2013/08/27/pushing-aars-to-maven-central/</a></p>
  
  <pre><code>apply plugin: 'maven'
  apply plugin: 'signing'
  
  configurations {
      archives {
          extendsFrom configurations.default
      }
  }
  
  def sonatypeRepositoryUrl
  if (isReleaseBuild()) {
      println 'RELEASE BUILD'
      sonatypeRepositoryUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
  } else {
      println 'DEBUG BUILD'
      sonatypeRepositoryUrl = "https://oss.sonatype.org/content/repositories/snapshots/"
  }
  
  if(!hasProperty('nexusPassword')) {
      ext.set('nexusPassword', System.console().readPassword("\n\$ Type in password for Sonatype nexus account " + nexusUsername + ": "))
  }
  
  if(!signing.hasProperty('password')) {
      ext.set('signing.password', System.console().readPassword("\n\$ Type in GPG key password: "))
  }
  
  afterEvaluate { project -&gt;
      uploadArchives {
          repositories {
              mavenDeployer {
                  beforeDeployment { MavenDeployment deployment -&gt; signing.signPom(deployment) }
  
                  pom.artifactId = POM_ARTIFACT_ID
  
                  repository(url: sonatypeRepositoryUrl) {
                      authentication(userName: nexusUsername, password: nexusPassword)
                  }
  
                  pom.project {
                      name POM_NAME
                      packaging POM_PACKAGING
                      description POM_DESCRIPTION
                      url POM_URL
  
                      scm {
                          url POM_SCM_URL
                          connection POM_SCM_CONNECTION
                          developerConnection POM_SCM_DEV_CONNECTION
                      }
  
                      licenses {
                          license {
                              name POM_LICENCE_NAME
                              url POM_LICENCE_URL
                              distribution POM_LICENCE_DIST
                          }
                      }
  
                      developers {
                          developer {
                              id "loopj"
                              name "James Smith"
                          }
                          developer {
                              id "smarek"
                              name "Marek Sebera"
                          }
                      }
                  }
              }
          }
      }
  
      signing {
          required { isReleaseBuild() &amp;&amp; gradle.taskGraph.hasTask("uploadArchives") }
          sign configurations.archives
      }
  
      task androidJavadocs(type: Javadoc) {
          source = android.sourceSets.main.java.srcDirs
      }
  
      task androidJavadocsJar(type: Jar) {
          classifier = 'javadoc'
          from androidJavadocs.destinationDir
      }
  
      task androidSourcesJar(type: Jar) {
          classifier = 'sources'
          from android.sourceSets.main.java.srcDirs
      }
  
      artifacts {
          archives androidSourcesJar
          archives androidJavadocsJar
      }
  }
  </code></pre>
  
  <p>using </p>
  
  <pre><code>task androidJar(type: Jar) {
      from android.sourceSets.main.java.srcDirs
  }
  </code></pre>
  
  <p>will package only java files, not compiled and linked against android sdk</p>