group = PROJ_GROUP
version = PROJ_VERSION
project.archivesBaseName = PROJ_ARTIFACTID
apply plugin: 'com.jfrog.bintray'
apply plugin: "com.jfrog.artifactory"
apply plugin: 'maven-publish'

task sourcesJar(type: Jar) {
  from android.sourceSets.main.java.srcDirs
  classifier = 'sources'
}

task javadoc(type: Javadoc) {
  source = android.sourceSets.main.java.srcDirs
  classpath += configurations.compile
  classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
}

task javadocJar(type: Jar, dependsOn: javadoc) {
  classifier = 'javadoc'
  from javadoc.destinationDir
}

javadoc {
  options {
    encoding "UTF-8"
    charSet 'UTF-8'
    author true
    version true
    links "http://docs.oracle.com/javase/7/docs/api"
    title PROJ_ARTIFACTID
  }
}

//添加以下信息避免JAVADOC打包时引用其它类库而出现问题，比如出现以下错误
// xxxx.java:20: 错误: 找不到符号
// public static <T> T create(JsonElement json, Class<T> classOfModel) {
//    ^
//    符号:   类 JsonElement
//    位置: 类 xxxx
android.libraryVariants.all { variant ->
  println variant.javaCompile.classpath.files
  if (variant.name == 'release') {
    //我们只需 release 的 javadoc
    task("generate${variant.name.capitalize()}Javadoc", type: Javadoc) {
      // title = ''
      // description = ''
      source = variant.javaCompile.source
      classpath = files(variant.javaCompile.classpath.files, project.android.getBootClasspath())
      options {
        encoding "utf-8"
        links "http://docs.oracle.com/javase/7/docs/api/"
        linksOffline "http://d.android.com/reference", "${android.sdkDirectory}/docs/reference"
      }
      exclude '**/BuildConfig.java'
      exclude '**/R.java'
    }
    task("javadoc${variant.name.capitalize()}Jar", type: Jar,
        dependsOn: "generate${variant.name.capitalize()}Javadoc") {
      classifier = 'javadoc'
      from tasks.getByName("generate${variant.name.capitalize()}Javadoc").destinationDir
    }
    artifacts {
      archives tasks.getByName("javadoc${variant.name.capitalize()}Jar")
    }
  }
}

artifacts {
  archives javadocJar
  archives sourcesJar
}


def pomConfig = {
  scm {
    connection PROJ_VCSURL
    developerConnection PROJ_VCSURL
    url PROJ_WEBSITEURL
  }
  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 DEVELOPER_ID
      name DEVELOPER_NAME
      email DEVELOPER_EMAIL
    }
  }
  "dependencies " {
    //        dependency {
    //            groupId "com.alibaba"
    //            artifactId "fastjson"
    //            "version " "1.2.6"
    //            //同dependencies
    //        }
    //        }
  }
}

publishing {
  publications {
    mavenJava(MavenPublication) {
      artifactId PROJ_ARTIFACTID
      artifact javadocJar
      artifact sourcesJar

      pom {
        packaging 'aar'
      }
      pom.withXml {
        def root = asNode()
        root.appendNode('description', PROJ_DESCRIPTION)
        root.children().last() + pomConfig
      }
    }
  }
}

afterEvaluate {
  publishing.publications.mavenJava.artifact(bundleRelease)
}

bintray {
  user = hasProperty("bintrayUser") ? getProperty("bintrayUser") : getProperty("BINTRAY_USER")
  key = hasProperty("bintrayKey") ? getProperty("bintrayKey") : getProperty("BINTRAY_KEY")

  configurations = ['archives']
  publications = ['mavenJava']
  publish = true

  pkg {
    repo = 'maven'
    name = PROJ_NAME
    desc = PROJ_DESCRIPTION
    websiteUrl = PROJ_WEBSITEURL
    issueTrackerUrl = PROJ_ISSUETRACKERURL
    vcsUrl = PROJ_VCSURL
    licenses = ['Apache-2.0']
    publicDownloadNumbers = true
  }
}

artifactory {
  contextUrl = 'http://oss.jfrog.org/artifactory'
  resolve {
    repository {
      repoKey = 'libs-release'
    }
  }
  publish {
    repository {
      repoKey = 'oss-snapshot-local' //The Artifactory repository key to publish to
      username = bintray.user
      password = bintray.key
      maven = true
    }
    defaults {
      publications('mavenJava')
      publishArtifacts = true
    }
  }
}