helma/build.gradle

179 lines
4.4 KiB
Groovy

def jettyLogLevel = '-Dorg.eclipse.jetty.LEVEL=WARN'
allprojects {
apply plugin: 'java'
compileJava {
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
}
}
apply plugin: 'application'
version = new Date().format("yyyyMMdd")
tasks.build.dependsOn javadoc
tasks.compileJava.dependsOn 'processSource'
sourceSets {
main {
java {
// Sources in `src` will be available here after processing
srcDirs = ["$buildDir/src/main/java"]
}
}
}
repositories {
mavenCentral()
jcenter()
}
configurations {
// Wrapping implementation because it does not allow access to its files
// (i.e. cannot be resolved)
library.extendsFrom implementation
}
dependencies {
implementation 'commons-codec:commons-codec:1.10'
implementation 'commons-fileupload:commons-fileupload:1.4'
implementation 'commons-logging:commons-logging:1.2'
implementation 'commons-net:commons-net:3.6'
implementation 'com.sun.activation:javax.activation:1.2.0'
implementation 'javax.mail:javax.mail-api:1.6.2'
implementation 'javax.servlet:javax.servlet-api:4.0.1'
implementation 'org.ccil.cowan.tagsoup:tagsoup:1.2.1'
implementation 'org.eclipse.jetty:jetty-servlet:9.4.18.v20190429'
implementation 'org.eclipse.jetty:jetty-xml:9.4.18.v20190429'
implementation 'org.mozilla:rhino:1.7.12'
implementation 'xerces:xercesImpl:2.12.0'
implementation 'xmlrpc:xmlrpc:2.0.1'
}
startScripts {
applicationName = 'helma'
classpath = files('../launcher.jar')
mainClassName = 'helma.main.launcher.Main'
defaultJvmOpts = [jettyLogLevel]
doLast {
// Work-around to make the classpath above work (launcher.jar is located outside of `lib` dir)
// See https://discuss.gradle.org/t/classpath-in-application-plugin-is-building-always-relative-to-app-home-lib-directory/2012
def unixScriptFile = file getUnixScript()
def windowsScriptFile = file getWindowsScript()
unixScriptFile.text = unixScriptFile.text.replace('$APP_HOME/lib', '$APP_HOME')
windowsScriptFile.text = windowsScriptFile.text.replace('%APP_HOME%\\lib', '%APP_HOME%')
}
}
distributions {
main {
contents {
from project(':launcher').jar
}
}
}
applicationDistribution.from(projectDir) {
include 'modules/**'
include 'LICENSE.md'
include 'README.md'
include 'start.*'
}
applicationDistribution.from(javadoc.destinationDir) {
include '**'
into 'docs'
}
distTar {
compression = Compression.GZIP
}
installDist {
dependsOn javadoc
finalizedBy 'update'
}
run {
classpath = files('launcher.jar')
jvmArgs jettyLogLevel
}
task processSource(type: Sync) {
def date = new Date().format("MMMM dd, yyyy")
def gitOutput = new ByteArrayOutputStream()
exec {
commandLine 'git', 'describe'
standardOutput = gitOutput
errorOutput = new ByteArrayOutputStream()
ignoreExitValue = true
}
def description = date
def tag = gitOutput.toString().trim()
// TODO: Implement extended description in Java code
if (tag) description = "$tag; $description"
from 'src'
filter {
line -> line.replaceAll('__builddate__', date)
} into "${project.buildDir}/src"
}
task update {
def rsyncArgs = ['-a', '--info=progress2', '--exclude', 'backups']
def confirm = {
ant.input(message: 'Update this installation?', validargs: 'y,n', addproperty: 'continue')
return ant.continue == 'y'
}
onlyIf { confirm() }
doFirst {
def backupDir = 'backups/' + new Date().format('yyyyMMdd-HHmmss')
mkdir backupDir
exec {
// Using rsync instead of a CopyTask because the latter chokes on multi-byte characters
// See https://github.com/gradle/gradle/issues/789
executable 'rsync'
args rsyncArgs
args "$projectDir/", backupDir
}
}
doLast {
exec {
// Using rsync instead of installDist task because it does not overwrite the project directory
executable 'rsync'
args rsyncArgs
args '--exclude', 'bin'
args "${installDist.destinationDir}/", projectDir
}
}
}
task shell(type: JavaExec) {
def rhinoJar = configurations.library.files.find { f ->
f.name.startsWith('rhino')
}
classpath = files(rhinoJar)
main = 'org.mozilla.javascript.tools.shell.Main'
standardInput = System.in
}
task commandLine(type: JavaExec) {
classpath = files('launcher.jar')
main = 'helma.main.launcher.Commandline'
args '-h', projectDir, 'manage.getAllApplications'
}