id 'application'
id 'eclipse'
id "com.diffplug.gradle.spotless" version "3.28.0"
- id 'com.github.johnrengelman.shadow' version '4.0.3'
+ id 'com.github.johnrengelman.shadow' version '6.0.0'
id 'com.install4j.gradle' version '10.0.3'
id 'com.dorongold.task-tree' version '2.1.1' // only needed to display task dependency tree with gradle task1 [task2 ...] taskTree
id 'com.palantir.git-version' version '0.13.0' apply false
eclipseWorkspace = null
eclipseBinary = string("")
eclipseVersion = string("")
+ eclipseProductVersion = string("")
eclipseDebug = false
jalviewjsChromiumUserDir = "${jalviewjsBuildDir}/${jalviewjs_chromium_user_dir}"
}
}
+task testTask2(type: Test) {
+ group = "Verification"
+ description = "Tests that need to be isolated from the main test run"
+ useTestNG() {
+ includeGroups name
+ excludeGroups testng_excluded_groups.split(",")
+ preserveOrder true
+ useDefaultListeners=true
+ }
+}
+task testTask3(type: Test) {
+ group = "Verification"
+ description = "Tests that need to be isolated from the main test run"
+ useTestNG() {
+ includeGroups name
+ excludeGroups testng_excluded_groups.split(",")
+ preserveOrder true
+ useDefaultListeners=true
+ }
+}
+
/* insert more testTaskNs here -- change N to next digit or other string */
/*
task testTaskN(type: Test) {
showExceptions true
showCauses true
showStackTraces true
-
+ if (test_output) {
+ showStandardStreams true
+ }
info.events = [ TestLogEvent.FAILED ]
}
+ if (OperatingSystem.current().isMacOsX()) {
+ testTask.systemProperty "apple.awt.UIElement", "true"
+ testTask.environment "JAVA_TOOL_OPTIONS", "-Dapple.awt.UIElement=true"
+ }
ignoreFailures = true // Always try to run all tests for all modules
if (buildDist) {
dependsOn makeDist
}
- from ("${jalviewDir}/${libDistDir}") {
- include("*.jar")
- }
- manifest {
- attributes "Implementation-Version": JALVIEW_VERSION,
- "Application-Name": applicationName
+
+ def jarFiles = fileTree(dir: "${jalviewDir}/${libDistDir}", include: "*.jar", exclude: "regex.jar").getFiles()
+ def groovyJars = jarFiles.findAll {it1 -> file(it1).getName().startsWith("groovy-swing")}
+ def otherJars = jarFiles.findAll {it2 -> !file(it2).getName().startsWith("groovy-swing")}
+ from groovyJars
+ from otherJars
+
+ // we need to include the groovy-swing Include-Package for it to run in the shadowJar
+ doFirst {
+ def jarFileManifests = []
+ groovyJars.each { jarFile ->
+ def mf = zipTree(jarFile).getFiles().find { it.getName().equals("MANIFEST.MF") }
+ if (mf != null) {
+ jarFileManifests += mf
+ }
+ }
+
+ manifest {
+ attributes "Implementation-Version": JALVIEW_VERSION, "Application-Name": applicationName
+ from (jarFileManifests) {
+ eachEntry { details ->
+ if (!details.key.equals("Import-Package")) {
+ details.exclude()
+ }
+ }
+ }
+ }
}
duplicatesStrategy "INCLUDE"
into project.name
def EXCLUDE_FILES=[
+ "dist/*",
"build/*",
"bin/*",
"test-output/",
task jalviewjsEclipsePaths {
- def eclipseProduct
+ def eclipseProductFile
+ def eclipseSetupLog
def eclipseRoot = jalviewjs_eclipse_root
if (eclipseRoot.startsWith("~/")) {
if (OperatingSystem.current().isMacOsX()) {
eclipseRoot += "/Eclipse.app"
eclipseBinary = "${eclipseRoot}/Contents/MacOS/eclipse"
- eclipseProduct = "${eclipseRoot}/Contents/Eclipse/.eclipseproduct"
+ eclipseProductFile = "${eclipseRoot}/Contents/Eclipse/.eclipseproduct"
+ eclipseSetupLog = "${eclipseRoot}/Contents/Eclipse/configuration/org.eclipse.oomph.setup/setup.log"
} else if (OperatingSystem.current().isWindows()) { // check these paths!!
if (file("${eclipseRoot}/eclipse").isDirectory() && file("${eclipseRoot}/eclipse/.eclipseproduct").exists()) {
eclipseRoot += "/eclipse"
}
eclipseBinary = "${eclipseRoot}/eclipse.exe"
- eclipseProduct = "${eclipseRoot}/.eclipseproduct"
+ eclipseProductFile = "${eclipseRoot}/.eclipseproduct"
+ eclipseSetupLog = "${eclipseRoot}/configuration/org.eclipse.oomph.setup/setup.log"
} else { // linux or unix
if (file("${eclipseRoot}/eclipse").isDirectory() && file("${eclipseRoot}/eclipse/.eclipseproduct").exists()) {
eclipseRoot += "/eclipse"
-println("eclipseDir exists")
}
eclipseBinary = "${eclipseRoot}/eclipse"
- eclipseProduct = "${eclipseRoot}/.eclipseproduct"
+ eclipseProductFile = "${eclipseRoot}/.eclipseproduct"
+ eclipseSetupLog = "${eclipseRoot}/configuration/org.eclipse.oomph.setup/setup.log"
}
- eclipseVersion = "4.13" // default
+ eclipseVersion = "unknown" // default
def assumedVersion = true
- if (file(eclipseProduct).exists()) {
- def fis = new FileInputStream(eclipseProduct)
+ if (file(eclipseProductFile).exists()) {
+ def fis = new FileInputStream(eclipseProductFile)
def props = new Properties()
props.load(fis)
eclipseVersion = props.getProperty("version")
fis.close()
assumedVersion = false
}
+ if (file(eclipseSetupLog).exists()) {
+ def productRegex = /(?m)^\[[^\]]+\]\s+Product\s+(org\.eclipse.\S*)/
+ int lineCount = 0
+ file(eclipseSetupLog).eachLine { String line ->
+ def matcher = line =~ productRegex
+ if (matcher.size() > 0) {
+ eclipseProductVersion = matcher[0][1]
+ return true
+ }
+ if (lineCount >= 100) {
+ return true
+ }
+ lineCount++
+ }
+ }
def propKey = "eclipse_debug"
eclipseDebug = (project.hasProperty(propKey) && project.getProperty(propKey).equals("true"))
if (!assumedVersion) {
println("ECLIPSE VERSION=${eclipseVersion}")
+ if (eclipseProductVersion.length() != 0) {
+ println("ECLIPSE PRODUCT=${eclipseProductVersion}")
+ }
}
}
}
def logOutFileName = "${jalviewDirAbsolutePath}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}"
def logOutFile = file(logOutFileName)
logOutFile.createNewFile()
- logOutFile.text = """ROOT: ${jalviewjs_eclipse_root}
-BINARY: ${eclipseBinary}
-VERSION: ${eclipseVersion}
-WORKSPACE: ${eclipseWorkspace}
-DEBUG: ${eclipseDebug}
+ def info = """ROOT: ${jalviewjs_eclipse_root}
+ECLIPSE BINARY: ${eclipseBinary}
+ECLIPSE VERSION: ${eclipseVersion}
+ECLIPSE PRODUCT: ${eclipseProductVersion}
+ECLIPSE WORKSPACE: ${eclipseWorkspace}
+ECLIPSE DEBUG: ${eclipseDebug}
----
"""
def logOutFOS = new FileOutputStream(logOutFile, true) // true == append
logErrFOS,
stderr)
}
+ standardOutput.write(string(info).getBytes("UTF-8"))
}
doLast {
- if (stdout.toString().contains("Error processing ")) {
+ def transpileError = false
+ def j2sIsActive = false
+ def j2sBuildStarting = false
+ def compilingLines = 0
+ def j2sBuildingJavascript = false
+ def j2sBuildingJavascriptRegex = /(?m)^J2S building JavaScript for (\d+) files/
+ def numFiles = 0
+ def transpilingLines = 0
+ stdout.toString().eachLine { String line ->
+ if (line.startsWith("J2S isActive true")) {
+ j2sIsActive = true
+ }
+ if (line.startsWith("J2S buildStarting")) {
+ j2sBuildStarting = true
+ }
+ if (line =~ / Compiling /) {
+ compilingLines++
+ }
+ if (!j2sBuildingJavascript) {
+ def matcher = line =~ j2sBuildingJavascriptRegex
+ if (matcher.size() > 0) {
+ numFiles = Integer.valueOf(matcher[0][1])
+ j2sBuildingJavascript = true
+ }
+ }
+ if (line.startsWith("J2S transpiling ")) {
+ transpilingLines++
+ }
+ if (line.contains("Error processing ")) {
+ transpileError = true
+ }
+ }
+
+ println("J2S IS ACTIVE=${j2sIsActive}")
+ println("J2S BUILD STARTING=${j2sBuildStarting}")
+ println("J2S BUILDING JAVASCRIPT=${j2sBuildingJavascript}")
+ println("NUM FILES=${numFiles}")
+ println("COMPILING LINES=${compilingLines}")
+ println("TRANSPILING LINES=${transpilingLines}")
+ println("TRANSPILE ERROR=${transpileError}")
+
+ if (!j2sIsActive
+ || transpileError
+ || (j2sBuildStarting && transpilingLines == 0)
+ || (transpilingLines < compilingLines)
+ || (transpilingLines != numFiles)
+ ) {
// j2s did not complete transpile
- //throw new TaskExecutionException("Error during transpilation:\n${stderr}\nSee eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")
if (jalviewjs_ignore_transpile_errors.equals("true")) {
println("IGNORING TRANSPILE ERRORS")
println("See eclipse transpile log file '${jalviewDir}/${jalviewjsBuildDir}/${jalviewjs_j2s_transpile_stdout}'")