Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
215 changes: 215 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,215 @@
plugins {
id 'java'
id 'groovy'
}

defaultTasks 'main'

def version = project.findProperty('version') ?: 'dev'

ext{
pluginName = 'Text-Utils-UCD'

releasesDir = file("$projectDir/releases")
libDir = file("$projectDir/lib")

libBuildDir = file("$projectDir/lib/build")
libTestDir = file("$projectDir/lib/test")

buildPluginDir = file("$buildDir/plugin")

libBuildClassesDir = file("$projectDir/lib/build/classes")
}


repositories {
mavenCentral()
}

configurations {
buildConf
testConf
compileClasspath.extendsFrom implementation
}

dependencies {
implementation('com.ibm.urbancode.plugins:groovy-plugin-utils:1.0') {transitive = false}
implementation('org.json:json:20160212') {transitive = false}

buildConf 'org.codehaus.groovy:groovy-all:1.8.8'

testConf 'junit:junit:4.13.1'
testConf 'org.hamcrest:hamcrest-core:1.3'

testImplementation 'junit:junit:4.13.1'
testImplementation 'org.hamcrest:hamcrest-core:1.3'
}

sourceSets {
main {
java { srcDirs = ['src/main/java'] }
groovy { srcDirs = ['src/main/groovy'] }
}
test {
java { srcDirs = ['src/test/java'] }
groovy { srcDirs = ['src/test/groovy'] }
}
}

tasks.register('main') {
dependsOn 'cleanBuild', 'resolve', 'compileClasses', 'buildPlugin', 'dist', 'runTests'
doLast {
println 'Plugin build complete!'
}
}

tasks.register('cleanBuild') {
description 'Clean build directory, releases directory, and lib directory'
delete buildDir
delete releasesDir
delete libDir

doLast {
mkdir buildDir
}
}

tasks.register('resolve') {
dependsOn 'cleanBuild'
doFirst {
mkdir libDir
mkdir libBuildDir
mkdir libTestDir
}

doLast {
copy {
from configurations.runtimeClasspath
into libDir
}

copy {
from configurations.buildConf
into libBuildDir
}

copy {
from configurations.testConf
into libTestDir
}
}
}


tasks.register('compileClasses') {
dependsOn 'resolve', 'compileGroovy', 'compileJava'

doLast {
mkdir libBuildClassesDir

copy {
from sourceSets.main.output.classesDirs
into libBuildClassesDir
}

println 'Classes compiled successfully'
}
}

tasks.register('buildPlugin') {
dependsOn 'resolve', 'compileClasses'

doLast {
mkdir buildPluginDir

// plugin XML files + scripts
copy {
from('plugin') {
include 'info.xml'
include 'upgrade.xml'
include 'plugin.xml'
}
from 'src/main/scripts'
into buildPluginDir
}

// license
copy {
from('license') {
include 'EPL.txt'
}
into "$buildPluginDir/license"
}

// documentation
copy {
from('doc') {
include 'HowTo.html'
include '*.docx'
}
into "$buildPluginDir/doc"
}

// libraries (excluding build and test)
copy {
from('lib') {
exclude '**/build/**'
exclude '**/test/**'
}
into "$buildPluginDir/lib"
}

// groovy source files
copy {
from('src/main/groovy') {
include '**/*.groovy'
}
into "$buildPluginDir/classes"
}

// compiled java classes
copy {
from('lib/build/classes') {
include '**/*.class'
}
into "$buildPluginDir/classes"
}
}
}

tasks.register('dist', Zip) {
description = 'Create distribution zip'
dependsOn 'resolve', 'buildPlugin'
archiveFileName = "${pluginName}-v${version}.zip"
destinationDirectory = releasesDir
from buildPluginDir
doLast {
println '[zip] Building zip: ' + file("$releasesDir/${pluginName}-v${version}.zip")
}
}

tasks.register('runTests') {
description = 'Compile and run JUnit tests ()'
dependsOn 'compileTests', 'test'
}

tasks.register('compileTests') {
description = 'Compile test Java classes (equivalent to Ant compile-tests)'
dependsOn 'compileClasses', 'compileTestJava'
}

test {
useJUnit()

reports {
junitXml.required = true
html.required = true

junitXml.outputLocation = layout.projectDirectory.dir("releases/report/xml")
html.outputLocation = layout.projectDirectory.dir("releases/report/html")
}

testLogging {
events "passed", "failed", "skipped"
}
}
Loading