helma/build.gradle

180 lines
4.4 KiB
Groovy
Raw Normal View History

def jettyLogLevel = '-Dorg.eclipse.jetty.LEVEL=WARN'
2020-03-16 16:53:52 +01:00
allprojects {
apply plugin: 'java'
2020-03-16 16:53:52 +01:00
compileJava {
sourceCompatibility = JavaVersion.VERSION_1_6
targetCompatibility = JavaVersion.VERSION_1_6
}
}
apply plugin: 'application'
2020-03-16 16:53:52 +01:00
version = new Date().format("yyyyMMdd")
2020-03-16 16:53:52 +01:00
tasks.build.dependsOn javadoc
tasks.compileJava.dependsOn 'processSource'
2020-03-16 16:53:52 +01:00
sourceSets {
main {
java {
// Sources in `src` will be available here after processing
2020-03-16 16:53:52 +01:00
srcDirs = ["$buildDir/src/main/java"]
}
}
}
repositories {
2020-03-15 12:23:18 +01:00
mavenCentral()
jcenter()
}
2020-03-16 16:53:52 +01:00
configurations {
// Wrapping implementation because it does not allow access to its files
// (i.e. cannot be resolved)
library.extendsFrom implementation
}
dependencies {
2020-03-15 12:23:18 +01:00
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'
}
2020-03-16 16:53:52 +01:00
distTar {
compression = Compression.GZIP
}
installDist {
dependsOn javadoc
finalizedBy 'update'
}
run {
classpath = files('launcher.jar')
jvmArgs jettyLogLevel
2020-03-16 16:53:52 +01:00
}
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
2020-03-16 16:53:52 +01:00
}
def description = date
def tag = gitOutput.toString().trim()
2020-03-16 16:53:52 +01:00
// TODO: Implement extended description in Java code
if (tag) description = "$tag; $description"
2020-03-16 16:53:52 +01:00
from 'src'
filter {
line -> line.replaceAll('__builddate__', date)
} into "${project.buildDir}/src"
2020-03-16 16:53:52 +01:00
}
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'
}