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}