import groovy.json.JsonOutput
+import groovy.text.SimpleTemplateEngine
import org.sonar.build.BlackBoxTest
import static org.gradle.api.JavaVersion.VERSION_17
// when needed (see protobuf modules for example)
}
+ task generatePackageInfo {
+ doLast {
+ def allPathsContainingJavaFiles = [] as Set
+
+ fileTree('src/main/java/').matching() {
+ include "*/**/*.java"
+ }.forEach {
+ allPathsContainingJavaFiles << it.toPath().toFile().getParent();
+ }
+
+ allPathsContainingJavaFiles.each {
+ String packageInfoPath = it + "/package-info.java"
+ File packageInfoFile = new File (packageInfoPath)
+ if (!packageInfoFile.exists()) {
+ logger.warn("Creating file: " + packageInfoPath)
+ def packageName = packageInfoFile.getParent().takeAfter("src/main/java/").replaceAll("/", "\\.")
+ String packageInfoContent = applyPackageInfoTemplate(packageName)
+ packageInfoFile << packageInfoContent
+ }
+ }
+ }
+ }
+ generatePackageInfo.finalizedBy(licenseFormat)
+
jacocoTestReport {
reports {
xml.required = true
}
}
+static def applyPackageInfoTemplate(packageName) {
+ def engine = new SimpleTemplateEngine()
+ def templateText = "@ParametersAreNonnullByDefault\n" +
+ "package $packageName;\n" +
+ "\n" +
+ "import javax.annotation.ParametersAreNonnullByDefault;\n"
+ def templateParams = ["packageName": packageName]
+ engine.createTemplate(templateText).make(templateParams).toString()
+}
+
gradle.projectsEvaluated { gradle ->
// yarn_run tasks can't all run in parallel without random issues
// this script ensure all yarn_run tasks run sequentially