Yigit Boyar | b135633 | 2015-05-21 15:49:58 -0700 | [diff] [blame] | 1 | |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 2 | buildscript { |
| 3 | ext.rootFolder = project.projectDir |
| 4 | apply from: 'propLoader.gradle' |
| 5 | ext.addRepos(repositories) |
| 6 | if (ext.config.addRemoteRepos) { |
| 7 | dependencies { |
| 8 | classpath "com.android.databinding:localizemaven:${config.extraPluginsVersion}" |
| 9 | } |
| 10 | } |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame^] | 11 | dependencies { |
| 12 | classpath 'net.sf.proguard:proguard-gradle:5.2.1' |
| 13 | } |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 14 | } |
Yigit Boyar | 840f0ce | 2014-12-12 16:45:00 -0800 | [diff] [blame] | 15 | subprojects { |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 16 | apply plugin: 'maven' |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 17 | if (config.addRemoteRepos) { |
| 18 | apply plugin: 'com.android.databinding.localizemaven' |
Yigit Boyar | 63d4789 | 2015-07-10 09:03:05 -0700 | [diff] [blame] | 19 | } |
| 20 | |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 21 | group = config.group |
| 22 | version = config.version |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 23 | uploadArchives { |
| 24 | repositories { |
| 25 | mavenDeployer { |
Yigit Boyar | e421e29 | 2015-03-13 12:57:48 -0700 | [diff] [blame] | 26 | repository(url: "file://${config.mavenRepoDir}") |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 27 | } |
| 28 | } |
| 29 | } |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 30 | buildscript { |
| 31 | addRepos(repositories) |
| 32 | dependencies { |
| 33 | classpath "com.android.databinding:bintray:${config.extraPluginsVersion}" |
| 34 | } |
| 35 | } |
| 36 | } |
| 37 | |
| 38 | if (config.addRemoteRepos) { |
| 39 | localizeMaven { |
| 40 | localRepoDir = file(config.megaRepoDir) |
| 41 | otherRepoDirs = config.localRepositories |
| 42 | } |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 43 | } |
| 44 | |
| 45 | task deleteRepo(type: Delete) { |
Yigit Boyar | b135633 | 2015-05-21 15:49:58 -0700 | [diff] [blame] | 46 | delete "${config.mavenRepoDir}/${config.group.replace('.', '/')}" |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 47 | } |
| 48 | |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 49 | task deletePrebuildFolder(type: Delete) { |
| 50 | delete "${config.prebuildFolder}" |
| 51 | } |
| 52 | |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 53 | task deleteEap(type: Delete) { |
| 54 | delete "${config.eapOutDir}" |
| 55 | } |
| 56 | |
| 57 | |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 58 | def buildExtensionsTask = project.tasks.create "buildExtensionsTask", Exec |
| 59 | buildExtensionsTask.workingDir file('extensions').getAbsolutePath() |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 60 | buildExtensionsTask.commandLine './gradlew' |
| 61 | buildExtensionsTask.args 'clean', 'uploadArchives', '--info', '--stacktrace' |
| 62 | buildExtensionsTask.dependsOn subprojects.uploadArchives |
| 63 | |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 64 | def prepareExtensionPrebuilds = project.tasks.create "prepareExtensionPrebuilds", Exec |
| 65 | prepareExtensionPrebuilds.workingDir file('extensions').getAbsolutePath() |
| 66 | prepareExtensionPrebuilds.commandLine './gradlew' |
| 67 | prepareExtensionPrebuilds.args 'clean', 'preparePrebuilds', '--info', '--stacktrace' |
| 68 | prepareExtensionPrebuilds.dependsOn subprojects.uploadArchives |
| 69 | |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 70 | file('integration-tests').listFiles().findAll { it.isDirectory() }.each { |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 71 | println("Creating run test task for ${it.getAbsolutePath()}.") |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 72 | def testTask = project.tasks.create "runTestsOf${it.getName().capitalize()}", Exec |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 73 | testTask.workingDir it.getAbsolutePath() |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 74 | //on linux |
| 75 | testTask.commandLine './gradlew' |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 76 | testTask.args 'clean', 'connectedCheck', '--info', '--stacktrace' |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 77 | testTask.dependsOn subprojects.uploadArchives |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 78 | testTask.dependsOn buildExtensionsTask |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 79 | } |
| 80 | |
| 81 | task runIntegrationTests { |
| 82 | dependsOn tasks.findAll { task -> task.name.startsWith('runTestsOf') } |
| 83 | } |
| 84 | |
| 85 | task runAllTests { |
| 86 | dependsOn runIntegrationTests |
| 87 | } |
| 88 | |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 89 | task preparePrebuilds() { |
| 90 | dependsOn deletePrebuildFolder |
| 91 | dependsOn prepareExtensionPrebuilds |
| 92 | } |
| 93 | |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 94 | allprojects { |
| 95 | afterEvaluate { project -> |
| 96 | runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('test')} |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 97 | runAllTests.dependsOn project.tasks.findAll {task -> task.name.equals('connectedCheck')} |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 98 | preparePrebuilds.dependsOn project.tasks.findAll {task -> task.name.startsWith('prebuild')} |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 99 | } |
| 100 | } |
| 101 | |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 102 | subprojects.uploadArchives.each { it.shouldRunAfter deleteRepo } |
Yigit Boyar | ae16128 | 2015-04-21 11:02:58 -0700 | [diff] [blame] | 103 | subprojects.uploadArchives.each { it.shouldRunAfter deletePrebuildFolder } |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 104 | buildExtensionsTask.shouldRunAfter deleteRepo |
Yigit Boyar | 99a3d31 | 2015-03-25 12:46:05 -0700 | [diff] [blame] | 105 | tasks['runTestsOfMultiModuleTestApp'].dependsOn tasks['runTestsOfIndependentLibrary'] |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 106 | |
Yigit Boyar | f9e51c0 | 2015-03-12 14:30:29 -0700 | [diff] [blame] | 107 | |
| 108 | task rebuildRepo() { |
| 109 | dependsOn deleteRepo |
| 110 | dependsOn subprojects.uploadArchives |
Yigit Boyar | a6e4583 | 2015-03-13 15:58:53 -0700 | [diff] [blame] | 111 | dependsOn buildExtensionsTask |
Yigit Boyar | ee75867 | 2015-04-16 15:12:02 -0700 | [diff] [blame] | 112 | } |
| 113 | |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 114 | task copySamplesToEap(type : Copy) { |
| 115 | mustRunAfter deleteEap |
| 116 | from ("$projectDir/samples") { |
| 117 | exclude "**/build" |
Yigit Boyar | 2939c3b | 2015-04-23 15:03:56 -0700 | [diff] [blame] | 118 | exclude "**/local.properties" |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 119 | } |
| 120 | into "${config.eapOutDir}/samples" |
| 121 | } |
| 122 | |
| 123 | |
| 124 | task copyMavenRepoToEap(type : Copy) { |
| 125 | mustRunAfter deleteEap |
| 126 | dependsOn rebuildRepo |
| 127 | from(config.mavenRepoDir) |
| 128 | into "${config.eapOutDir}/${config.mavenRepoName}" |
| 129 | } |
| 130 | |
| 131 | tasks.create(name : 'createEapConfigFile') << { |
| 132 | def propsFile = new File("${config.eapOutDir}/databinding.properties") |
| 133 | Properties props = new Properties() |
Yigit Boyar | 9399cb4 | 2015-05-16 15:42:45 -0700 | [diff] [blame] | 134 | props.setProperty('version', config.version) |
Yigit Boyar | c64ae35 | 2015-04-21 14:05:41 -0700 | [diff] [blame] | 135 | props.setProperty('mavenRepoName', config.mavenRepoName) |
| 136 | props.store(propsFile.newWriter(), null) |
| 137 | } |
| 138 | |
| 139 | |
| 140 | task batchEAP() { |
| 141 | dependsOn deleteEap |
| 142 | dependsOn copyMavenRepoToEap |
| 143 | dependsOn copySamplesToEap |
| 144 | dependsOn createEapConfigFile |
Yigit Boyar | 24bec1c | 2015-07-09 10:51:54 -0700 | [diff] [blame] | 145 | } |
George Mount | 69cbd9e | 2015-08-26 10:46:58 -0700 | [diff] [blame^] | 146 | |
| 147 | def fullJar(project) { |
| 148 | def localizeTask = project.parent.tasks.findByName('localizeDependencies') |
| 149 | if (localizeTask != null) { |
| 150 | localizeTask.dependsOn project.tasks.findByName('buildLicenseNotice') |
| 151 | } |
| 152 | |
| 153 | if (config.version.endsWith('SNAPSHOT')) { |
| 154 | return |
| 155 | } |
| 156 | def jarName = project.uploadArchives.repositories.mavenDeployer.pom.artifactId |
| 157 | def workingDir = "${project.buildDir}/intermediates/fullJar" |
| 158 | def fatJar = "${workingDir}/${jarName}-fat.jar" |
| 159 | def proguardJar = "${workingDir}/${jarName}-proguard.jar" |
| 160 | def jarJar = project.jar.archivePath |
| 161 | |
| 162 | project.configurations { |
| 163 | jarJarArchives |
| 164 | } |
| 165 | |
| 166 | project.tasks.create(name: 'fatJar', type: Jar) { |
| 167 | baseName = jarName + '-fat' |
| 168 | doFirst { |
| 169 | file(workingDir).mkdirs() |
| 170 | } |
| 171 | def deps = new HashSet<ResolvedDependency>() |
| 172 | project.configurations.compile.resolvedConfiguration.firstLevelModuleDependencies.each { |
| 173 | if (!it.moduleGroup.startsWith('com.android.tools')) { |
| 174 | deps.addAll(it.allModuleArtifacts) |
| 175 | } |
| 176 | } |
| 177 | from { deps.findAll { !it.name.contains('baseLibrary')}.collect { |
| 178 | it.file.isDirectory() ? it.file : project.zipTree(it.file) |
| 179 | } } { |
| 180 | exclude "META-INF/maven/**" |
| 181 | exclude "META-INF/MANIFEST.MF" |
| 182 | exclude "META-INF/LICENSE.txt" |
| 183 | exclude "META-INF/NOTICE.txt" |
| 184 | exclude "META-INF/services/javax.annotation.processing.Processor" |
| 185 | exclude "**/*.stg" |
| 186 | } |
| 187 | archiveName "${baseName}.jar" |
| 188 | destinationDir = new File(workingDir) |
| 189 | with project.jar |
| 190 | } |
| 191 | project.tasks.create(name: 'proguard', type: proguard.gradle.ProGuardTask) { |
| 192 | dependsOn 'fatJar' |
| 193 | |
| 194 | injars fatJar |
| 195 | outjars proguardJar |
| 196 | |
| 197 | configuration '../proguard.cfg' |
| 198 | } |
| 199 | |
| 200 | project.tasks.create(name: 'jarJarFile') { |
| 201 | dependsOn 'proguard' |
| 202 | dependsOn project.jar |
| 203 | def inputLibrary = proguardJar |
| 204 | def outputLibrary = jarJar |
| 205 | inputs.file(inputLibrary) |
| 206 | outputs.file(outputLibrary) |
| 207 | |
| 208 | doLast { |
| 209 | def jarJarLibrary = new File(config.externalPrebuiltsBase, |
| 210 | 'tools/common/m2/repository/com/googlecode/jarjar/jarjar/1.3/jarjar-1.3.jar'). |
| 211 | getCanonicalPath() |
| 212 | // in Ant |
| 213 | ant.taskdef(name: "jarjarIt", |
| 214 | classname: 'com.tonicsystems.jarjar.JarJarTask', |
| 215 | classpath: jarJarLibrary) |
| 216 | // start jarjar task |
| 217 | ant.jarjarIt(jarfile: outputLibrary) { |
| 218 | // input is our inputLibrary |
| 219 | zipfileset(src: inputLibrary) |
| 220 | // rule to repackage antlr to new package |
| 221 | rule pattern: 'org.antlr.**', result: 'com.google.repacked.antlr.@1' |
| 222 | rule pattern: 'com.tunnelvisionlabs.**', result: 'com.google.repacked.tunnelvision.@1' |
| 223 | // rule to repackage commons |
| 224 | rule pattern: 'org.apache.**', result: 'com.google.repacked.apache.@1' |
| 225 | rule pattern: 'kotlin.**', result: 'com.google.repacked.kotlin.@1' |
| 226 | } |
| 227 | } |
| 228 | } |
| 229 | |
| 230 | project.uploadArchives { |
| 231 | dependsOn 'jarJarFile' |
| 232 | repositories { |
| 233 | mavenDeployer { |
| 234 | pom.whenConfigured { pom -> |
| 235 | pom.dependencies.removeAll { dep -> |
| 236 | def isBaseLibrary = dep.groupId == 'com.android.databinding' && |
| 237 | dep.artifactId == 'baseLibrary' |
| 238 | def isGradle = dep.groupId == 'com.android.tools.build' && |
| 239 | dep.artifactId == 'gradle' |
| 240 | return !isBaseLibrary && !isGradle |
| 241 | } |
| 242 | } |
| 243 | } |
| 244 | } |
| 245 | } |
| 246 | } |