X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=build.gradle;h=4cc8a53f15d19c715c49568407b68b1cea81c90b;hb=refs%2Fheads%2Fimprovement%2FJAL-3847_add_dependencies_reported_by_gradle_7;hp=7146d318a016786031de1543f4ee74d29275a8d3;hpb=10e125b60d03d284571d4b5a682f4449a936e4ff;p=jalview.git diff --git a/build.gradle b/build.gradle index 7146d31..4cc8a53 100644 --- a/build.gradle +++ b/build.gradle @@ -40,9 +40,9 @@ plugins { id 'eclipse' id "com.diffplug.gradle.spotless" version "3.28.0" id 'com.github.johnrengelman.shadow' version '4.0.3' - id 'com.install4j.gradle' version '8.0.10' + id 'com.install4j.gradle' version '9.0.6' id 'com.dorongold.task-tree' version '1.5' // only needed to display task dependency tree with gradle task1 [task2 ...] taskTree - id 'com.palantir.git-version' version '0.12.3' + id 'com.palantir.git-version' version '0.13.0' apply false } repositories { @@ -52,6 +52,7 @@ repositories { } + // in ext the values are cast to Object. Ensure string values are cast as String (and not GStringImpl) for later use def string(Object o) { return o == null ? "" : o.toString() @@ -102,6 +103,7 @@ ext { // Import channel_properties channelDir = string("${jalviewDir}/${channel_properties_dir}/${propertiesChannelName}") channelGradleProperties = string("${channelDir}/channel_gradle.properties") + channelPropsFile = string("${channelDir}/${resource_dir}/${channel_props}") overrideProperties(channelGradleProperties, false) // local build environment properties // can be "projectDir/local.properties" @@ -113,7 +115,7 @@ ext { // Import releaseProps from the RELEASE file // or a file specified via JALVIEW_RELEASE_FILE if defined // Expect jalview.version and target release branch in jalview.release - def releaseProps = new Properties(); + releaseProps = new Properties(); def releasePropFile = findProperty("JALVIEW_RELEASE_FILE"); def defaultReleasePropFile = "${jalviewDirAbsolutePath}/RELEASE"; try { @@ -204,7 +206,7 @@ ext { install4jDMGDSStore = "${install4j_images_dir}/${install4j_dmg_ds_store}" install4jDMGBackgroundImage = "${install4j_images_dir}/${install4j_dmg_background}" install4jInstallerName = "${jalview_name} Non-Release Installer" - install4jExecutableName = jalview_name.replaceAll("[^\\w]+", "_").toLowerCase() + install4jExecutableName = install4j_executable_name install4jExtraScheme = "jalviewx" install4jMacIconsFile = string("${install4j_images_dir}/${install4j_mac_icons_file}") install4jWindowsIconsFile = string("${install4j_images_dir}/${install4j_windows_icons_file}") @@ -370,6 +372,7 @@ ext { .replaceAll("_*-_*", "-") // collapse _-_ .toLowerCase() + getdownWrapperLink = install4jUnixApplicationFolder // e.g. "jalview_local" getdownAppDir = string("${getdownWebsiteDir}/${getdownAppDistDir}") //getdownJ11libDir = "${getdownWebsiteDir}/${getdown_j11lib_dir}" getdownResourceDir = string("${getdownWebsiteDir}/${getdown_resource_dir}") @@ -380,9 +383,21 @@ ext { modules_compileClasspath = fileTree(dir: "${jalviewDir}/${j11modDir}", include: ["*.jar"]) modules_runtimeClasspath = modules_compileClasspath */ - def details = versionDetails() - gitHash = details.gitHash - gitBranch = details.branchName + + gitHash = "SOURCE" + gitBranch = "Source" + try { + apply plugin: "com.palantir.git-version" + def details = versionDetails() + gitHash = details.gitHash + gitBranch = details.branchName + } catch(org.gradle.api.internal.plugins.PluginApplicationException e) { + println("Not in a git repository. Using git values from RELEASE properties file.") + gitHash = releaseProps.getProperty("git.hash") + gitBranch = releaseProps.getProperty("git.branch") + } catch(java.lang.RuntimeException e1) { + throw new GradleException("Error with git-version plugin. Directory '.git' exists but versionDetails() cannot be found.") + } println("Using a ${CHANNEL} profile.") @@ -418,16 +433,16 @@ ext { '--add-modules', j11modules ] */ - } else if (JAVA_VERSION.equals("12") || JAVA_VERSION.equals("13")) { - JAVA_INTEGER_VERSION = JAVA_VERSION - libDir = j11libDir - libDistDir = j11libDir - compile_source_compatibility = JAVA_VERSION - compile_target_compatibility = JAVA_VERSION + } else if (JAVA_VERSION.equals("17")) { + JAVA_INTEGER_VERSION = string("17") + libDir = j17libDir + libDistDir = j17libDir + compile_source_compatibility = 17 + compile_target_compatibility = 17 getdownAltJavaMinVersion = string(findProperty("getdown_alt_java11_min_version")) getdownAltJavaMaxVersion = string(findProperty("getdown_alt_java11_max_version")) getdownAltMultiJavaLocation = string(findProperty("getdown_alt_java11_txt_multi_java_location")) - eclipseJavaRuntimeName = string("JavaSE-11") + eclipseJavaRuntimeName = string("JavaSE-17") /* compile without modules -- using classpath libraries additional_compiler_args += [ '--module-path', modules_compileClasspath.asPath, @@ -447,11 +462,11 @@ ext { jreInstallsDir = System.getProperty("user.home") + jreInstallsDir.substring(1) } macosJavaVMDir = string("${jreInstallsDir}/jre-${JAVA_INTEGER_VERSION}-mac-x64/jre") - macosJavaVMTgz = string("${jreInstallsDir}/tgz/jre-${JAVA_INTEGER_VERSION}-mac-x64.tar.gz") windowsJavaVMDir = string("${jreInstallsDir}/jre-${JAVA_INTEGER_VERSION}-windows-x64/jre") - windowsJavaVMTgz = string("${jreInstallsDir}/tgz/jre-${JAVA_INTEGER_VERSION}-windows-x64.tar.gz") linuxJavaVMDir = string("${jreInstallsDir}/jre-${JAVA_INTEGER_VERSION}-linux-x64/jre") - linuxJavaVMTgz = string("${jreInstallsDir}/tgz/jre-${JAVA_INTEGER_VERSION}-linux-x64.tar.gz") + macosJavaVMTgz = string("${jreInstallsDir}/tgz/jre_${JAVA_INTEGER_VERSION}_mac_x64.tar.gz") + windowsJavaVMTgz = string("${jreInstallsDir}/tgz/jre_${JAVA_INTEGER_VERSION}_windows_x64.tar.gz") + linuxJavaVMTgz = string("${jreInstallsDir}/tgz/jre_${JAVA_INTEGER_VERSION}_linux_x64.tar.gz") install4jDir = string("${jalviewDir}/${install4j_utils_dir}") install4jConfFileName = string("jalview-install4j-conf.install4j") install4jConfFile = file("${install4jDir}/${install4jConfFileName}") @@ -1242,7 +1257,7 @@ task copyChannelResources(type: Copy) { } task createBuildProperties(type: WriteProperties) { - dependsOn copyResources + dependsOn copyChannelResources group = "build" description = "Create the ${buildProperties} file" @@ -1296,7 +1311,7 @@ task prepare { dependsOn buildIndices } - +processResources.dependsOn prepare compileJava.dependsOn prepare run.dependsOn compileJava //run.dependsOn prepare @@ -1345,13 +1360,15 @@ test { task compileLinkCheck(type: JavaCompile) { + dependsOn convertMdFiles + dependsOn copyChannelResources options.fork = true classpath = files("${jalviewDir}/${utils_dir}") destinationDir = file("${jalviewDir}/${utils_dir}") source = fileTree(dir: "${jalviewDir}/${utils_dir}", include: ["HelpLinksChecker.java", "BufferedLineReader.java"]) inputs.file("${jalviewDir}/${utils_dir}/HelpLinksChecker.java") - inputs.file("${jalviewDir}/${utils_dir}/HelpLinksChecker.java") + inputs.file("${jalviewDir}/${utils_dir}/BufferedLineReader.java") outputs.file("${jalviewDir}/${utils_dir}/HelpLinksChecker.class") outputs.file("${jalviewDir}/${utils_dir}/BufferedLineReader.class") } @@ -1408,6 +1425,8 @@ jar { def outputDir = "${jalviewDir}/${package_dir}" destinationDirectory = file(outputDir) archiveFileName = rootProject.name+".jar" + duplicatesStrategy "EXCLUDE" + exclude "cache*/**" exclude "*.jar" @@ -1473,6 +1492,9 @@ shadowJar { attributes "Implementation-Version": JALVIEW_VERSION, "Application-Name": install4jApplicationName } + + duplicatesStrategy "INCLUDE" + mainClassName = shadow_jar_main_class mergeServiceFiles() classifier = "all-"+JALVIEW_VERSION+"-j"+JAVA_VERSION @@ -1504,6 +1526,12 @@ task getdownWebsite() { } getdownWebsiteResourceFilenames += "${getdownAppDistDir}/${getdown_build_properties}" + copy { + from channelPropsFile + into getdownWebsiteDir + } + getdownWebsiteResourceFilenames += file(channelPropsFile).getName() + // set some getdown_txt_ properties then go through all properties looking for getdown_txt_... def props = project.properties.sort { it.key } if (getdownAltJavaMinVersion != null && getdownAltJavaMinVersion.length() > 0) { @@ -1571,6 +1599,18 @@ task getdownWebsite() { into getdownResourceDir } } + + def getdownWrapperScripts = [ getdown_bash_wrapper_script, getdown_powershell_wrapper_script, getdown_batch_wrapper_script ] + getdownWrapperScripts.each{ script -> + def s = file( "${jalviewDir}/utils/getdown/${getdown_wrapper_script_dir}/${script}" ) + if (s.exists()) { + copy { + from s + into "${getdownWebsiteDir}/${getdown_wrapper_script_dir}" + } + getdownTextString += "resource = ${getdown_wrapper_script_dir}/${script}\n" + } + } def codeFiles = [] fileTree(file(package_dir)).each{ f -> @@ -1581,7 +1621,9 @@ task getdownWebsite() { codeFiles += f } } - codeFiles.sort().each{f -> + def jalviewJar = jar.archiveFileName.getOrNull() + // put jalview.jar first for CLASSPATH and .properties files reasons + codeFiles.sort{a, b -> ( a.getName() == jalviewJar ? -1 : ( b.getName() == jalviewJar ? 1 : a <=> b ) ) }.each{f -> def name = f.getName() def line = "code = ${getdownAppDistDir}/${name}\n" getdownTextString += line @@ -1665,6 +1707,7 @@ task getdownWebsite() { from launchJvl from getdownLauncher from "${getdownWebsiteDir}/${getdown_build_properties}" + from "${getdownWebsiteDir}/${channel_props}" if (file(getdownLauncher).getName() != getdown_launcher) { rename(file(getdownLauncher).getName(), getdown_launcher) } @@ -1789,6 +1832,12 @@ task copyInstall4jTemplate { } } + // disable install screen for OSX dmg (for 2.11.2.0) + install4jConfigXml.'**'.macosArchive.each { macosArchive -> + macosArchive.attributes().remove('executeSetupApp') + macosArchive.attributes().remove('setupAppId') + } + // turn off checksum creation for LOCAL channel def e = install4jConfigXml.application[0] if (CHANNEL == "LOCAL") { @@ -1899,6 +1948,10 @@ task installers(type: com.install4j.gradle.Install4jTask) { 'WINDOWS_APPLICATION_ID': install4jWinApplicationId, 'MACOS_DMG_DS_STORE': install4jDMGDSStore, 'MACOS_DMG_BG_IMAGE': install4jDMGBackgroundImage, + 'WRAPPER_LINK': getdownWrapperLink, + 'BASH_WRAPPER_SCRIPT': getdown_bash_wrapper_script, + 'POWERSHELL_WRAPPER_SCRIPT': getdown_powershell_wrapper_script, + 'WRAPPER_SCRIPT_BIN_DIR': getdown_wrapper_script_dir, 'INSTALLER_NAME': install4jInstallerName, 'INSTALL4J_UTILS_DIR': install4j_utils_dir, 'GETDOWN_WEBSITE_DIR': getdown_website_dir, @@ -1948,7 +2001,7 @@ task installers(type: com.install4j.gradle.Install4jTask) { println("Using projectFile "+projectFile) if (!disableNotarization) { println("Will notarize OSX App DMG") } } - verbose=true + //verbose=true inputs.dir(getdownWebsiteDir) inputs.file(install4jConfFile) @@ -1965,6 +2018,22 @@ spotless { } } +task createSourceReleaseProperties(type: WriteProperties) { + group = "distribution" + description = "Create the source RELEASE properties file" + + def sourceTarBuildDir = "${buildDir}/sourceTar" + def sourceReleasePropertiesFile = "${sourceTarBuildDir}/RELEASE" + outputFile (sourceReleasePropertiesFile) + + doFirst { + releaseProps.each{ key, val -> property key, val } + property "git.branch", gitBranch + property "git.hash", gitHash + } + + outputs.file(outputFile) +} task sourceDist(type: Tar) { group "distribution" @@ -1972,6 +2041,9 @@ task sourceDist(type: Tar) { dependsOn createBuildProperties dependsOn convertMdFiles + dependsOn eclipseAllPreferences + dependsOn createSourceReleaseProperties + def VERSION_UNDERSCORES = JALVIEW_VERSION.replaceAll("\\.", "_") def outputFileName = "${project.name}_${VERSION_UNDERSCORES}.tar.gz" @@ -1996,6 +2068,7 @@ task sourceDist(type: Tar) { "*locales/**", "utils/InstallAnywhere", "**/*.log", + "RELEASE", ] def PROCESS_FILES=[ "AUTHORS", @@ -2005,7 +2078,6 @@ task sourceDist(type: Tar) { "FEATURETODO", "LICENSE", "**/README", - "RELEASE", "THIRDPARTYLIBS", "TESTNG", "build.gradle", @@ -2020,7 +2092,9 @@ task sourceDist(type: Tar) { "**/*.sh", ] def INCLUDE_FILES=[ - ".settings/org.eclipse.jdt.core.jalview.prefs", + ".classpath", + ".settings/org.eclipse.buildship.core.prefs", + ".settings/org.eclipse.jdt.core.prefs" ] from(jalviewDir) { @@ -2067,6 +2141,10 @@ task sourceDist(type: Tar) { }) } + def sourceTarBuildDir = "${buildDir}/sourceTar" + from(sourceTarBuildDir) { + // this includes the appended RELEASE properties file + } } @@ -2376,6 +2454,10 @@ task jalviewjsSyncAllLibs (type: Sync) { preserve { include "**" } + + // should this be exclude really ? + duplicatesStrategy "INCLUDE" + outputs.files outputFiles inputs.files inputFiles } @@ -2623,7 +2705,7 @@ def jalviewjsCallCore(String name, FileCollection list, String prefixFile, Strin new org.apache.tools.ant.util.TeeOutputStream( logErrFOS, stderr), - errorOutput) + System.err) } else { standardOutput = new org.apache.tools.ant.util.TeeOutputStream( logOutFOS, @@ -2930,7 +3012,13 @@ task jalviewjsServer { def htmlFile = "${jalviewDirAbsolutePath}/${filename}" doLast { - SimpleHttpFileServerFactory factory = new SimpleHttpFileServerFactory() + def factory + try { + def f = Class.forName("org.gradle.plugins.javascript.envjs.http.simple.SimpleHttpFileServerFactory") + factory = f.newInstance() + } catch (ClassNotFoundException e) { + throw new GradleException("Unable to create SimpleHttpFileServerFactory") + } def port = Integer.valueOf(jalviewjs_server_port) def start = port def running = false