219 lines
5 KiB
Groovy
219 lines
5 KiB
Groovy
plugins {
|
|
id 'com.github.jk1.dependency-license-report' version '2.5'
|
|
}
|
|
|
|
def helmaInstallDir = "${rootProject.buildDir}/install/antclick"
|
|
|
|
tasks.build.dependsOn ':build', 'assemble'
|
|
|
|
clean {
|
|
delete helmaInstallDir
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'com.h2database:h2:2.2.220'
|
|
}
|
|
|
|
configurations {
|
|
// Wrapping implementation because it does not allow access to its files
|
|
// (i.e. cannot be resolved)
|
|
library.extendsFrom implementation
|
|
}
|
|
|
|
assemble {
|
|
group 'build'
|
|
dependsOn ':assemble'
|
|
dependsOn 'installHelma'
|
|
dependsOn 'installAntville'
|
|
dependsOn 'installJars'
|
|
dependsOn 'buildDatabase'
|
|
dependsOn 'buildLicenses'
|
|
}
|
|
|
|
task downloadHelma {
|
|
def url = rootProject.ext['helma.download.url']
|
|
def outputFile = file("${rootProject.buildDir}/tmp/helma.tgz")
|
|
|
|
outputs.file outputFile
|
|
|
|
doLast {
|
|
new URL(url).withInputStream { inputStream ->
|
|
outputFile.withOutputStream { it << inputStream }
|
|
}
|
|
}
|
|
}
|
|
|
|
// See https://docs.gradle.org/current/userguide/working_with_files.html#sec:unpacking_archives_example
|
|
tasks.register('installHelma', Copy) {
|
|
description 'Download and extract the Helma package.'
|
|
group 'installation'
|
|
dependsOn 'downloadHelma'
|
|
|
|
def inputFile = "${rootProject.buildDir}/tmp/helma.tgz"
|
|
def outputDir = helmaInstallDir
|
|
|
|
inputs.file inputFile
|
|
outputs.dir outputDir
|
|
|
|
from tarTree(inputFile).matching {
|
|
exclude '*/apps/test/**'
|
|
exclude '*/apps/welcome/**'
|
|
exclude '*/db/welcome/**'
|
|
exclude '*/docs/**'
|
|
exclude '*/extras/**'
|
|
|
|
eachFile { f ->
|
|
f.relativePath = new RelativePath(true, f.relativePath.segments.drop(1))
|
|
}
|
|
|
|
includeEmptyDirs = false
|
|
} into outputDir
|
|
}
|
|
|
|
tasks.register('installAntville', Copy) {
|
|
description 'Install Antville as Helma application'
|
|
group 'installation'
|
|
dependsOn ':assemble', ':installAntville', 'installHelma', 'buildLicenses'
|
|
|
|
def appsProperties = "$antvilleBuildDir/tools/antclick/apps.properties"
|
|
def outputDir = "$helmaInstallDir/apps/antville"
|
|
|
|
inputs.dir antvilleInstallDir
|
|
inputs.file appsProperties
|
|
|
|
outputs.dir outputDir
|
|
outputs.file appsProperties
|
|
|
|
from antvilleInstallDir
|
|
into outputDir
|
|
|
|
doLast {
|
|
copy {
|
|
from appsProperties
|
|
into helmaInstallDir
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.register('installJars', Copy) {
|
|
description 'Download additional JAR libraries.'
|
|
group 'Installation'
|
|
dependsOn 'installHelma'
|
|
|
|
def outputDir = "$helmaInstallDir/lib/ext"
|
|
|
|
inputs.files configurations.runtimeClasspath
|
|
outputs.dir outputDir
|
|
|
|
from configurations.runtimeClasspath
|
|
into outputDir
|
|
}
|
|
|
|
tasks.register('buildDatabase', JavaExec) {
|
|
description 'Builds the H2 SQL database file.'
|
|
group 'build'
|
|
dependsOn ':assemble'
|
|
|
|
def inputFile = "$antvilleInstallDir/db/postgre.sql"
|
|
def outputDir = "$helmaInstallDir/db"
|
|
|
|
inputs.file inputFile
|
|
outputs.files "$outputDir/antville.mv.db"
|
|
|
|
def h2Jar = configurations.library.files.find { jar ->
|
|
jar.name.startsWith('h2')
|
|
}
|
|
|
|
classpath = files(h2Jar)
|
|
mainClass = 'org.h2.tools.RunScript'
|
|
|
|
args = [
|
|
'-continueOnError',
|
|
'-script', inputFile,
|
|
'-url', "jdbc:h2:$outputDir/antville",
|
|
'-user', 'antville',
|
|
'-password', 'antville'
|
|
]
|
|
|
|
standardOutput = new ByteArrayOutputStream()
|
|
ignoreExitValue true
|
|
}
|
|
|
|
tasks.register('buildLicenses', Copy) {
|
|
description 'Build license files from server-side dependecies.'
|
|
group 'build'
|
|
dependsOn 'installJars'
|
|
|
|
def licensesDir = "$helmaInstallDir/licenses"
|
|
|
|
inputs.files generateLicenseReport
|
|
outputs.dir licensesDir
|
|
|
|
from generateLicenseReport
|
|
into licensesDir
|
|
}
|
|
|
|
task assembleDist {
|
|
description 'Creates the AntClick download packages.'
|
|
group 'distribution'
|
|
|
|
dependsOn 'assemble'
|
|
dependsOn 'distZip'
|
|
dependsOn 'distTar'
|
|
}
|
|
|
|
tasks.register('runH2Console', JavaExec) {
|
|
description 'Runs the H2 SQL database console.'
|
|
group 'Help'
|
|
dependsOn 'installJars'
|
|
|
|
def h2Jar = configurations.library.files.find { jar ->
|
|
jar.name.startsWith('h2')
|
|
}
|
|
|
|
classpath = files(h2Jar)
|
|
|
|
args = [
|
|
'-url', "jdbc:h2:$helmaInstallDir/db/antville",
|
|
'-user', 'antville',
|
|
'-password', 'antville'
|
|
]
|
|
|
|
// standardOutput = new ByteArrayOutputStream()
|
|
// ignoreExitValue true
|
|
}
|
|
|
|
tasks.register('distZip', Zip) {
|
|
description 'Creates the AntClick download package as Zip file.'
|
|
group 'distribution'
|
|
dependsOn 'assemble'
|
|
|
|
def version = project.distVersion()
|
|
def outputDir = "${rootProject.buildDir}/distributions"
|
|
def outputFile = "antclick-${version}.zip"
|
|
|
|
inputs.dir helmaInstallDir
|
|
outputs.file "$outputDir/$outputFile"
|
|
|
|
from helmaInstallDir
|
|
destinationDirectory = file(outputDir)
|
|
archiveFileName = outputFile
|
|
}
|
|
|
|
tasks.register('distTar', Tar) {
|
|
description 'Creates the AntClick download package as Bzip2 file.'
|
|
group 'distribution'
|
|
dependsOn 'assemble'
|
|
|
|
def version = project.distVersion()
|
|
def outputDir = "${rootProject.buildDir}/distributions"
|
|
def outputFile = "antclick-${version}.tbz"
|
|
|
|
inputs.dir helmaInstallDir
|
|
outputs.file "$outputDir/$outputFile"
|
|
|
|
from helmaInstallDir
|
|
compression = Compression.BZIP2
|
|
destinationDirectory = file(outputDir)
|
|
archiveFileName = outputFile
|
|
}
|