Properties databindingProperties = new Properties() databindingProperties.load(new FileInputStream("${projectDir}/databinding.properties")) databindingProperties.mavenRepoDir = "${projectDir}/${databindingProperties.mavenRepoName}" ext.config = databindingProperties println "local maven repo is ${ext.config.mavenRepoDir}." new File(ext.config.mavenRepoDir).mkdir() subprojects { apply plugin: 'maven' group = config.group version = config.snapshotVersion repositories { mavenCentral() maven { url "file://${config.mavenRepoDir}" } } uploadArchives { repositories { mavenDeployer { repository(url: "file://${config.mavenRepoDir}") } } } } task deleteRepo(type: Delete) { delete "${config.mavenRepoDir}" } def buildExtensionsTask = project.tasks.create "buildExtensionsTask", Exec buildExtensionsTask.workingDir file('extensions').getAbsolutePath() //on linux buildExtensionsTask.commandLine './gradlew' buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace' buildExtensionsTask.dependsOn subprojects.uploadArchives file('integration-tests').listFiles().findAll { it.isDirectory() }.each { println("Creating run test task for ${it.getAbsolutePath()}.") def testTask = project.tasks.create "runTestsOf${it.getName().capitalize()}", Exec testTask.workingDir it.getAbsolutePath() //on linux testTask.commandLine './gradlew' testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace' testTask.dependsOn subprojects.uploadArchives testTask.dependsOn buildExtensionsTask } task runIntegrationTests { dependsOn tasks.findAll { task -> task.name.startsWith('runTestsOf') } } task runAllTests { dependsOn runIntegrationTests } allprojects { afterEvaluate { project -> runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('test')} runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('connectedCheck')} } } subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo } buildExtensionsTask.shouldRunAfter deleteRepo tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary'] task rebuildRepo() { dependsOn deleteRepo dependsOn subprojects.uploadArchives dependsOn buildExtensionsTask }