Gradle Refresh

- move common functions to functions.gradle
 - use dependency aliases whenever possible
 - update to gradle 2.1
 - cleanup build.gradle files with proper spacing
 - remove duplicated blocks
 - compile incrementally (java)

Gradle Refresh v2

 - alphabetical order dependencies
 - added jdk8 to build tests
 - moved script to file for travis

Gradle Refresh v2a

 - fix travis
 - remove pointless logging

jdk8 isn't ready for travis
This commit is contained in:
Connor Tumbleson 2014-10-23 08:05:14 -05:00
parent 869d287aaa
commit aba540885e
12 changed files with 156 additions and 226 deletions

View File

@ -7,7 +7,7 @@ jdk:
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq libstdc++6:i386 lib32z1 expect
script: "./gradlew build fatJar proguard"
script: ./scripts/travis-ci/run-tests.sh
branches:
only:
- master

View File

@ -1,98 +0,0 @@
The majority of smali/baksmali is written and copyrighted by me (Ben Gruver)
and released under the following license:
*******************************************************************************
Copyright (c) 2010 Ben Gruver (JesusFreke)
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. 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.
3. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
*******************************************************************************
Various portions of the code are taken from the Android Open Source Project,
and are used in accordance with the following license:
*******************************************************************************
Copyright (C) 2007 The Android Open Source Project
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.
*******************************************************************************
The smali mojo plugin is (very loosely) based on an unknown mojo plugin with
the following license:
*******************************************************************************
Copyright 2001-2005 The Apache Software Foundation.
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.
*******************************************************************************
The RadixTree implementation in the "util" project is taken from
http://code.google.com/p/radixtree/ (version .3), and is used with minor
modifications in accordance with the following license:
*******************************************************************************
The MIT License
Copyright (c) 2008 Tahseen Ur Rehman
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*******************************************************************************

View File

@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
apply plugin: 'fatjar'
apply plugin: 'eu.appsatori.fatjar'
configurations {
proguard
@ -21,7 +21,7 @@ configurations {
dependencies {
compile project(':brut.apktool:apktool-lib')
proguard 'net.sf.proguard:proguard-base:4.8'
proguard depends.proguard
}
gradle.taskGraph.whenReady {

View File

@ -13,7 +13,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import org.apache.tools.ant.filters.*
processResources {
@ -30,21 +29,21 @@ processResources {
}
dependencies {
compile ("junit:junit:4.10") {
exclude(module: 'hamcrest-core')
}
compile("junit:junit:4.10") {
exclude(module: 'hamcrest-core')
}
compile project(':brut.j.dir'),
project(':brut.j.util'),
project(':brut.j.common'),
project(':brut.apktool.smali:util'),
project(':brut.apktool.smali:dexlib2'),
project(':brut.apktool.smali:baksmali'),
project(':brut.apktool.smali:smali'),
"org.yaml:snakeyaml:1.12",
"xpp3:xpp3:1.1.4c",
"xmlunit:xmlunit:1.3",
"com.google.guava:guava:12.0",
"org.apache.commons:commons-lang3:3.1"
}
compile project(':brut.j.dir'),
project(':brut.j.util'),
project(':brut.j.common'),
project(':brut.apktool.smali:util'),
project(':brut.apktool.smali:dexlib2'),
project(':brut.apktool.smali:baksmali'),
project(':brut.apktool.smali:smali'),
depends.snakeyaml,
depends.xmlpull,
depends.guava,
depends.commons_lang
testCompile depends.xmlunit
}

View File

@ -15,6 +15,6 @@
*/
dependencies {
testCompile 'junit:junit:4.8.2'
testCompile depends.junit
}

View File

@ -15,7 +15,7 @@
*/
dependencies {
compile project(':brut.j.common'),
project(':brut.j.util')
testCompile "junit:junit:3.8.1"
compile project(':brut.j.common'),
project(':brut.j.util')
testCompile depends.junit
}

View File

@ -15,8 +15,8 @@
*/
dependencies {
compile project(':brut.j.common')
compile "commons-io:commons-io:2.4",
"org.apache.commons:commons-compress:1.4.1"
testCompile "junit:junit:3.8.1"
compile project(':brut.j.common'),
depends.commons_io,
depends.commons_compress
testCompile depends.junit
}

View File

@ -15,77 +15,47 @@
*/
apply plugin: 'java'
apply plugin: 'maven'
apply from: 'gradle/functions.gradle'
def apktoolversion_major = '2.0.0'
def apktoolversion_minor = 'RC2';
if (!('release' in gradle.startParameter.taskNames)) {
def hash = getCheckedOutGitCommitHash();
if (hash == null) {
project.ext.set("hash", "dirty")
project.ext.set("apktool_version", apktoolversion_major + "-dirty")
println "Building SNAPSHOT (no .git folder found)";
} else {
project.ext.set("hash", hash);
project.ext.set("apktool_version", apktoolversion_major + "-" + hash + "-SNAPSHOT");
println "Building SNAPSHOT (" + getCheckedOutBranch() + "): " + hash;
}
} else {
project.ext.set("hash", "")
project.ext.set("apktool_version", apktoolversion_major + "-" + apktoolversion_minor);
println "Building RELEASE (" + getCheckedOutBranch() + "): " + apktoolversion_major + "-" + apktoolversion_minor;
}
// https://gist.github.com/JonasGroeger/7620911
def getCheckedOutGitCommitHash() {
def gitFolder = "$projectDir/.git/"
def takeFromHash = 6
def head
try {
head = new File(gitFolder + "HEAD").text.split(":")
} catch(Exception e) {
return null;
}
def isCommit = head.length == 1
if(isCommit) return head[0].trim().take(takeFromHash)
def refHead = new File(gitFolder + head[1].trim())
refHead.text.trim().take takeFromHash
}
def getCheckedOutBranch() {
def gitFolder = "$projectDir/.git/"
def head
try {
head = new File(gitFolder + "HEAD").text.split("/")
return head[2].trim();
} catch(Exception e) {
return "";
}
return "SNAPSHOT";
}
repositories {
mavenCentral()
}
sourceCompatibility = 1.7
targetCompatibility = 1.7
if (!('release' in gradle.startParameter.taskNames)) {
def hash = getCheckedOutGitCommitHash();
if (hash == null) {
project.ext.set("hash", "dirty")
project.ext.set("apktool_version", apktoolversion_major + "-dirty")
println "Building SNAPSHOT (no .git folder found)";
} else {
project.ext.set("hash", hash);
project.ext.set("apktool_version", apktoolversion_major + "-" + hash + "-SNAPSHOT");
println "Building SNAPSHOT (" + getCheckedOutBranch() + "): " + hash;
}
} else {
project.ext.set("hash", "")
project.ext.set("apktool_version", apktoolversion_major + "-" + apktoolversion_minor);
println "Building RELEASE (" + getCheckedOutBranch() + "): " + apktoolversion_major + "-" + apktoolversion_minor;
}
build.doFirst {
def javaVersion = System.getProperty("java.version")
//fail the build if we don't have the expected Java version
if (!javaVersion.startsWith("1.7")) {
throw new GradleException("You can fix this problem!\nWe found a " + javaVersion + " JDK\nPlease update JAVA_HOME to use a 1.7 JDK\nCurrently it is set to: " + System.getProperty("java.home"));
}
throw new GradleException("You can fix this problem!\n" +
"We found a " + javaVersion + " JDK\n" +
"Please update JAVA_HOME to use a 1.7 JDK\n" +
"Currently it is set to: " + System.getProperty("java.home")
);
}
}
task wrapper(type: Wrapper) {
gradleVersion = '1.10'
gradleVersion = '2.1'
}
// used for official releases only. Please don't use
@ -94,44 +64,52 @@ task release {
buildscript {
repositories {
mavenCentral()
jcenter()
}
tasks.withType(Compile) {
tasks.withType(JavaCompile) {
options.encoding = "UTF-8"
options.incremental = true
}
dependencies {
classpath 'eu.appsatori:gradle-fatjar-plugin:0.2-rc1'
classpath 'eu.appsatori:gradle-fatjar-plugin:0.3'
}
}
subprojects {
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'idea'
ext {
depends = [guava: 'com.google.guava:guava:14.0',
findbugs: 'com.google.code.findbugs:jsr305:1.3.9',
junit: 'junit:junit:4.6',
antlr_runtime: 'org.antlr:antlr-runtime:3.5',
antlr: 'org.antlr:antlr:3.5',
commons_cli: 'commons-cli:commons-cli:1.2',
jflex: 'de.jflex:jflex:1.4.3',
proguard: 'net.sf.proguard:proguard-base:4.8'
]
}
repositories {
mavenCentral()
}
dependencies {
testCompile 'junit:junit:4.8.2'
}
test {
testLogging {
exceptionFormat = 'full'
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'idea'
ext {
depends = [
antlr: 'org.antlr:antlr:3.5',
antlr_runtime: 'org.antlr:antlr-runtime:3.5',
commons_cli: 'commons-cli:commons-cli:1.2',
commons_compress: 'org.apache.commons:commons-compress:1.4.1',
commons_io: 'commons-io:commons-io:2.4',
commons_lang: 'org.apache.commons:commons-lang3:3.1',
findbugs: 'com.google.code.findbugs:jsr305:1.3.9',
guava: 'com.google.guava:guava:14.0',
jflex: 'de.jflex:jflex:1.4.3',
junit: 'junit:junit:4.6',
proguard: 'net.sf.proguard:proguard-base:4.8',
snakeyaml: 'org.yaml:snakeyaml:1.12',
xmlpull: 'xpp3:xpp3:1.1.4c',
xmlunit: 'xmlunit:xmlunit:1.3',
]
}
repositories {
mavenCentral()
}
dependencies {
testCompile depends.junit
}
test {
testLogging {
exceptionFormat = 'full'
}
}
}
}

49
gradle/functions.gradle Normal file
View File

@ -0,0 +1,49 @@
/**
* Copyright 2011 Ryszard Wiśniewski <brut.alll@gmail.com>
*
* 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.
*/
gradle.allprojects {
// https://gist.github.com/JonasGroeger/7620911
ext.getCheckedOutGitCommitHash = {
def gitFolder = "$projectDir/.git/"
def takeFromHash = 6
def head
try {
head = new File(gitFolder + "HEAD").text.split(":")
} catch(Exception e) {
return null;
}
def isCommit = head.length == 1
if(isCommit) return head[0].trim().take(takeFromHash)
def refHead = new File(gitFolder + head[1].trim())
refHead.text.trim().take takeFromHash
}
ext.getCheckedOutBranch = {
def gitFolder = "$projectDir/.git/"
def head
try {
head = new File(gitFolder + "HEAD").text.split("/")
return head[2].trim();
} catch(Exception e) {
return "SNAPSHOT";
}
}
}

View File

@ -1,6 +1,6 @@
#Sat Feb 08 18:00:26 CST 2014
#Thu Oct 23 07:11:01 CDT 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://downloads.gradle.org/distributions/gradle-1.10-all.zip
distributionUrl=http\://services.gradle.org/distributions/gradle-2.1-bin.zip

2
scripts/travis-ci/run-tests.sh Executable file
View File

@ -0,0 +1,2 @@
#!/usr/bin/env sh
./gradlew build fatJar proguard

View File

@ -1,10 +1,10 @@
include 'brut.j.common',
'brut.j.util',
'brut.j.dir',
'brut.apktool.smali:util',
'brut.apktool.smali:dexlib2',
'brut.apktool.smali:baksmali',
'brut.apktool.smali:smali',
'brut.apktool.smali:dexlib2:accessorTestGenerator',
'brut.apktool:apktool-lib',
'brut.apktool:apktool-cli'
'brut.j.util',
'brut.j.dir',
'brut.apktool.smali:util',
'brut.apktool.smali:dexlib2',
'brut.apktool.smali:baksmali',
'brut.apktool.smali:smali',
'brut.apktool.smali:dexlib2:accessorTestGenerator',
'brut.apktool:apktool-lib',
'brut.apktool:apktool-cli'