1
0
mirror of https://github.com/mc1arke/sonarqube-community-branch-plugin.git synced 2024-11-24 08:42:28 +02:00
sonarqube-community-branch-.../build.gradle
Michael Clarke 0f5fbd8894 #753: Add support for Sonarqube 10.0
Sonarqube 10 has removed legacy support for modules as well as removing
deprecated properties historically used for specifying branch targets.
Additionally, the interface for managing Sonarqube features has had a
method renamed, which makes the new version of Sonarqube binary
incompatible with the plugin. The references to Sonarqube's removed code
have been removed from the plugin, and the implementations of the
interface and Java agent that dynamically updates Sonarqube code that
also implements the interface have been updated to use the new method
name.

As the Sonarqube server binaries are now compiled against Java 17, the
build process has been bumped to JDK 17, but continues to produce Java
11 artefacts to allow scanner components to be compatible with the
ongoing Java 11 support in the scanner.
2023-09-16 12:44:00 +01:00

157 lines
4.8 KiB
Groovy

/*
* Copyright (C) 2020-2023 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('2.8')
id('info.solidsoft.pitest') version('1.4.0')
id('com.github.johnrengelman.shadow') version('5.1.0')
id('net.researchgate.release') version('2.6.0')
}
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.0.0.68432'
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.4.0')
testImplementation('org.assertj:assertj-core:3.24.2')
testImplementation('com.github.tomakehurst:wiremock:2.27.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.15.2')
compileOnly('com.google.code.findbugs:jsr305:3.0.2')
implementation('org.javassist:javassist:3.29.2-GA')
implementation('com.squareup.okhttp3:logging-interceptor:4.11.0')
testImplementation(platform('org.junit:junit-bom:5.10.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 = ''
commitVersionFileOnly = true
}
}
tasks.jar.configure {
classifier = 'nodeps'
enabled = false
}
tasks.shadowJar.configure {
classifier = null
}
tasks.withType(JavaCompile) {
options.compilerArgs << '-Xlint:unchecked'
options.deprecation = true
}
assemble.dependsOn('shadowJar')
pitest {
timestampedReports = false
avoidCallsTo = ['org.sonar.api.utils.log.Logger']
}
jacocoTestReport {
reports {
xml.required = true
}
}
plugins.withType(JacocoPlugin) {
tasks["test"].finalizedBy 'jacocoTestReport'
}
test {
useJUnitPlatform()
testLogging {
events "passed", "skipped", "failed"
}
}