普通文本  |  143行  |  4.18 KB


buildscript {
    ext.rootFolder = project.projectDir
    apply from: 'propLoader.gradle'
    ext.addRepos(repositories)
    if (ext.config.addRemoteRepos) {
        dependencies {
            classpath "com.android.databinding:localizemaven:${config.extraPluginsVersion}"
        }
    }
}
subprojects {
    apply plugin: 'maven'
    if (config.addRemoteRepos) {
        apply plugin: 'com.android.databinding.localizemaven'
    }

    group = config.group
    version = config.version
    uploadArchives {
        repositories {
            mavenDeployer {
                repository(url: "file://${config.mavenRepoDir}")
            }
        }
    }
    buildscript {
        addRepos(repositories)
        dependencies {
            classpath "com.android.databinding:bintray:${config.extraPluginsVersion}"
        }
    }
}

if (config.addRemoteRepos) {
    localizeMaven {
        localRepoDir = file(config.megaRepoDir)
        otherRepoDirs = config.localRepositories
    }
}

task deleteRepo(type: Delete) {
    delete "${config.mavenRepoDir}/${config.group.replace('.', '/')}"
}

task deletePrebuildFolder(type: Delete) {
    delete "${config.prebuildFolder}"
}

task deleteEap(type: Delete) {
    delete "${config.eapOutDir}"
}


def buildExtensionsTask = project.tasks.create "buildExtensionsTask", Exec
buildExtensionsTask.workingDir file('extensions').getAbsolutePath()
buildExtensionsTask.commandLine './gradlew'
buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace'
buildExtensionsTask.dependsOn subprojects.uploadArchives

def prepareExtensionPrebuilds = project.tasks.create "prepareExtensionPrebuilds", Exec
prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath()
prepareExtensionPrebuilds.commandLine './gradlew'
prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace'
prepareExtensionPrebuilds.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
}

task preparePrebuilds() {
    dependsOn deletePrebuildFolder
    dependsOn prepareExtensionPrebuilds
}

allprojects {
    afterEvaluate { project ->
        runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('test')}
        runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('connectedCheck')}
        preparePrebuilds.dependsOn project.tasks.findAll {task -> task.name.startsWith('prebuild')}
    }
}

subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo  }
subprojects.uploadArchives.each { it.shouldRunAfter deletePrebuildFolder  }
buildExtensionsTask.shouldRunAfter deleteRepo
tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary']


task rebuildRepo() {
    dependsOn deleteRepo
    dependsOn subprojects.uploadArchives
    dependsOn buildExtensionsTask
}

task copySamplesToEap(type : Copy) {
    mustRunAfter deleteEap
    from ("$projectDir/samples") {
        exclude "**/build"
        exclude "**/local.properties"
    }
    into "${config.eapOutDir}/samples"
}


task copyMavenRepoToEap(type : Copy) {
    mustRunAfter deleteEap
    dependsOn rebuildRepo
    from(config.mavenRepoDir)
    into "${config.eapOutDir}/${config.mavenRepoName}"
}

tasks.create(name : 'createEapConfigFile') << {
    def propsFile = new File("${config.eapOutDir}/databinding.properties")
    Properties props = new Properties()
    props.setProperty('version', config.version)
    props.setProperty('mavenRepoName', config.mavenRepoName)
    props.store(propsFile.newWriter(), null)
}


task batchEAP() {
    dependsOn deleteEap
    dependsOn copyMavenRepoToEap
    dependsOn copySamplesToEap
    dependsOn createEapConfigFile
}