aboutsummaryrefslogtreecommitdiff
path: root/glide/build.gradle
blob: 410a1df7cab7d420e03abb5de790c657b6a9e3b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
apply plugin: 'java'

evaluationDependsOn(':third_party:gif_decoder')
evaluationDependsOn(':third_party:disklrucache')
evaluationDependsOn(':library')

def getAndroidSdkDirectory() {
  project(':library').android.sdkDirectory
}

def getAndroidCompileSdkVersion() {
  project(':library').android.compileSdkVersion
}

def getInternalAndroidProjects() {
    [':third_party:gif_decoder', ':third_party:gif_encoder', ':library'].collect { project(it) }
}
def getInternalJavaProjects() {
    [':third_party:disklrucache'].collect { project(it) }
}

def getAllInternalProjects() {
    getInternalAndroidProjects() + getInternalJavaProjects()
}

def getReleaseVariantAndroidProjects() {
    getAndroidLibraryVariants('release')
}

def getAndroidLibraryVariants(variantName) {
    getInternalAndroidProjects().collect { project ->
        project.android.libraryVariants.findAll { type ->
            type.buildType.name.equalsIgnoreCase(variantName)
        }
    }.sum()
}

def getSourceFilesForVariant(variantName) {
    getAndroidLibraryVariants(variantName).collect { it.javaCompile.source } +
            getInternalJavaProjects().collect { it.sourceSets.main.allJava }
}

def getAndroidJar() {
    "${getAndroidSdkDirectory()}/platforms/${getAndroidCompileSdkVersion()}/android.jar"
}

// Generate javadocs and sources containing batched documentation and sources for all internal projects.
['release', 'debug'].each { variantName ->

    task("${variantName}SourceJar", type: Jar) {
      from getSourceFilesForVariant(variantName)
    }

    def javadocTask = task("${variantName}Javadoc", type: Javadoc) {
        source = getSourceFilesForVariant(variantName)

        classpath = files(getAndroidLibraryVariants(variantName).collect {
            files(it.javaCompile.classpath.files, getAndroidJar())
        })
        classpath += getInternalJavaProjects().collect { files(it.configurations.compile) }

        options {
            links("http://docs.oracle.com/javase/7/docs/api/")
            linksOffline("http://d.android.com/reference", "${getAndroidSdkDirectory()}/docs/reference")
        }

        exclude '**/BuildConfig.java'
        exclude '**/R.java'
    }

    def cleanJavadocTask = task("clean${variantName.capitalize()}Javadoc", type: Delete) {
        delete javadocTask.destinationDir
    }
    clean.dependsOn(cleanJavadocTask)

    def javadocJarTask = task("${variantName}JavadocJar", type: Jar) {
      from javadocTask.destinationDir
    }
    javadocJarTask.dependsOn(javadocTask)
}

jar {
    from files(
            getReleaseVariantAndroidProjects().collect { variant ->
                variant.javaCompile.destinationDir
            }
    )
    exclude "**/R.class"
    exclude "**/BuildConfig.class"
    from files(getInternalJavaProjects().collect { it.sourceSets.main.output })
}

getAllInternalProjects().each { project ->
    jar.dependsOn(project.build)
}

artifacts {
    archives releaseJavadocJar {
        classifier 'javadoc'
    }
    archives releaseSourceJar {
        classifier 'sources'
    }
}

apply from: "$rootProject.projectDir/scripts/upload.gradle"