/* * Copyright (C) 2020-2024 Michael Clarke * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 3 of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ plugins { id('java') id('jacoco') id('org.sonarqube') version('4.4.1.3373') id('info.solidsoft.pitest') version('1.15.0') id('com.github.johnrengelman.shadow') version('8.1.1') id('net.researchgate.release') version('3.0.2') } group 'com.github.mc1arke.sonarqube.plugin' repositories { mavenCentral() ivy { url 'https://binaries.sonarsource.com/' patternLayout({a -> artifact '/Distribution/[module]/[module]-[revision].[ext]' }) metadataSources(sources -> { sources.artifact() }) } } def sonarqubeVersion = '10.6.0.92116' def sonarqubeLibDir = "${projectDir}/sonarqube-lib" def sonarLibraries = "${sonarqubeLibDir}/sonarqube-${sonarqubeVersion}/lib" sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 configurations { zip } compileJava { options.compilerArgs += '-proc:none' options.encoding = 'UTF-8' } tasks.withType(JavaCompile) { options.encoding = 'UTF-8' } dependencies { compileOnly(fileTree(dir: sonarLibraries, include: '**/*.jar', exclude: 'extensions/*.jar')) testImplementation(fileTree(dir: sonarLibraries, include: '**/*.jar', exclude: 'extensions/*.jar')) testImplementation('org.mockito:mockito-core:5.13.0') testImplementation('org.assertj:assertj-core:3.26.3') testImplementation('org.wiremock:wiremock:3.9.2') zip("sonarqube:sonarqube:${sonarqubeVersion}@zip") implementation('org.bouncycastle:bcpkix-jdk15on:1.70') implementation(files('lib/nodes-0.5.0.jar')) runtimeOnly('com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.17.2') compileOnly('com.google.code.findbugs:jsr305:3.0.2') implementation('org.javassist:javassist:3.30.2-GA') implementation('com.squareup.okhttp3:logging-interceptor:4.12.0') testImplementation(platform('org.junit:junit-bom:5.11.0')) testImplementation('org.junit.jupiter:junit-jupiter') testImplementation('junit:junit:4.13.2') testRuntimeOnly('org.junit.vintage:junit-vintage-engine') } project.afterEvaluate { if (file("${sonarLibraries}").exists()) { return } project.getLogger().lifecycle('Extracting SonarQube libraries (this may take a while)...') configurations.zip.resolvedConfiguration.resolvedArtifacts.each { artifact -> copy { from zipTree(artifact.getFile()) into sonarqubeLibDir } } } jar { manifest { attributes 'Plugin-Description': 'Enables branch and pull request analysis in SonarQube Community Edition, without having to upgrade to Developer Edition', 'SonarLint-Supported': false, 'Plugin-Homepage': 'https://github.com/mc1arke/sonarqube-community-branch-plugin', 'Plugin-License': 'GNU LGPL 3', 'Plugin-Version': "${project.version}", 'Plugin-Organization': 'Michael Clarke', 'Sonar-Version': "9.14.0.375", 'Plugin-IssueTrackerUrl': 'https://github.com/mc1arke/sonarqube-community-branch-plugin/issues', 'Plugin-Key': 'communityBranchPlugin', 'Plugin-Class': 'com.github.mc1arke.sonarqube.plugin.CommunityBranchPluginBootstrap', 'Plugin-Name': 'Community Branch Plugin', 'Premain-Class': 'com.github.mc1arke.sonarqube.plugin.CommunityBranchAgent', 'Can-Retransform-Classes': 'true' } } release { git { requireBranch.set('') commitVersionFileOnly.set(true) } buildTasks.set(["assemble"]) } tasks.jar.configure { archiveClassifier = 'nodeps' enabled = false } tasks.shadowJar.configure { archiveClassifier = null } tasks.withType(JavaCompile) { options.compilerArgs << '-Xlint:unchecked' options.deprecation = true } assemble.dependsOn('shadowJar') pitest { junit5PluginVersion = '1.2.1' timestampedReports = false avoidCallsTo = ['org.slf4j.Logger'] } jacocoTestReport { reports { xml.required = true } } plugins.withType(JacocoPlugin) { tasks["test"].finalizedBy 'jacocoTestReport' } test { useJUnitPlatform() testLogging { events "passed", "skipped", "failed" } }