247 lines
6.3 KiB
Groovy
247 lines
6.3 KiB
Groovy
plugins {
|
|
id 'checkstyle'
|
|
id 'java'
|
|
id 'jacoco'
|
|
id 'idea'
|
|
id 'application'
|
|
id 'maven'
|
|
id 'maven-publish'
|
|
id 'pmd'
|
|
id 'com.jfrog.bintray' version '1.8.4'
|
|
id 'com.github.ben-manes.versions' version '0.21.0'
|
|
id 'net.thauvin.erik.gradle.semver' version '1.0.0'
|
|
id 'com.github.spotbugs' version '1.7.1'
|
|
id 'org.sonarqube' version '2.7'
|
|
}
|
|
|
|
import com.github.spotbugs.SpotBugsTask
|
|
import org.apache.tools.ant.taskdefs.condition.Os
|
|
|
|
defaultTasks 'deploy'
|
|
|
|
def deployDir = 'deploy'
|
|
|
|
def mavenName = 'HttpStatus'
|
|
def mavenDescription = 'HttpStatus JSP Tag Library'
|
|
def mavenUrl = 'https://github.com/ethauvin/HttpStatus'
|
|
def mavenLicense = 'The BSD 3-Clause License'
|
|
def mavenLicenseUrl = 'http://opensource.org/licenses/BSD-3-Clause'
|
|
def mavenScmCon = 'https://github.com/ethauvin/HttpStatus.git'
|
|
def mavenScmDevCon = 'git@github.com:ethauvin/HttpStatus.git'
|
|
|
|
def pkgLicenses = ['BSD 3-Clause']
|
|
def pkgIssueTrackerUrl = mavenUrl + '/issues'
|
|
def pkgLabels = ['jsp', 'tag library', 'http', 'status code', 'java']
|
|
|
|
group = 'net.thauvin.erik.httpstatus'
|
|
|
|
mainClassName = 'net.thauvin.erik.httpstatus.Reasons'
|
|
sourceCompatibility = 1.8
|
|
targetCompatibility = 1.8
|
|
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
|
|
|
|
repositories {
|
|
mavenLocal()
|
|
jcenter()
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'javax.servlet:javax.servlet-api:4.0.1'
|
|
implementation 'javax.servlet.jsp:jsp-api:2.2.1-b03'
|
|
|
|
spotbugsPlugins 'com.h3xstream.findsecbugs:findsecbugs-plugin:1.9.0'
|
|
spotbugsPlugins 'com.mebigfatguy.fb-contrib:fb-contrib:7.4.3.sb'
|
|
|
|
compileOnly 'com.github.spotbugs:spotbugs-annotations:3.1.12'
|
|
testCompileOnly 'com.github.spotbugs:spotbugs-annotations:3.1.12'
|
|
|
|
testImplementation 'org.testng:testng:6.14.3'
|
|
}
|
|
|
|
javadoc {
|
|
title = mavenDescription + ' ' + version
|
|
options.source = 8
|
|
options.tags = ['created']
|
|
options.author = true
|
|
options.links('https://docs.oracle.com/javase/8/docs/api/')
|
|
options.addStringOption('Xdoclint:none', '-quiet')
|
|
}
|
|
|
|
compileJava {
|
|
//options.compilerArgs << '-Xlint:unchecked' << '-Xlint:deprecation'
|
|
}
|
|
|
|
|
|
jar {
|
|
manifest.attributes('Main-Class': mainClassName)
|
|
}
|
|
|
|
clean {
|
|
doLast {
|
|
project.delete(fileTree(deployDir))
|
|
}
|
|
}
|
|
|
|
test {
|
|
useTestNG()
|
|
}
|
|
|
|
pmd {
|
|
ruleSetFiles = files("config/pmd.xml")
|
|
ruleSets = []
|
|
}
|
|
|
|
tasks.withType(SpotBugsTask) {
|
|
reports {
|
|
xml.enabled = false
|
|
html.enabled = true
|
|
}
|
|
excludeFilter = file("$projectDir/config/spotbugs/excludeFilter.xml")
|
|
}
|
|
|
|
tasks.withType(Checkstyle) {
|
|
reports {
|
|
xml.enabled = false
|
|
html.enabled = true
|
|
}
|
|
}
|
|
|
|
bintray {
|
|
user = project.hasProperty('bintrayUser') ? project.property('bintrayUser') : System.getenv('BINTRAY_USER')
|
|
key = project.hasProperty('bintrayApiKey') ? project.property('bintrayApiKey') : System.getenv('BINTRAY_API_KEY')
|
|
publications = ['MyPublication']
|
|
dryRun = false
|
|
pkg {
|
|
repo = 'maven'
|
|
name = mavenName
|
|
licenses = pkgLicenses
|
|
desc = mavenDescription
|
|
websiteUrl = mavenUrl
|
|
issueTrackerUrl = pkgIssueTrackerUrl
|
|
vcsUrl = mavenScmCon
|
|
labels = pkgLabels
|
|
publicDownloadNumbers = true
|
|
version {
|
|
gpg {
|
|
sign = true
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
bintrayUpload {
|
|
versionName = "$project.version"
|
|
versionDesc = "$mavenName $project.version"
|
|
versionVcsTag = "$project.version"
|
|
versionReleased = new Date()
|
|
}
|
|
|
|
task javadocJar(type: Jar, dependsOn: javadoc) {
|
|
group = 'Build'
|
|
description = 'Builds an archive of the javadoc docs.'
|
|
archiveClassifier = 'javadoc'
|
|
from javadoc.destinationDir
|
|
}
|
|
|
|
task sourcesJar(type: Jar) {
|
|
group = 'Build'
|
|
description = 'Builds an archive of the source code.'
|
|
archiveClassifier = 'sources'
|
|
from sourceSets.main.allSource
|
|
}
|
|
|
|
artifacts {
|
|
archives javadocJar
|
|
archives sourcesJar
|
|
}
|
|
|
|
publishing {
|
|
publications {
|
|
MyPublication(MavenPublication) {
|
|
from components.java
|
|
artifact sourcesJar
|
|
artifact javadocJar
|
|
groupId project.group
|
|
artifactId rootProject.name
|
|
|
|
pom {
|
|
name = mavenName
|
|
description = mavenDescription
|
|
url = mavenUrl
|
|
licenses {
|
|
license {
|
|
name = mavenLicense
|
|
url = mavenLicenseUrl
|
|
distribution = 'repo'
|
|
}
|
|
}
|
|
developers {
|
|
developer {
|
|
id = 'ethauvin'
|
|
name = 'Erik C. Thauvin'
|
|
email = 'erik@thauvin.net'
|
|
}
|
|
}
|
|
scm {
|
|
connection = 'scm:git:' + mavenScmCon
|
|
developerConnection = 'scm:git:' + mavenScmDevCon
|
|
url = mavenScmCon
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
task copyToDeploy(type: Copy) {
|
|
from(configurations.runtime) {
|
|
exclude 'javax.servlet-api-*.jar'
|
|
exclude 'jsp-api-*.jar'
|
|
}
|
|
from jar
|
|
into deployDir
|
|
}
|
|
|
|
task deploy(dependsOn: ['clean', 'build', 'copyToDeploy']) {
|
|
description = 'Copies all needed files to the ${deployDir} directory.'
|
|
group = 'Publishing'
|
|
outputs.dir deployDir
|
|
inputs.files copyToDeploy
|
|
mustRunAfter clean
|
|
}
|
|
|
|
task release(dependsOn: ['wrapper', 'deploy']) {
|
|
group = 'Publishing'
|
|
description = 'Releases new 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()
|
|
}
|
|
}
|
|
|
|
sonarqube {
|
|
properties {
|
|
property("sonar.projectKey", "ethauvin_HttpStatus")
|
|
property("sonar.sourceEncoding", "UTF-8")
|
|
}
|
|
}
|
|
|
|
tasks.sonarqube {
|
|
dependsOn("jacocoTestReport")
|
|
}
|