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
 | |
| }
 |