summaryrefslogtreecommitdiff
path: root/app/copyLibs.gradle
blob: d0fa5f8eb00eea400d490d4dc862385b255ec332 (about) (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
107
108
109
110
111
class CopyJars extends DefaultTask {

    @InputFiles
    FileCollection source

    @OutputDirectory
    File destination

    @TaskAction
    void apply() {
        project.copy {
            from source
            into destination
        }
    }
}

class ExtractAars extends DefaultTask {

    @Input
    boolean extractJarsOnly = false

    @InputFiles
    FileCollection source

    @OutputDirectory
    File destination

    @TaskAction
    void apply() {
        source.each { File file ->
            def baseFilename = file.name.lastIndexOf('.').with {
                it != -1 ? file.name[0..< it] : file.name
            }

            if (extractJarsOnly) {
                project.copy {
                    from project.zipTree(file)
                    include 'classes.jar'
                    into destination.name
                    rename {
                        String fileName -> fileName.replace('classes.jar', baseFilename + '.jar')
                    }
                }
            } else {
                project.copy {
                    from project.zipTree(file)
                    exclude 'classes.jar'
                    into destination.absolutePath + File.separator + baseFilename
                }

                project.copy {
                    from project.zipTree(file)
                    include 'classes.jar'
                    into destination.absolutePath + File.separator + baseFilename +
                        File.separator + destination.name
                    rename {
                        String fileName -> fileName.replace('classes.jar', baseFilename + '.jar')
                    }
                }
            }
        }
    }
}

task ('copyJarDependenciesIntoLibs', type: CopyJars) {

    description = 'Used for Eclipse. Copies JAR dependencies to the libs directory.'

    destination = file(project.projectDir.canonicalPath + File.separator + 'src' + File.separator + 'main' + File.separator + 'libs')

    afterEvaluate {
        source = files(
            project.configurations.matching {
                it.name.endsWith 'Compile' or it.name == 'compile'
            }.each {
                logger.info "Adding dependencies from ${it.name} configuration."
            }
        ).filter {
            it.name.endsWith 'jar'
        }
        logger.info source.files.toString()
    }
}

task ('extractAarDependenciesIntoLibs', type: ExtractAars) {

    description = 'Used for Eclipse. Extracts AAR dependencies into the libs directory.'

    destination = file(project.projectDir.canonicalPath + File.separator + 'src' + File.separator + 'main' + File.separator + 'libs')

    afterEvaluate {
        source = files(
            project.configurations.matching {
                it.name.endsWith 'Compile' or it.name == 'compile'
            }.each {
                logger.info "Adding dependencies from ${it.name} configuration."
            }
        ).filter {
            it.name.endsWith 'aar'
        }
        logger.info source.files.toString()
    }
}

task copyDependenciesIntoLibs {
    dependsOn copyJarDependenciesIntoLibs, extractAarDependenciesIntoLibs
    description = 'Used for Eclipse. Copies JAR and extracts AAR dependencies into the libs ' +
        'directory.'
}