/* * Copyright 2012, Google Inc. * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above * copyright notice, this list of conditions and the following disclaimer * in the documentation and/or other materials provided with the * distribution. * * Neither the name of Google Inc. nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ apply plugin: 'idea' version = '2.2.2' def jcommanderVersion = '' if (!('release' in gradle.startParameter.taskNames)) { // we compile against 1.48 normally, to match what's in AOSP, but switch to a newer version // for release, because it has some fixes required when running on Android jcommanderVersion = 'com.beust:jcommander:1.48' def versionSuffix try { def git = org.eclipse.jgit.api.Git.open(file('.')) def head = git.getRepository().getRef('HEAD') versionSuffix = head.getObjectId().abbreviate(8).name() if (!git.status().call().clean) { versionSuffix += '-dirty' } } catch (Exception) { // In case we can't get the commit for some reason, // just use -dev versionSuffix = 'dev' } version += "-${versionSuffix}" } else { jcommanderVersion = 'com.beust:jcommander:1.64' if (System.env.JDK6_HOME == null && !JavaVersion.current().isJava6()) { throw new InvalidUserDataException("bzzzzzzzt. Release builds must be performed with java 6. " + "Either run gradle with java 6, or define the JDK6_HOME environment variable.") } } // Note: please don't use this. This is strictly for the official releases // that are posted on, e.g. the bitbucket download page. task release() { } task(install) << { println "Installing version: ${version}" } // The projects that get pushed to maven def maven_release_projects = ['smali', 'baksmali', 'dexlib2', 'util'] subprojects { apply plugin: 'java' apply plugin: 'idea' if (JavaVersion.current().isJava8Compatible()) { allprojects { tasks.withType(Javadoc) { options.addStringOption('Xdoclint:none', '-quiet') } } } if (System.env.JDK6_HOME != null) { sourceCompatibility = 1.6 targetCompatibility = 1.6 tasks.withType(JavaCompile) { doFirst { options.fork = true options.bootClasspath = "$System.env.JDK6_HOME/jre/lib/rt.jar" options.bootClasspath += "$File.pathSeparator$System.env.JDK6_HOME/jre/lib/jsse.jar" } } } version = parent.version ext { depends = [ guava: 'com.google.guava:guava:18.0', findbugs: 'com.google.code.findbugs:jsr305:1.3.9', junit: 'junit:junit:4.6', mockito: 'org.mockito:mockito-core:1.10.19', antlr_runtime: 'org.antlr:antlr-runtime:3.5.2', antlr: 'org.antlr:antlr:3.5.2', stringtemplate: 'org.antlr:stringtemplate:3.2.1', jflex_plugin: 'org.xbib.gradle.plugin:gradle-plugin-jflex:1.1.0', proguard_gradle: 'net.sf.proguard:proguard-gradle:5.2.1', dx: 'com.google.android.tools:dx:1.7', gson: 'com.google.code.gson:gson:2.3.1', jcommander: jcommanderVersion ] } repositories { mavenCentral() } if (project.name in maven_release_projects) { apply plugin: 'maven' apply plugin: 'signing' group = 'org.smali' task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from 'build/docs/javadoc' } task sourcesJar(type: Jar) { classifier = 'sources' from sourceSets.main.allJava } artifacts { archives javadocJar archives sourcesJar } signing { required { gradle.taskGraph.hasTask('uploadArchives') } sign configurations.archives } uploadArchives { repositories.mavenDeployer { configuration = configurations.archives beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } if (rootProject.hasProperty('sonatypeUsername') && rootProject.hasProperty('sonatypePassword')) { repository(url: 'https://oss.sonatype.org/service/local/staging/deploy/maven2/') { authentication(userName: sonatypeUsername, password: sonatypePassword) } } pom.artifactId = project.name pom.project { name project.name url 'http://smali.org' packaging 'jar' licenses { license { name 'The BSD 3-Clause License' url 'http://opensource.org/licenses/BSD-3-Clause' distribution 'repo' } } scm { connection 'scm:git:git://github.com/JesusFreke/smali.git' developerConnection 'scm:git:git@github.com:JesusFreke/smali.git' } developers { developer { id 'jesusfreke' name 'Ben Gruver' email 'jesusfreke@jesusfreke.com' } } } } } tasks.getByPath(':release').dependsOn(uploadArchives) } } buildscript { repositories { mavenCentral() } dependencies { classpath 'org.eclipse.jgit:org.eclipse.jgit:2.0.0.201206130900-r' } } task wrapper(type: Wrapper) { gradleVersion = '3.5' distributionType = Wrapper.DistributionType.ALL }