Gradle: Add decompile task to projects (#1273)

* Gradle: Add decompile task to projects

* add ff as dependency rather than adding ti in buildsrc

* smh smh smh smh smh

* Add ff version in buildsrc build file

This doesn't work in ext as it officially isn't part of the project

* Add missing ''s
This commit is contained in:
Lucwousin
2019-09-03 04:55:37 +02:00
committed by GitHub
parent 0609123f86
commit 14d311be93
6 changed files with 62 additions and 2 deletions

View File

@@ -33,7 +33,7 @@ ext {
asm = '7.1' asm = '7.1'
commonsCli = '1.4' commonsCli = '1.4'
discord = '1.1' discord = '1.1'
fernflower = '20171017' fernflower = '07082019'
findbugs = '3.0.2' findbugs = '3.0.2'
gson = '2.8.5' gson = '2.8.5'
guava = '28.0-jre' guava = '28.0-jre'
@@ -82,7 +82,7 @@ ext {
allprojects { allprojects {
apply plugin: 'maven' apply plugin: 'maven'
apply plugin: 'checkstyle' if (this.name != 'rs-client') apply plugin: 'checkstyle'
group = 'net.runelite' group = 'net.runelite'
version = '1.5.33-SNAPSHOT' version = '1.5.33-SNAPSHOT'
@@ -105,6 +105,7 @@ subprojects {
apply plugin: 'java-library' apply plugin: 'java-library'
apply plugin: 'maven' apply plugin: 'maven'
apply plugin: "com.github.ben-manes.versions" apply plugin: "com.github.ben-manes.versions"
apply plugin: 'fernflower'
sourceCompatibility = 1.8 sourceCompatibility = 1.8
targetCompatibility = 1.8 targetCompatibility = 1.8

7
buildSrc/build.gradle Normal file
View File

@@ -0,0 +1,7 @@
repositories {
maven { url "https://raw.githubusercontent.com/runelite-extended/maven-repo/master" }
}
dependencies {
compile localGroovy()
implementation group: 'net.runelite', name: 'fernflower', version: '07082019'
}

View File

@@ -0,0 +1,16 @@
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.api.tasks.StopExecutionException
class FernflowerPlugin implements Plugin<Project> {
void apply(Project project) {
project.task('decompile', type: FernflowerTask) {
it.dependsOn(project.tasks.jar)
it.doFirst {
if (!project.tasks.jar.didWork) {
throw new StopExecutionException()
}
}
}
}
}

View File

@@ -0,0 +1,32 @@
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction
import org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler
class FernflowerTask extends DefaultTask {
List<String> extraArgs
String inputJar
String outputDir
@InputFile
File getInputJar() {
project.file(inputJar ?: project.buildDir.toString() + '/libs/' + project.getName() + '-' + project.version + '.jar')
}
@OutputDirectory
File getOutputDir() {
project.file(outputDir ?: project.buildDir.toString() + '/decompiled-sources')
}
@TaskAction
void decompile() {
getOutputDir().mkdirs()
def args = [getInputJar().toString(), getOutputDir().toString()]
if (extraArgs) {
args.addAll(extraArgs)
}
ConsoleDecompiler.main(args as String[])
}
}

View File

@@ -0,0 +1 @@
implementation-class=FernflowerPlugin

View File

@@ -44,3 +44,6 @@ classes.doLast() {
File f = file("build/classes/java/main/Placeholder.class") File f = file("build/classes/java/main/Placeholder.class")
f.delete() f.delete()
} }
// tasks.build.dependsOn(tasks.decompile)
// this is just here to show how this could be used