apply plugin: 'idea'
apply plugin: 'eclipse'

group = '{{groupId}}'
version = '{{artifactVersion}}'

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.+'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
    }
}

repositories {
    jcenter()
}


if(hasProperty('target') && target == 'android') {

    apply plugin: 'com.android.library'
    apply plugin: 'com.github.dcendents.android-maven'

    android {
        compileSdkVersion 25
        buildToolsVersion '25.0.2'
        defaultConfig {
            minSdkVersion 14
            targetSdkVersion 25
        }
        compileOptions {
            {{#supportJava6}}
            sourceCompatibility JavaVersion.VERSION_1_6
            targetCompatibility JavaVersion.VERSION_1_6
            {{/supportJava6}}
            {{^supportJava6}}
            {{#java8}}
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
            {{/java8}}
            {{^java8}}
            sourceCompatibility JavaVersion.VERSION_1_7
            targetCompatibility JavaVersion.VERSION_1_7
            {{/java8}}
            {{/supportJava6}}
        }

        // Rename the aar correctly
        libraryVariants.all { variant ->
            variant.outputs.each { output ->
                def outputFile = output.outputFile
                if (outputFile != null && outputFile.name.endsWith('.aar')) {
                    def fileName = "${project.name}-${variant.baseName}-${version}.aar"
                    output.outputFile = new File(outputFile.parent, fileName)
                }
            }
        }

        dependencies {
            provided 'javax.annotation:jsr250-api:1.0'
        }
    }

    afterEvaluate {
        android.libraryVariants.all { variant ->
            def task = project.tasks.create "jar${variant.name.capitalize()}", Jar
            task.description = "Create jar artifact for ${variant.name}"
            task.dependsOn variant.javaCompile
            task.from variant.javaCompile.destinationDir
            task.destinationDir = project.file("${project.buildDir}/outputs/jar")
            task.archiveName = "${project.name}-${variant.baseName}-${version}.jar"
            artifacts.add('archives', task);
        }
    }

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

    artifacts {
        archives sourcesJar
    }

} else {

    apply plugin: 'java'
    apply plugin: 'maven'

    {{#supportJava6}}
    sourceCompatibility = JavaVersion.VERSION_1_6
    targetCompatibility = JavaVersion.VERSION_1_6
    {{/supportJava6}}
    {{^supportJava6}}
    {{#java8}}
    sourceCompatibility = JavaVersion.VERSION_1_8
    targetCompatibility = JavaVersion.VERSION_1_8
    {{/java8}}
    {{^java8}}
    sourceCompatibility = JavaVersion.VERSION_1_7
    targetCompatibility = JavaVersion.VERSION_1_7
    {{/java8}}
    {{/supportJava6}}

    install {
        repositories.mavenInstaller {
            pom.artifactId = '{{artifactId}}'
        }
    }

    task execute(type:JavaExec) {
       main = System.getProperty('mainClass')
       classpath = sourceSets.main.runtimeClasspath
    }
}

ext {
    oltu_version = "1.0.1"
    retrofit_version = "2.3.0"
    {{#usePlayWS}}
    {{#play24}}
    jackson_version = "2.6.6"
    play_version = "2.4.11"
    {{/play24}}
    {{#play25}}
    jackson_version = "2.7.8"
    play_version = "2.5.14"
    {{/play25}}
    {{#play26}}
    jackson_version = "2.8.11"
    jackson_databind_version = "2.8.11.3"
    play_version = "2.6.7"
    {{/play26}}
    {{/usePlayWS}}
    swagger_annotations_version = "1.5.21"
    junit_version = "4.12"
    {{#useRxJava}}
    rx_java_version = "1.3.0"
    {{/useRxJava}}
    {{#useRxJava2}}
    rx_java_version = "2.1.1"
    {{/useRxJava2}}
    {{#joda}}
    jodatime_version = "2.9.9"
    {{/joda}}
    {{#threetenbp}}
    threetenbp_version = "1.3.5"
    {{/threetenbp}}
    json_fire_version = "1.8.0"
}

dependencies {
    compile "com.squareup.retrofit2:retrofit:$retrofit_version"
    compile "com.squareup.retrofit2:converter-scalars:$retrofit_version"
    compile "com.squareup.retrofit2:converter-gson:$retrofit_version"
    {{#useRxJava}}
    compile "com.squareup.retrofit2:adapter-rxjava:$retrofit_version"
    compile "io.reactivex:rxjava:$rx_java_version"
    {{/useRxJava}}
    {{#useRxJava2}}
    compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
    compile "io.reactivex.rxjava2:rxjava:$rx_java_version"
    {{/useRxJava2}}
    compile "io.swagger:swagger-annotations:$swagger_annotations_version"
    compile ("org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltu_version"){
        exclude group:'org.apache.oltu.oauth2' , module: 'org.apache.oltu.oauth2.common'
    }
    compile "io.gsonfire:gson-fire:$json_fire_version"
    {{#joda}}
    compile "joda-time:joda-time:$jodatime_version"
    {{/joda}}
    {{#threetenbp}}
    compile "org.threeten:threetenbp:$threetenbp_version"
    {{/threetenbp}}
    {{#usePlayWS}}
    {{#play26}}
    compile "com.typesafe.play:play-ahc-ws_2.12:$play_version"
    compile "javax.validation:validation-api:1.1.0.Final"
    {{/play26}}
    {{^play26}}
    compile "com.typesafe.play:play-java-ws_2.11:$play_version"
    {{/play26}}
    compile "com.squareup.retrofit2:converter-jackson:$retrofit_version"
    compile "com.fasterxml.jackson.core:jackson-core:$jackson_version"
    compile "com.fasterxml.jackson.core:jackson-annotations:$jackson_version"
    compile "com.fasterxml.jackson.core:jackson-databind:$jackson_databind_version"
    compile "com.fasterxml.jackson.datatype:jackson-datatype-{{^java8}}joda{{/java8}}{{#java8}}jsr310{{/java8}}:$jackson_version"
    {{/usePlayWS}}

    testCompile "junit:junit:$junit_version"
}
