plugins { id 'com.github.ksoichiro.console.reporter' version '0.5.0' id 'org.sonarqube' version '2.6.2' id 'com.github.ben-manes.versions' version '0.17.0' } ext.jadxVersion = file('version').readLines().get(0) version = jadxVersion allprojects { apply plugin: 'java' apply plugin: 'groovy' apply plugin: 'jacoco' apply plugin: 'com.github.ksoichiro.console.reporter' version = jadxVersion tasks.withType(JavaCompile) { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 if (!"$it".contains(':jadx-samples:')) { options.compilerArgs << '-Xlint' << '-Xlint:unchecked' << '-Xlint:deprecation' } } compileJava { options.encoding = "UTF-8" } jar { version = jadxVersion manifest { mainAttributes('jadx-version': jadxVersion) } } dependencies { compile 'org.slf4j:slf4j-api:1.7.25' testCompile 'ch.qos.logback:logback-classic:1.2.3' testCompile 'junit:junit:4.12' testCompile 'org.hamcrest:hamcrest-library:1.3' testCompile 'org.mockito:mockito-core:2.15.0' testCompile 'org.spockframework:spock-core:1.1-groovy-2.4' testCompile 'cglib:cglib-nodep:3.2.6' } repositories { mavenLocal() mavenCentral() jcenter() } jacoco { toolVersion = "0.8.0" } jacocoTestReport { reports { xml.enabled = true html.enabled = true } } } sonarqube { properties { property 'sonar.exclusions', '**/jadx/samples/**/*,**/test-app/**/*' property 'sonar.coverage.exclusions', '**/jadx/gui/**/*' } } dependencyUpdates.resolutionStrategy = { componentSelection { rules -> rules.all { ComponentSelection selection -> boolean rejected = ['alpha', 'beta', 'rc', 'cr', 'm', 'atlassian'].any { qualifier -> selection.candidate.version ==~ /(?i).*[.-]${qualifier}[.\d-]*/ } if (rejected) { selection.reject('Release candidate') } } } } task copyArtifacts(type: Sync, dependsOn: ['jadx-cli:installDist', 'jadx-gui:installDist']) { destinationDir file("$buildDir/jadx") ['jadx-cli', 'jadx-gui'].each { from tasks.getByPath(":${it}:installDist").destinationDir } } task pack(type: Zip, dependsOn: copyArtifacts) { destinationDir buildDir archiveName "jadx-${jadxVersion}.zip" from copyArtifacts.destinationDir } task copyExe(type: Copy, dependsOn: 'jadx-gui:createExe') { group 'jadx' description = 'Copy exe to build dir' destinationDir buildDir from tasks.getByPath('jadx-gui:createExe').outputs include '*.exe' } task dist(dependsOn: [pack, copyExe]) { group 'jadx' description = 'Build jadx distribution zip' } task samples(dependsOn: 'jadx-samples:samples') { group 'jadx' } task testAppCheck(dependsOn: 'jadx-test-app:testAppCheck') { group 'jadx' } task cleanBuildDir(type: Delete) { group 'jadx' delete buildDir } build.dependsOn(dist, samples) clean.dependsOn(cleanBuildDir)