/** * Copyright 2014 Ryszard Wiśniewski * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ buildscript { repositories { jcenter() } tasks.withType(JavaCompile) { options.encoding = "UTF-8" } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:6.1.0' } } plugins { id 'com.github.hierynomus.license' version '0.15.0' } apply from: 'gradle/functions.gradle' version = '2.5.1' def suffix = 'SNAPSHOT' defaultTasks 'build', 'shadowJar', 'proguard' allprojects { apply plugin: 'java' apply plugin: 'license' sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 license { header rootProject.file("brut.j.common/src/templates/apache2.0-header.txt") exclude "**/android/content/res/*.java" exclude "**/android/util/*.java" include "**/*.java" mapping { java = 'SLASHSTAR_STYLE' } strictCheck true ext.year = '2010' ext.brut = 'Ryszard Wiśniewski' ext.brutEmail = 'brut.alll@gmail.com' ext.ibot = 'Connor Tumbleson' ext.ibotEmail = 'connor.tumbleson@gmail.com' } tasks.withType(JavaCompile) { options.compilerArgs += ["-Xlint:-options"] } // license plugin automatically fires these tasks, disable them and run them during releases gradle.startParameter.excludedTaskNames += "licenseMain" gradle.startParameter.excludedTaskNames += "licenseTest" } def mavenVersion = 'unspecified' if (!('release' in gradle.startParameter.taskNames)) { def hash = getCheckedOutGitCommitHash() if (hash == null) { project.ext.set("hash", "dirty") project.ext.set("apktool_version", version + "-dirty") println "Building SNAPSHOT (no .git folder found)" } else { project.ext.set("hash", hash) project.ext.set("apktool_version", version + "-" + hash + "-SNAPSHOT") mavenVersion = version + "-SNAPSHOT" println "Building SNAPSHOT (" + getCheckedOutBranch() + "): " + hash } } else { project.ext.set("hash", "") if (suffix.length() > 0) { project.ext.set("apktool_version", version + "-" + suffix) } else { project.ext.set("apktool_version", version) } mavenVersion = version println "Building RELEASE (" + getCheckedOutBranch() + "): " + project.ext.apktool_version } build.doFirst { def javaVersion = System.getProperty("java.version") // fail the build if java (1.5/1.6/1.7) if (javaVersion.startsWith("1.5") || javaVersion.startsWith("1.6") || javaVersion.startsWith("1.7")) { throw new GradleException("You can fix this problem!\n" + "We found a " + javaVersion + " JDK\n" + "Please update JAVA_HOME to use at least a 1.8 JDK\n" + "Currently it is set to: " + System.getProperty("java.home") ) } } // used for official releases only. Please don't use task release { } // used for publishing snapshot builds to maven. task snapshot { } subprojects { apply plugin: 'java' ext { depends = [ baksmali: 'org.smali:baksmali:2.5.2', commons_cli: 'commons-cli:commons-cli:1.4', commons_io: 'commons-io:commons-io:2.4', commons_lang: 'org.apache.commons:commons-lang3:3.1', guava: 'com.google.guava:guava:14.0', junit: 'junit:junit:4.12', proguard_gradle: 'com.guardsquare:proguard-gradle:7.0.0', snakeyaml: 'org.yaml:snakeyaml:1.18:android', smali: 'org.smali:smali:2.5.2', xmlpull: 'xpp3:xpp3:1.1.4c', xmlunit: 'xmlunit:xmlunit:1.6', ] } repositories { mavenCentral() } test { testLogging { exceptionFormat = 'full' } } def mavenProjects = ['apktool-lib', 'brut.j.common', 'brut.j.util', 'brut.j.dir'] if (project.name in mavenProjects) { apply plugin: 'maven-publish' apply plugin: 'signing' publishing { publications { maven(MavenPublication) { from project.components.java groupId = 'org.apktool' artifactId = project.name version = mavenVersion pom { name = 'Apktool' description = 'A tool for reverse engineering Android apk files.' url = 'https://apktool.org' licenses { license { name = 'The Apache License 2.0' url = 'https://opensource.org/licenses/Apache-2.0' } } developers { developer { id = 'iBotPeaches' name = 'Connor Tumbleson' email = 'connor.tumbleson@gmail.com' } developer { id = 'brutall' name = 'Ryszard Wiśniewski' email = 'brut.alll@gmail.com' } } scm { connection = 'scm:git:git://github.com/iBotPeaches/Apktool.git' developerConnection = 'scm:git:git@github.com:iBotPeaches/Apktool.git' url = 'https://github.com/iBotPeaches/Apktool' } } } } if (rootProject.hasProperty('ossrhUsername') && rootProject.hasProperty('ossrhPassword')) { repositories { maven { if (mavenVersion.endsWith('-SNAPSHOT')) { url = 'https://s01.oss.sonatype.org/content/repositories/snapshots/' } else { url = 'https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/' } credentials { username ossrhUsername password ossrhPassword } } } } } signing { required { gradle.taskGraph.hasTask('publish') } sign(publishing.publications["maven"]) } java { withJavadocJar() withSourcesJar() } tasks.getByPath(':release').dependsOn(publish); tasks.getByPath(':snapshot').dependsOn(publish); } }