Apktool/build.gradle.kts
Connor Tumbleson 342ff67a4c
Migrate to Gradle Kotlin DSL (#3249)
* feat: initial migration to kotlin

* feat: initial migration to kotlin

* fix: wire up dependencies

* fix: Deprecated tag for kotlin detection

* refactor: put all modules into sub-projects

* fix: include jar file (android framework)

* fix: add version message/info

* fix: wire up version/gitrev to properties

* fix: wire up proguard on cli

* fix: wire up proguard

* fix: wire up output cleaning command

* fix: drop license header on gradle files

 - fully rewritten from scratch by myself
 - no longer including license header on build files

* fix: add compile utf8/flags for java8

* refactor: remove unneeded curly braces

* feat: progress towards maven-publish

* build: publish to maven

* docs: update documentation

* refactor: prevent implicit order by removal of afterEvaluate

* build: remove unused license plugin
2023-08-05 06:28:31 -04:00

187 lines
5.4 KiB
Plaintext

import java.io.ByteArrayOutputStream
val baksmaliVersion by extra("3.0.3")
val commonsCliVersion by extra("1.5.0")
val commonsIoVersion by extra("2.13.0")
val commonsLangVersion by extra("3.13.0")
val commonsTextVersion by extra("1.10.0")
val guavaVersion by extra("32.0.1-jre")
val junitVersion by extra("4.13.2")
val smaliVersion by extra("3.0.3")
val xmlpullVersion by extra("1.1.4c")
val xmlunitVersion by extra("2.9.1")
val version = "2.8.2"
val suffix = "SNAPSHOT"
// Strings embedded into the build.
var gitRevision by extra("")
var apktoolVersion by extra("")
defaultTasks("build", "shadowJar", "proguard")
// Functions
val gitDescribe: String? by lazy {
val stdout = ByteArrayOutputStream()
try {
rootProject.exec {
commandLine("git", "describe", "--tags")
standardOutput = stdout
}
stdout.toString().trim().replace("-g", "-")
} catch (e: Exception) {
null
}
}
val gitBranch: String? by lazy {
val stdout = ByteArrayOutputStream()
try {
rootProject.exec {
commandLine("git", "rev-parse", "--abbrev-ref", "HEAD")
standardOutput = stdout
}
stdout.toString().trim()
} catch (e: Exception) {
null
}
}
if ("release" !in gradle.startParameter.taskNames) {
val hash = this.gitDescribe
if (hash == null) {
gitRevision = "dirty"
apktoolVersion = "$version-dirty"
project.logger.lifecycle("Building SNAPSHOT (no .git folder found)")
} else {
gitRevision = hash
apktoolVersion = "$hash-SNAPSHOT"
project.logger.lifecycle("Building SNAPSHOT ($gitBranch): $gitRevision")
}
} else {
gitRevision = ""
apktoolVersion = if (suffix.isNotEmpty()) "$version-$suffix" else version;
project.logger.lifecycle("Building RELEASE ($gitBranch): $apktoolVersion")
}
plugins {
`java-library`
`maven-publish`
signing
}
buildscript {
repositories {
gradlePluginPortal()
google()
}
dependencies {
classpath("gradle.plugin.com.github.johnrengelman:shadow:8.0.0")
}
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
tasks.withType<JavaCompile> {
options.compilerArgs.add("-Xlint:-options")
options.compilerArgs.add("--release 8")
options.encoding = "UTF-8"
}
allprojects {
repositories {
mavenCentral()
google()
}
}
subprojects {
apply(plugin = "java")
apply(plugin = "java-library")
val mavenProjects = arrayOf("apktool-lib", "apktool-cli", "brut.j.common", "brut.j.util", "brut.j.dir")
if (project.name in mavenProjects) {
apply(plugin = "maven-publish")
apply(plugin = "signing")
java {
withJavadocJar()
withSourcesJar()
}
publishing {
repositories {
maven {
url = if (suffix.contains("SNAPSHOT")) {
uri("https://s01.oss.sonatype.org/content/repositories/snapshots/")
} else {
uri("https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/")
}
credentials {
username = (project.properties["ossrhUsername"] ?: "").toString()
password = (project.properties["ossrhPassword"] ?: "").toString()
}
}
}
publications {
register("mavenJava", MavenPublication::class) {
from(components["java"])
groupId = "org.apktool"
artifactId = project.name
version = apktoolVersion
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"
}
}
}
}
}
tasks.withType<Javadoc>() {
(options as StandardJavadocDocletOptions).addStringOption("Xdoclint:none", "-quiet")
}
signing {
sign(publishing.publications["mavenJava"])
}
}
}
// Used for official releases.
task("release") {
dependsOn("build")
finalizedBy("publish")
}