build.gradle revision ae161289a90f6ac69ffe6411ac8c09653c81d04d
1Properties databindingProperties = new Properties()
2databindingProperties.load(new FileInputStream("${projectDir}/databinding.properties"))
3databindingProperties.mavenRepoDir = "${projectDir}/${databindingProperties.mavenRepoName}"
4databindingProperties.prebuildFolder = "${projectDir}/${databindingProperties.prebuildFolderName}" +
5        "/${databindingProperties.releaseVersion}"
6
7ext.config = databindingProperties
8
9println "local maven repo is ${ext.config.mavenRepoDir}."
10println "local pre-build folder is ${ext.config.prebuildFolder}."
11
12new File(ext.config.mavenRepoDir).mkdir()
13new File(ext.config.prebuildFolder).mkdir()
14
15subprojects {
16    apply plugin: 'maven'
17    group = config.group
18    version = config.snapshotVersion
19    repositories {
20        mavenCentral()
21        maven {
22            url "file://${config.mavenRepoDir}"
23        }
24    }
25    uploadArchives {
26        repositories {
27            mavenDeployer {
28                repository(url: "file://${config.mavenRepoDir}")
29            }
30        }
31    }
32}
33
34task deleteRepo(type: Delete) {
35    delete "${config.mavenRepoDir}"
36}
37
38task deletePrebuildFolder(type: Delete) {
39    delete "${config.prebuildFolder}"
40}
41
42def buildExtensionsTask = project.tasks.create "buildExtensionsTask", Exec
43buildExtensionsTask.workingDir file('extensions').getAbsolutePath()
44buildExtensionsTask.commandLine './gradlew'
45buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace'
46buildExtensionsTask.dependsOn subprojects.uploadArchives
47
48def prepareExtensionPrebuilds = project.tasks.create "prepareExtensionPrebuilds", Exec
49prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath()
50prepareExtensionPrebuilds.commandLine './gradlew'
51prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace'
52prepareExtensionPrebuilds.dependsOn subprojects.uploadArchives
53
54file('integration-tests').listFiles().findAll { it.isDirectory() }.each {
55    println("Creating run test task for  ${it.getAbsolutePath()}.")
56    def testTask = project.tasks.create "runTestsOf${it.getName().capitalize()}", Exec
57    testTask.workingDir it.getAbsolutePath()
58    //on linux
59    testTask.commandLine './gradlew'
60    testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace'
61    testTask.dependsOn subprojects.uploadArchives
62    testTask.dependsOn buildExtensionsTask
63}
64
65task runIntegrationTests {
66    dependsOn tasks.findAll { task -> task.name.startsWith('runTestsOf') }
67}
68
69task runAllTests {
70    dependsOn runIntegrationTests
71}
72
73task preparePrebuilds() {
74    dependsOn deletePrebuildFolder
75    dependsOn prepareExtensionPrebuilds
76}
77
78allprojects {
79    afterEvaluate { project ->
80        runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('test')}
81        runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('connectedCheck')}
82        preparePrebuilds.dependsOn project.tasks.findAll {task -> task.name.startsWith('prebuild')}
83    }
84}
85
86subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo  }
87subprojects.uploadArchives.each { it.shouldRunAfter deletePrebuildFolder  }
88buildExtensionsTask.shouldRunAfter deleteRepo
89tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary']
90
91
92task rebuildRepo() {
93    dependsOn deleteRepo
94    dependsOn subprojects.uploadArchives
95    dependsOn buildExtensionsTask
96}
97
98