diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b568ac3..a624e8a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,7 +22,7 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'temurin' - java-version: 8 + java-version: 11 cache: 'gradle' - name: Run Checks diff --git a/README.md b/README.md index b0252cf..0336b8e 100644 --- a/README.md +++ b/README.md @@ -10,9 +10,19 @@ This repo is open-source under the [Universal Permissive License](https://openso Gradle build ------------ +### Java version + +The build now targets Java 11. + +Use a Java 11 runtime when invoking `./gradlew`. + ### Tests To run all self-tests, run ./gradlew test +To run the full verification build, run + + ./gradlew check + diff --git a/build.gradle b/build.gradle index f3a836f..65f9451 100644 --- a/build.gradle +++ b/build.gradle @@ -4,8 +4,7 @@ apply plugin: 'java' repositories { mavenCentral() - jcenter() - maven{url "https://jaspersoft.jfrog.io/artifactory/third-party-ce-artifacts/"} + maven { url = uri("https://jaspersoft.jfrog.io/artifactory/third-party-ce-artifacts/") } } def formsSourceDir = file(formsSourceDir) @@ -15,13 +14,13 @@ def formsParamDir = file(formsParamDir) def errorFormFile = file(errorFormFile) task (compileErrorForm, type: JasperReportsCompile) { - srcDir file('buildSrc/src/main/resources') - outDir errorFormFile.parentFile + srcDir.set(file('buildSrc/src/main/resources')) + outDir.set(errorFormFile.parentFile) } task (compileForms, type: JasperReportsCompile) { - srcDir formsSourceDir - outDir formsOutputDir + srcDir.set(formsSourceDir) + outDir.set(formsOutputDir) } task (copyResources, type: Sync) { @@ -41,10 +40,10 @@ task (cleanPDF, type: Delete) { } task (renderForms, type: RenderFormsTask, dependsOn: [compileForms, copyResources, compileErrorForm]) { - dataDir = formsParamDir - formSrcDir = formsSourceDir - localFormDir = formsOutputDir - outputDir = formsPDFDir - errorForm = errorFormFile + dataDir.set(formsParamDir) + formSrcDir.set(formsSourceDir) + localFormDir.set(formsOutputDir) + outputDir.set(formsPDFDir) + errorForm.set(errorFormFile) } diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 94fc96f..00234d2 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -3,51 +3,55 @@ apply plugin: 'groovy' repositories { mavenCentral() - maven{url "https://jaspersoft.jfrog.io/artifactory/third-party-ce-artifacts/"} - maven{url "https://jitpack.io"} + maven { url = uri("https://jaspersoft.jfrog.io/artifactory/third-party-ce-artifacts/") } + maven { url = uri("https://jitpack.io") } } dependencies { - compile gradleApi() - compile localGroovy() + implementation gradleApi() + implementation localGroovy() // These are available only when running inside the forms repo - compile fileTree("../../../fonts") - compile 'net.sourceforge.nekohtml:nekohtml:1.9.21' - testCompile ("org.spockframework:spock-core:1.0-groovy-2.4") { + implementation fileTree("../../../fonts") + implementation 'net.sourceforge.nekohtml:nekohtml:1.9.21' + testImplementation ("org.spockframework:spock-core:2.3-groovy-3.0") { exclude group: "org.codehaus.groovy" } - compile 'com.github.riege:jasper-service-functions:1.2.5' + implementation 'com.github.riege:jasper-service-functions:1.2.5' // dependencies for com.riege.akka.* packages - compile 'org.scala-lang:scala-reflect:2.12.8' - compile 'com.typesafe.akka:akka-http-spray-json_2.12:10.1.10' - compile 'com.typesafe.akka:akka-stream_2.12:2.5.20' + implementation 'org.scala-lang:scala-reflect:2.12.8' + implementation 'com.typesafe.akka:akka-http-spray-json_2.12:10.1.10' + implementation 'com.typesafe.akka:akka-stream_2.12:2.5.20' // BEGIN AUTO-GENERATED JASPER SERVICE DEPENDENCIES - compile 'com.github.pathikrit:better-files_2.12:3.7.0' - compile 'com.google.zxing:core:3.4.0' - // compile 'com.riege:rsi-akka-json_2.12:1.1.4' - // compile 'com.riege:rsi-akka-utils_2.12:1.1.4' - compile 'com.typesafe.akka:akka-actor_2.12:2.5.20' - compile 'com.typesafe.akka:akka-slf4j_2.12:2.5.20' - compile 'net.sf.barcode4j:barcode4j:2.1' - compile 'net.sf.jasperreports:jasperreports-fonts:6.14.0' - compile 'net.sf.jasperreports:jasperreports:6.14.0' - compile 'net.sourceforge.barbecue:barbecue:1.5-beta1' - compile 'org.apache.xmlgraphics:batik-bridge:1.10' - compile 'org.apache.xmlgraphics:batik-codec:1.10' - compile 'org.apache.xmlgraphics:batik-gvt:1.10' - compile 'org.apache.xmlgraphics:batik-svg-dom:1.10' - compile 'org.scala-lang:scala-library:2.12.8' + implementation 'com.github.pathikrit:better-files_2.12:3.7.0' + implementation 'com.google.zxing:core:3.4.0' + implementation 'com.typesafe.akka:akka-actor_2.12:2.5.20' + implementation 'com.typesafe.akka:akka-slf4j_2.12:2.5.20' + implementation 'net.sf.barcode4j:barcode4j:2.1' + implementation 'net.sf.jasperreports:jasperreports-fonts:6.14.0' + implementation 'net.sf.jasperreports:jasperreports:6.14.0' + implementation 'net.sourceforge.barbecue:barbecue:1.5-beta1' + implementation 'org.apache.xmlgraphics:batik-bridge:1.10' + implementation 'org.apache.xmlgraphics:batik-codec:1.10' + implementation 'org.apache.xmlgraphics:batik-gvt:1.10' + implementation 'org.apache.xmlgraphics:batik-svg-dom:1.10' + implementation 'org.scala-lang:scala-library:2.12.8' // END AUTO-GENERATED JASPER SERVICE DEPENDENCIES } -compileGroovy { - classpath = classpath.plus(files(compileScala.destinationDir)) - dependsOn compileScala +tasks.named('compileGroovy') { + dependsOn tasks.named('compileScala') + classpath += files { + def scalaCompile = tasks.named('compileScala').get() + scalaCompile.hasProperty('destinationDirectory') + ? scalaCompile.destinationDirectory.get().asFile + : scalaCompile.destinationDir + } } test { + useJUnitPlatform() ignoreFailures = true } diff --git a/buildSrc/src/main/groovy/com/riege/scope/gradle/forms/FormRenderDataCache.groovy b/buildSrc/src/main/groovy/com/riege/scope/gradle/forms/FormRenderDataCache.groovy index bcf506d..9bc36d0 100644 --- a/buildSrc/src/main/groovy/com/riege/scope/gradle/forms/FormRenderDataCache.groovy +++ b/buildSrc/src/main/groovy/com/riege/scope/gradle/forms/FormRenderDataCache.groovy @@ -5,17 +5,15 @@ package com.riege.scope.gradle.forms -import org.gradle.api.tasks.incremental.InputFileDetails - class FormRenderDataCache { private Map cache = [:] - void invalidate(List dirtyFiles) { - dirtyFiles.each { change -> + void invalidate(Collection dirtyFiles) { + dirtyFiles.each { dirtyFile -> def it = cache.entrySet().iterator() it.forEachRemaining { entry -> - if (entry.value.hasDependency(change.file)) { + if (entry.value.hasDependency(dirtyFile)) { it.remove() } } diff --git a/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/JasperReportsCompile.groovy b/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/JasperReportsCompile.groovy index 47bf864..7329649 100644 --- a/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/JasperReportsCompile.groovy +++ b/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/JasperReportsCompile.groovy @@ -11,11 +11,15 @@ import net.sf.jasperreports.engine.SimpleJasperReportsContext import net.sf.jasperreports.engine.design.JRCompiler import net.sf.jasperreports.engine.xml.JRReportSaxParserFactory import org.gradle.api.DefaultTask -import org.gradle.api.logging.Logger +import org.gradle.api.file.DirectoryProperty +import org.gradle.api.file.FileType import org.gradle.api.tasks.* -import org.gradle.api.tasks.incremental.IncrementalTaskInputs +import org.gradle.work.ChangeType +import org.gradle.work.FileChange +import org.gradle.work.Incremental +import org.gradle.work.InputChanges -import java.awt.* +import java.awt.Color import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ForkJoinPool import java.util.concurrent.RecursiveAction @@ -25,11 +29,13 @@ import java.util.concurrent.RecursiveAction */ class JasperReportsCompile extends DefaultTask { + @Incremental @InputDirectory - File srcDir + @PathSensitive(PathSensitivity.RELATIVE) + final DirectoryProperty srcDir = project.objects.directoryProperty() @OutputDirectory - File outDir + final DirectoryProperty outDir = project.objects.directoryProperty() @Input String srcExt = '.jrxml' @@ -37,14 +43,13 @@ class JasperReportsCompile extends DefaultTask { @Input String outExt = '.jasper' + @Input boolean verbose = false - Logger log = getLogger() - protected ClassLoader cachingClassLoader @TaskAction - def execute(IncrementalTaskInputs inputs) { + def execute(InputChanges inputs) { // Disable logging for JasperReports // TODO: this does not work as Gradle uses its own logging //java.util.logging.Logger.getLogger("net.sf.jasperreports") @@ -52,12 +57,12 @@ class JasperReportsCompile extends DefaultTask { // Pre-loads AWT classes to avoid strange deadlock in the JVM. def color = new Color(0) - log.debug("Loaded colors {}", (Object) color) + logger.debug("Loaded colors {}", (Object) color) cachingClassLoader = new CachingClassLoader(getClass().classLoader) - if (!outDir.exists()) { - outDir.mkdirs() + if (!outDir.get().asFile.exists()) { + outDir.get().asFile.mkdirs() } def jasperReportsContext = new SimpleJasperReportsContext() @@ -76,58 +81,43 @@ class JasperReportsCompile extends DefaultTask { def pool = new ForkJoinPool(Runtime.runtime.availableProcessors()) - def findFormsTask = new FindFormsTask(manager, inputs) - pool.execute(findFormsTask) - findFormsTask.join() - } - - class FindFormsTask extends RecursiveAction { - - private final JasperCompileManager manager - private final IncrementalTaskInputs inputs - - FindFormsTask(JasperCompileManager manager, IncrementalTaskInputs inputs) { - this.manager = manager - this.inputs = inputs - } - - @Override - protected void compute() { - def compilationTasks = [] - inputs.outOfDate { change -> - if (change.file.name.endsWith(srcExt)) { - if (verbose) { - log.lifecycle "Found form ${change.file.name}" - } - def compileTask = new CompileFormTask(manager, change.file, toCompiledForm(change.file)) - compileTask.fork() - compilationTasks << compileTask - } + def compilationTasks = [] + inputs.getFileChanges(srcDir).each { FileChange change -> + if (change.fileType != FileType.FILE || !change.file.name.endsWith(srcExt)) { + return } - inputs.removed { change -> + + if (change.changeType == ChangeType.REMOVED) { if (verbose) { - log.lifecycle "Removed file ${change.file.name}" + logger.lifecycle "Removed file ${change.file.name}" } - def fileToRemove = toCompiledForm(change.file) - fileToRemove.delete() + toCompiledForm(change.file).delete() + return } - compilationTasks.each { CompileFormTask task -> - task.join() - } - } - private File toCompiledForm(File src) { - def form = src.absolutePath.replace(srcExt, outExt).substring(srcDir.absolutePath.length()) - def formPath = outDir.absolutePath - if (!formPath.endsWith(File.separator)) { - formPath += File.separator + if (verbose) { + logger.lifecycle "Found form ${change.file.name}" } - formPath += form - new File(formPath) + def compileTask = new CompileFormTask(manager, change.file, toCompiledForm(change.file)) + pool.execute(compileTask) + compilationTasks << compileTask } + compilationTasks.each { it.join() } } + protected File toCompiledForm(File src) { + def sourceRoot = srcDir.get().asFile + def form = src.absolutePath.replace(srcExt, outExt).substring(sourceRoot.absolutePath.length()) + def formPath = outDir.get().asFile.toString() + if (!formPath.endsWith(File.separator)) { + formPath += File.separator + } + formPath += form + new File(formPath) + } + + class CompileFormTask extends RecursiveAction { private final JasperCompileManager manager @@ -146,7 +136,7 @@ class JasperReportsCompile extends DefaultTask { protected void compute() { Thread.currentThread().setContextClassLoader(cachingClassLoader) if (verbose) { - log.lifecycle "Compiling form ${sourceForm}" + logger.lifecycle "Compiling form ${sourceForm}" } try { def destFileParent = compiledForm.getParentFile() @@ -155,7 +145,7 @@ class JasperReportsCompile extends DefaultTask { } manager.compileToFile(sourceForm.absolutePath, compiledForm.absolutePath) } catch (JRException e) { - log.lifecycle("Compiling report design '" + sourceForm.absolutePath + logger.lifecycle("Compiling report design '" + sourceForm.absolutePath + "' failed due to:\n" + e.getMessage()) throw new TaskExecutionException(JasperReportsCompile.this, e) } diff --git a/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/RenderFormsTask.groovy b/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/RenderFormsTask.groovy index edb1484..1babbd8 100644 --- a/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/RenderFormsTask.groovy +++ b/buildSrc/src/main/groovy/com/riege/scope/gradle/tasks/RenderFormsTask.groovy @@ -14,44 +14,71 @@ import com.riege.scope.gradle.forms.FormRenderDataFactory import com.riege.scope.gradle.forms.PDFWithTextSupport import com.riege.scope.gradle.forms.PdfCreator import net.sf.jasperreports.engine.JasperReport +import org.gradle.api.file.DirectoryProperty +import org.gradle.api.file.FileType +import org.gradle.api.file.RegularFileProperty import org.gradle.api.DefaultTask import org.gradle.api.tasks.InputDirectory import org.gradle.api.tasks.InputFile +import org.gradle.api.tasks.Internal import org.gradle.api.tasks.OutputDirectory +import org.gradle.api.tasks.PathSensitive +import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.TaskAction -import org.gradle.api.tasks.incremental.IncrementalTaskInputs -import org.gradle.api.tasks.incremental.InputFileDetails +import org.gradle.work.ChangeType +import org.gradle.work.FileChange +import org.gradle.work.Incremental +import org.gradle.work.InputChanges import java.nio.charset.StandardCharsets import java.util.concurrent.TimeoutException class RenderFormsTask extends DefaultTask { + @Incremental @InputDirectory - File formSrcDir + @PathSensitive(PathSensitivity.RELATIVE) + final DirectoryProperty formSrcDir = project.objects.directoryProperty() + @Incremental @InputDirectory - File localFormDir + @PathSensitive(PathSensitivity.RELATIVE) + final DirectoryProperty localFormDir = project.objects.directoryProperty() + @Incremental @InputDirectory - File dataDir + @PathSensitive(PathSensitivity.RELATIVE) + final DirectoryProperty dataDir = project.objects.directoryProperty() @OutputDirectory - File outputDir + final DirectoryProperty outputDir = project.objects.directoryProperty() @InputFile - File errorForm + final RegularFileProperty errorForm = project.objects.fileProperty() + @Internal JasperReport errorReport static FormRenderDataCache gurkenCache = new FormRenderDataCache() + @Internal def getFormPath() { - new FormPath(formSrcDir.toPath(), localFormDir.toPath()) + new FormPath(formSrcDir.get().asFile.toPath(), localFormDir.get().asFile.toPath()) } @TaskAction - def render(IncrementalTaskInputs inputs) { - LocalJasperService$.MODULE$.startUp(localFormDir.toString()) - List outOfDate = [] - List removed = [] - inputs.outOfDate { outOfDate << it } - inputs.removed { removed << it } + def render(InputChanges inputs) { + LocalJasperService$.MODULE$.startUp(localFormDir.get().asFile.toString()) + + List outOfDate = [] + List removed = [] + [formSrcDir, localFormDir, dataDir].each { inputDir -> + inputs.getFileChanges(inputDir).each { FileChange change -> + if (change.fileType != FileType.FILE) { + return + } + if (change.changeType == ChangeType.REMOVED) { + removed << change.file + } else { + outOfDate << change.file + } + } + } if (inputs.isIncremental()) { gurkenCache.invalidate(outOfDate) gurkenCache.invalidate(removed) @@ -66,9 +93,10 @@ class RenderFormsTask extends DefaultTask { } List readRenderData() { - def factory = new FormRenderDataFactory(formPath: getFormPath(), dataDir: dataDir.toPath()) + def dataDirectory = dataDir.get().asFile + def factory = new FormRenderDataFactory(formPath: getFormPath(), dataDir: dataDirectory.toPath()) def renderList = [] - dataDir.eachFileRecurse { file -> + dataDirectory.eachFileRecurse { file -> if (isLegacyFile(file)) { logger.warn("Ignoring ${file}. HTML files are no longer supported. Please use the JSON file instead.") } @@ -91,15 +119,17 @@ class RenderFormsTask extends DefaultTask { file.name.matches(".*\\.json") && file.isFile() } - Set calculateRebuildSet(renderList, ArrayList outOfDate, ArrayList removed) { + Set calculateRebuildSet(List renderList, Collection outOfDate, Collection removed) { + def outputDirectory = outputDir.get().asFile def rebuildSet = new HashSet() - outOfDate.each { change -> - rebuildSet.addAll(renderList.findAll { it.dependencies.contains(change.file) }) + outOfDate.each { changedFile -> + rebuildSet.addAll(renderList.findAll { it.dependencies.contains(changedFile) }) } - removed.each { change -> - rebuildSet.addAll(rebuildEntriesForRemovedFile(renderList, change.file)) - if (change.file.getCanonicalPath().startsWith(dataDir.getCanonicalPath())) { - def relativeFile = new File(outputDir, removedOutputName(change.file)) + removed.each { removedFile -> + rebuildSet.addAll(rebuildEntriesForRemovedFile(renderList, removedFile)) + def dataDirPath = dataDir.get().asFile.getCanonicalPath() + if (removedFile.getCanonicalPath().startsWith(dataDirPath)) { + def relativeFile = new File(outputDirectory, removedOutputName(removedFile)) println "Removing ${relativeFile.absolutePath}" relativeFile.delete() } @@ -131,7 +161,7 @@ class RenderFormsTask extends DefaultTask { } void writePdfToOutputDir(String fileName, byte[] pdf) { - def outputFile = new File(outputDir, fileName) + def outputFile = new File(outputDir.get().asFile, fileName) outputFile.parentFile.mkdirs() outputFile.withOutputStream { it.write(pdf) } } @@ -159,7 +189,7 @@ class RenderFormsTask extends DefaultTask { JasperReport loadErrorForm() { if (errorReport == null) { - errorReport = errorForm.toPath().withObjectInputStream(Thread.currentThread().getContextClassLoader()) { + errorReport = errorForm.get().asFile.toPath().withObjectInputStream(Thread.currentThread().getContextClassLoader()) { it.readObject() as JasperReport } } @@ -167,7 +197,7 @@ class RenderFormsTask extends DefaultTask { } def relativeToDataDir(File dataFile) { - dataDir.toPath().relativize(dataFile.toPath()).toFile() + dataDir.get().asFile.toPath().relativize(dataFile.toPath()).toFile() } Collection rebuildEntriesForRemovedFile(Collection renderList, File removedFile) { diff --git a/buildSrc/src/test/groovy/com/riege/scope/gradle/forms/FormRenderDataCacheSpec.groovy b/buildSrc/src/test/groovy/com/riege/scope/gradle/forms/FormRenderDataCacheSpec.groovy index 4430c67..31688d8 100644 --- a/buildSrc/src/test/groovy/com/riege/scope/gradle/forms/FormRenderDataCacheSpec.groovy +++ b/buildSrc/src/test/groovy/com/riege/scope/gradle/forms/FormRenderDataCacheSpec.groovy @@ -5,7 +5,6 @@ package com.riege.scope.gradle.forms -import org.gradle.api.tasks.incremental.InputFileDetails import spock.lang.Specification class FormRenderDataCacheSpec extends Specification { @@ -63,7 +62,7 @@ class FormRenderDataCacheSpec extends Specification { def oldData2 = data2 data2 = new FormRenderData() when: - cache.invalidate([[file: dep1]] as List) + cache.invalidate([dep1]) then: cache.get(file1, testFiles) == data1 cache.get(file2, testFiles) == oldData2 diff --git a/buildSrc/src/test/groovy/com/riege/scope/gradle/tasks/RenderFormsTaskSpec.groovy b/buildSrc/src/test/groovy/com/riege/scope/gradle/tasks/RenderFormsTaskSpec.groovy index f68e8fb..a813ddb 100644 --- a/buildSrc/src/test/groovy/com/riege/scope/gradle/tasks/RenderFormsTaskSpec.groovy +++ b/buildSrc/src/test/groovy/com/riege/scope/gradle/tasks/RenderFormsTaskSpec.groovy @@ -5,7 +5,6 @@ package com.riege.scope.gradle.tasks -import org.gradle.api.tasks.incremental.InputFileDetails import org.gradle.testfixtures.ProjectBuilder import spock.lang.Specification @@ -42,11 +41,11 @@ class RenderFormsTaskSpec extends Specification { File tempDir = File.createTempDir("RenderFormsTaskSpec", "") def project = ProjectBuilder.builder().build() def task = project.task('testTask', type: RenderFormsTask) { - dataDir = new File("src/test/resources") - localFormDir = new File("src/test/resources") - formSrcDir = new File("src/test/resources") - outputDir = tempDir - errorForm = new File("src/test/resources/ErrorPDF.jasper") + dataDir.set(new File("src/test/resources")) + localFormDir.set(new File("src/test/resources")) + formSrcDir.set(new File("src/test/resources")) + outputDir.set(tempDir) + errorForm.set(new File("src/test/resources/ErrorPDF.jasper")) } when: @@ -72,13 +71,13 @@ class RenderFormsTaskSpec extends Specification { outputFile.text = "stale" def project = ProjectBuilder.builder().build() def task = project.task('testTaskDeleteTxt', type: RenderFormsTask) { - dataDir = tempDataDir - outputDir = tempOutputDir - localFormDir = dataDir - formSrcDir = dataDir - errorForm = new File("src/test/resources/ErrorPDF.jasper") + dataDir.set(tempDataDir) + outputDir.set(tempOutputDir) + localFormDir.set(tempDataDir) + formSrcDir.set(tempDataDir) + errorForm.set(new File("src/test/resources/ErrorPDF.jasper")) } - def removed = [Stub(InputFileDetails) { getFile() >> removedInput }] as ArrayList + def removed = [removedInput] when: task.calculateRebuildSet([], [] as ArrayList, removed) @@ -104,13 +103,13 @@ class RenderFormsTaskSpec extends Specification { def renderData = new com.riege.scope.gradle.forms.FormRenderData(file: pdfInput, fileName: "nested/document.json") def project = ProjectBuilder.builder().build() def task = project.task('testTaskRebuildSiblingPdf', type: RenderFormsTask) { - dataDir = tempDataDir - outputDir = tempOutputDir - localFormDir = dataDir - formSrcDir = dataDir - errorForm = new File("src/test/resources/ErrorPDF.jasper") + dataDir.set(tempDataDir) + outputDir.set(tempOutputDir) + localFormDir.set(tempDataDir) + formSrcDir.set(tempDataDir) + errorForm.set(new File("src/test/resources/ErrorPDF.jasper")) } - def removed = [Stub(InputFileDetails) { getFile() >> removedInput }] as ArrayList + def removed = [removedInput] when: def rebuildSet = task.calculateRebuildSet([renderData], [] as ArrayList, removed) diff --git a/gradle.properties b/gradle.properties index 58b9000..f2d0379 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,5 +4,4 @@ formsPDFDir = build/pdf formsParamDir = formData errorFormFile = build/errorForm/ErrorPDF.jasper org.gradle.jvmargs=-Xmx2048M -org.gradle.daemon=false systemProp.org.apache.batik.warn_destination=false diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 44e7c4d..b413873 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.2.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.5-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index ad6d902..af6708f 100755 --- a/gradlew +++ b/gradlew @@ -28,7 +28,7 @@ APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='' +DEFAULT_JVM_OPTS='"-Xmx64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" diff --git a/gradlew.bat b/gradlew.bat index f955316..6d57edc 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS= +set DEFAULT_JVM_OPTS="-Xmx64m" @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome diff --git a/tools/copy_source_from_jasper_service.sh b/tools/copy_source_from_jasper_service.sh index 9dab41f..d1ac3ba 100755 --- a/tools/copy_source_from_jasper_service.sh +++ b/tools/copy_source_from_jasper_service.sh @@ -19,29 +19,6 @@ function copy_source_file { echo Copied "$1" } -if [ "$JASPER_SERVICE/build.sbt" -nt deps ]; then - echo Getting dependencies from SBT ... - (cd "$JASPER_SERVICE" && ./sbt -Dsbt.log.noformat=true server/libraryDependencies) > deps -else - echo Using cached deps file -fi - -# Convert SBT output to dependency spec for Gradle -grep '*' deps | sed | awk '{print $3}' | sort | grep -Ff "tools/deplist" | sed -e "s/^/ compile '/" -e "s/$/'/" > deps_for_gradle - -# Scala libraries follow the convention of embedding the Scala version in the name -sed -i '' -E '/akka|better-files/ s/(:[0-9])/_2.12\1/' deps_for_gradle - -# Replace the auto-generated block of build.gradle -sed -i '' -n \ - -e "1,/\/\/ BEGIN AUTO-GENERATED / p" \ - -e"/\/\/ END AUTO-GENERATED /,$ p" \ - -e "/\/\/ BEGIN AUTO-GENERATED / r deps_for_gradle" \ - "buildSrc/build.gradle" -echo Written dependencies to "buildSrc/build.gradle" - -rm deps_for_gradle - copy_source_file src/main/scala/com/riege/jasperservice/frontend/JasperServiceProtocol.scala copy_source_file src/main/scala/com/riege/jasperservice/backend/BackendException.scala copy_source_file src/main/scala/com/riege/jasperservice/backend/PrintException.scala