From e88ee19ed1c747f18901f4806ac78c8722780998 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Olaf=20=C5=9Anie=C5=BCek?= Date: Thu, 17 Nov 2022 12:53:52 +0100 Subject: [PATCH] Optimize gradle build to use the incremental build feature --- .../org.sonar.build/LicenseReader.groovy | 29 +++++++++++++++++++ sonar-application/build.gradle | 29 +++++-------------- 2 files changed, 37 insertions(+), 21 deletions(-) create mode 100644 buildSrc/src/main/groovy/org.sonar.build/LicenseReader.groovy diff --git a/buildSrc/src/main/groovy/org.sonar.build/LicenseReader.groovy b/buildSrc/src/main/groovy/org.sonar.build/LicenseReader.groovy new file mode 100644 index 00000000000..cb611e90497 --- /dev/null +++ b/buildSrc/src/main/groovy/org.sonar.build/LicenseReader.groovy @@ -0,0 +1,29 @@ +package org.sonar.build + +import groovy.json.JsonOutput +import groovy.json.JsonSlurper + +class LicenseReader extends FilterReader { + + LicenseReader(Reader fileReader) { + super(build(fileReader)) + } + + private static Reader build(Reader fileReader) { + def json = new JsonSlurper().parse(fileReader) + + json.dependencies.each { dependency -> + if (dependency.licenses.size() > 1) { + def idx = dependency.licenses.findIndexOf { it.name == "Elastic License 2.0" } + if (idx >= 0) { + dependency.licenses = [dependency.licenses[idx]] + } + } + } + + json.dependencies.sort { it.name } + + def jsonText = JsonOutput.toJson(json) + return new StringReader(JsonOutput.prettyPrint(jsonText)) + } +} diff --git a/sonar-application/build.gradle b/sonar-application/build.gradle index d6da1f90227..54e2ac87de7 100644 --- a/sonar-application/build.gradle +++ b/sonar-application/build.gradle @@ -1,6 +1,5 @@ -import groovy.json.JsonOutput -import groovy.json.JsonSlurper import org.apache.tools.ant.filters.ReplaceTokens +import org.sonar.build.LicenseReader plugins { id "com.github.hierynomus.license-report" @@ -133,20 +132,7 @@ task zip(type: Zip, dependsOn: [configurations.compileClasspath, downloadElastic into("${archiveDir}/") { from(tasks.downloadLicenses.outputs) { include 'dependency-license.json' - eachFile { jsonFile -> - def json = new JsonSlurper().parse(jsonFile.file) - json.dependencies.each { dependency -> - if (dependency.licenses.size() > 1) { - def idx = dependency.licenses.findIndexOf { it.name == "Elastic License 2.0" } - if (idx >= 0) { - dependency.licenses = [dependency.licenses[idx]] - } - } - } - json.dependencies.sort { it.name } - def jsonText = JsonOutput.toJson(json) - jsonFile.file.text = JsonOutput.prettyPrint(jsonText) - } + filter(LicenseReader) } } } @@ -275,7 +261,11 @@ task zip(type: Zip, dependsOn: [configurations.compileClasspath, downloadElastic } // Create the empty dir (plugins) required by elasticsearch into("${archiveDir}/elasticsearch/") { - from "$buildDir/elasticsearch" + // Create the empty dir required by elasticsearch + from { + new File(buildDir, 'elasticsearch/plugins').mkdirs() + "$buildDir/elasticsearch" + } } into("${archiveDir}/lib/extensions/") { from configurations.bundledPlugin @@ -315,10 +305,7 @@ task zip(type: Zip, dependsOn: [configurations.compileClasspath, downloadElastic from configurations.shutdowner } } -// Create the empty dir required by elasticsearch -zip.doFirst { - new File(buildDir, 'elasticsearch/plugins').mkdirs() -} + // Check the size of the archive zip.doLast { def minLength = 320000000 -- 2.39.5