semver/build.gradle

210 lines
5.3 KiB
Groovy

plugins {
id 'checkstyle'
id 'java'
id 'jacoco'
id 'maven-publish'
id 'pmd'
id 'signing'
id 'com.github.ben-manes.versions' version '0.38.0'
id 'net.thauvin.erik.gradle.semver' version '1.0.4'
id 'com.github.spotbugs' version '4.7.1'
id 'org.sonarqube' version '3.2.0'
}
import com.github.spotbugs.snom.SpotBugsTask
import org.apache.tools.ant.taskdefs.condition.Os
defaultTasks 'check'
group = 'net.thauvin.erik'
final def mavenName = 'SemVer'
final def mavenDescription = 'Semantic Version Annotation Processor'
final def mavenUrl = 'https://github.com/ethauvin/semver'
final def mavenLicense = 'The BSD 3-Clause License'
final def mavenLicenseUrl = 'http://opensource.org/licenses/BSD-3-Clause'
final def mavenScmCon = 'https://github.com/ethauvin/semver.git'
final def mavenScmDevCon = 'git@github.com:ethauvin/semver.git'
ext.versions = [
spotbugs: '4.2.3'
]
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
implementation 'com.github.spullara.mustache.java:compiler:0.9.7'
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.11.0'
spotbugsPlugins 'com.mebigfatguy.sb-contrib:sb-contrib:7.4.7'
compileOnly "com.github.spotbugs:spotbugs-annotations:$versions.spotbugs"
testCompileOnly "com.github.spotbugs:spotbugs-annotations:$versions.spotbugs"
testImplementation 'org.testng:testng:7.4.0'
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
withSourcesJar()
withJavadocJar()
}
pmd {
ignoreFailures = true
ruleSets = []
ruleSetFiles = files("${projectDir}/config/pmd.xml")
consoleOutput = true
}
publishing {
publications {
mavenJava(MavenPublication) {
from components.java
groupId project.group
artifactId rootProject.name
pom {
name = mavenName
description = mavenDescription
url = mavenUrl
licenses {
license {
name = mavenLicense
url = mavenLicenseUrl
}
}
developers {
developer {
id = 'ethauvin'
name = 'Erik C. Thauvin'
email = 'erik@thauvin.net'
url = 'https://erik.thauvin.net/'
}
}
scm {
connection = "scm:git:" + mavenScmCon
developerConnection = "scm:git:" + mavenScmDevCon
url = mavenUrl
}
}
}
}
repositories {
maven {
name = "ossrh"
project.afterEvaluate {
url = project.version.contains("SNAPSHOT")
? "https://oss.sonatype.org/content/repositories/snapshots/"
: "https://oss.sonatype.org/service/local/staging/deploy/maven2/"
}
credentials(PasswordCredentials)
}
}
}
signing {
useGpgCmd()
sign publishing.publications.mavenJava
}
javadoc {
doFirst {
title = "$mavenDescription $project.version API"
}
options.with {
source = '8'
tags = ['created']
author = true
//addBooleanOption('html4', true)
links('https://docs.oracle.com/javase/8/docs/api/')
//addStringOption('Xdoclint:none', '-quiet')
}
}
test {
testLogging {
exceptionFormat "full"
events "passed", "skipped", "failed"
}
useTestNG()
}
spotbugs {
toolVersion = versions.spotbugs
excludeFilter = file("$projectDir/config/spotbugs/excludeFilter.xml")
}
tasks.withType(SpotBugsTask) {
reports {
xml.enabled = false
html.enabled = true
}
}
tasks.withType(Checkstyle) {
reports {
xml.enabled = false
html.enabled = true
}
}
task release(dependsOn: ['wrapper', 'clean', 'publishToMavenLocal']) {
group = 'Publishing'
description = 'Releases new version to local maven repository.'
doFirst {
println("Version: $version")
}
}
task pandoc(type: Exec) {
group = 'Documentation'
def pandoc_args = ['--from', 'gfm',
'--to', 'html5',
'--metadata', "pagetitle=$mavenDescription",
'-s',
'-c', 'github-pandoc.css',
'-o', 'docs/README.html',
'README.md']
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
commandLine(['cmd', '/c', 'pandoc'] + pandoc_args)
} else {
executable 'pandoc'
args pandoc_args
}
standardOutput = new ByteArrayOutputStream()
ext.output = {
return standardOutput.toString()
}
}
jacocoTestReport {
dependsOn(test)
reports {
html.enabled = true
xml.enabled = true
}
}
sonarqube {
properties {
property "sonar.organization", "ethauvin-github"
property "sonar.projectKey", "ethauvin_semver"
property "sonar.host.url", "https://sonarcloud.io"
property("sonar.sourceEncoding", "UTF-8")
}
}
tasks.sonarqube {
dependsOn("jacocoTestReport")
}