build.gradle revision 63d478953393b1a2ea3b68d298b1d5fc64542e7b
1Properties databindingProperties = new Properties()
2databindingProperties.load(new FileInputStream("${projectDir}/databinding.properties"))
3def repoBase = databindingProperties.mavenRepoAbsolutePath == "." ? projectDir : databindingProperties.mavenRepoAbsolutePath
4databindingProperties.mavenRepoDir = "${repoBase}/${databindingProperties.mavenRepoName}"
5databindingProperties.extraPluginsRepoDir = "${projectDir}/${databindingProperties.extraPluginsRepoName}"
6
7databindingProperties.eapOutDir = "${projectDir}/${databindingProperties.eapOutFolderName}"
8databindingProperties.prebuildFolder = "${projectDir}/${databindingProperties.prebuildFolderName}" +
9        "/${databindingProperties.releaseVersion}"
10ext.config = databindingProperties
11
12println "local maven repo is ${ext.config.mavenRepoDir}."
13println "local pre-build folder is ${ext.config.prebuildFolder}."
14
15new File(ext.config.mavenRepoDir).mkdir()
16new File(ext.config.prebuildFolder).mkdir()
17
18subprojects {
19    apply plugin: 'maven'
20    group = config.group
21    version = config.version
22    buildscript {
23        repositories {
24            maven {
25                url "file://${config.extraPluginsRepoDir}"
26            }
27        }
28        dependencies {
29            classpath "com.android.databinding:bintray:${config.extraPluginsVersion}"
30        }
31    }
32
33    repositories {
34        mavenCentral()
35        maven {
36            url "file://${config.mavenRepoDir}"
37        }
38    }
39    uploadArchives {
40        repositories {
41            mavenDeployer {
42                repository(url: "file://${config.mavenRepoDir}")
43            }
44        }
45    }
46}
47
48task deleteRepo(type: Delete) {
49    delete "${config.mavenRepoDir}/${config.group.replace('.', '/')}"
50}
51
52task deletePrebuildFolder(type: Delete) {
53    delete "${config.prebuildFolder}"
54}
55
56task deleteEap(type: Delete) {
57    delete "${config.eapOutDir}"
58}
59
60
61def buildExtensionsTask = project.tasks.create "buildExtensionsTask", Exec
62buildExtensionsTask.workingDir file('extensions').getAbsolutePath()
63buildExtensionsTask.commandLine './gradlew'
64buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace'
65buildExtensionsTask.dependsOn subprojects.uploadArchives
66
67def prepareExtensionPrebuilds = project.tasks.create "prepareExtensionPrebuilds", Exec
68prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath()
69prepareExtensionPrebuilds.commandLine './gradlew'
70prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace'
71prepareExtensionPrebuilds.dependsOn subprojects.uploadArchives
72
73file('integration-tests').listFiles().findAll { it.isDirectory() }.each {
74    println("Creating run test task for  ${it.getAbsolutePath()}.")
75    def testTask = project.tasks.create "runTestsOf${it.getName().capitalize()}", Exec
76    testTask.workingDir it.getAbsolutePath()
77    //on linux
78    testTask.commandLine './gradlew'
79    testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace'
80    testTask.dependsOn subprojects.uploadArchives
81    testTask.dependsOn buildExtensionsTask
82}
83
84task runIntegrationTests {
85    dependsOn tasks.findAll { task -> task.name.startsWith('runTestsOf') }
86}
87
88task runAllTests {
89    dependsOn runIntegrationTests
90}
91
92task preparePrebuilds() {
93    dependsOn deletePrebuildFolder
94    dependsOn prepareExtensionPrebuilds
95}
96
97allprojects {
98    afterEvaluate { project ->
99        runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('test')}
100        runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('connectedCheck')}
101        preparePrebuilds.dependsOn project.tasks.findAll {task -> task.name.startsWith('prebuild')}
102    }
103}
104
105subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo  }
106subprojects.uploadArchives.each { it.shouldRunAfter deletePrebuildFolder  }
107buildExtensionsTask.shouldRunAfter deleteRepo
108tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary']
109
110
111task rebuildRepo() {
112    dependsOn deleteRepo
113    dependsOn subprojects.uploadArchives
114    dependsOn buildExtensionsTask
115}
116
117task copySamplesToEap(type : Copy) {
118    mustRunAfter deleteEap
119    from ("$projectDir/samples") {
120        exclude "**/build"
121        exclude "**/local.properties"
122    }
123    into "${config.eapOutDir}/samples"
124}
125
126
127task copyMavenRepoToEap(type : Copy) {
128    mustRunAfter deleteEap
129    dependsOn rebuildRepo
130    from(config.mavenRepoDir)
131    into "${config.eapOutDir}/${config.mavenRepoName}"
132}
133
134tasks.create(name : 'createEapConfigFile') << {
135    def propsFile = new File("${config.eapOutDir}/databinding.properties")
136    Properties props = new Properties()
137    props.setProperty('version', config.version)
138    props.setProperty('mavenRepoName', config.mavenRepoName)
139    props.store(propsFile.newWriter(), null)
140}
141
142
143task batchEAP() {
144    dependsOn deleteEap
145    dependsOn copyMavenRepoToEap
146    dependsOn copySamplesToEap
147    dependsOn createEapConfigFile
148}