mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-11-16 01:21:16 +01:00
[//]: # (dependabot-start) ⚠️ **Dependabot is rebasing this PR** ⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Bumps [com.squareup.okhttp3:okhttp-bom](https://github.com/square/okhttp) from 5.1.0 to 5.2.1. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/square/okhttp/blob/master/CHANGELOG.md">com.squareup.okhttp3:okhttp-bom's changelog</a>.</em></p> <blockquote> <h2>Version 5.2.1</h2> <p><em>2025-10-09</em></p> <ul> <li> <p>Fix: Don't crash when calling <code>Socket.shutdownOutput()</code> or <code>shutdownInput()</code> on an <code>SSLSocket</code> on Android API 21 through 23. This method throws an <code>UnsupportedOperationException</code>, so we now catch that and close the underlying stream instead.</p> </li> <li> <p>Upgrade: [Okio 3.16.1][okio_3_16_1].</p> </li> </ul> <h2>Version 5.2.0</h2> <p><em>2025-10-07</em></p> <ul> <li> <p>New: Support [HTTP 101] responses with <code>Response.socket</code>. This mechanism is only supported on HTTP/1.1. We also reimplemented our websocket client to use this new mechanism.</p> </li> <li> <p>New: The <code>okhttp-zstd</code> module negotiates [Zstandard (zstd)][zstd] compression with servers that support it. It integrates a new (unstable) [ZSTD-KMP] library, also from Square. Enable it like this:</p> <pre lang="kotlin"><code>val client = OkHttpClient.Builder() .addInterceptor(CompressionInterceptor(Zstd, Gzip)) .build() </code></pre> </li> <li> <p>New: Support the <code>QUERY</code> HTTP method. You will need to set the <code>Request.cacheUrlOverride</code> property to cache calls made with this method. The <code>RequestBody.sha256()</code> may be helpful here; use it to compose a cache URL from the query body.</p> </li> <li> <p>New: Publish events when calls must wait to execute. <code>EventListener.dispatcherQueueStart()</code> is invoked when a call starts waiting, and <code>dispatcherQueueEnd()</code> is invoked when it's done.</p> </li> <li> <p>New: <code>Request.toCurl()</code> returns a copy-pasteable [curl] command consistent with Chrome’s and Firefox’s ‘copy as cURL’ features.</p> </li> <li> <p>New: Support [JPMS]. We replaced our <code>Automatic-Module-Name</code> metadata with proper <code>module-info.java</code> files.</p> </li> <li> <p>Fix: Recover gracefully when worker threads are interrupted. When we introduced fast fallback in OkHttp 5.0, we started using background threads while connecting. Sadly that code didn't handle interruptions well. This is now fixed.</p> </li> <li> <p>Upgrade: [Kotlin 2.2.20][kotlin_2_2_20].</p> </li> <li> <p>Upgrade: [Okio 3.16.0][okio_3_16_0].</p> </li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="a8b8dc5d80"><code>a8b8dc5</code></a> Prepare for release 5.2.1.</li> <li><a href="7d7bdc69c8"><code>7d7bdc6</code></a> Upgrade to Okio 3.16.1 (<a href="https://redirect.github.com/square/okhttp/issues/9131">#9131</a>)</li> <li><a href="2a95ed0873"><code>2a95ed0</code></a> Prepare for release 5.2.0.</li> <li><a href="acfae325f0"><code>acfae32</code></a> Revert "Add minimal HttpLoggingInterceptor support for streaming request and ...</li> <li><a href="d82e8750c4"><code>d82e875</code></a> Put Brotli and Gzip in top-level files (<a href="https://redirect.github.com/square/okhttp/issues/9116">#9116</a>)</li> <li><a href="d4a5be134e"><code>d4a5be1</code></a> Fix RequestBody events on upgraded connections (<a href="https://redirect.github.com/square/okhttp/issues/8970">#8970</a>)</li> <li><a href="112a19d5e4"><code>112a19d</code></a> Add RequestBody.sha256() (<a href="https://redirect.github.com/square/okhttp/issues/9109">#9109</a>)</li> <li><a href="d41a755c7e"><code>d41a755</code></a> Start publishing dispatcher queue events (<a href="https://redirect.github.com/square/okhttp/issues/9111">#9111</a>)</li> <li><a href="c06ff312b2"><code>c06ff31</code></a> Get Content-Type from the request body (<a href="https://redirect.github.com/square/okhttp/issues/9113">#9113</a>)</li> <li><a href="fdac86bb90"><code>fdac86b</code></a> Make Request.toCurl work more like Chrome's 'copy as cURL' (<a href="https://redirect.github.com/square/okhttp/issues/9112">#9112</a>)</li> <li>Additional commits viewable in <a href="https://github.com/square/okhttp/compare/parent-5.1.0...parent-5.2.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
606 lines
20 KiB
Groovy
606 lines
20 KiB
Groovy
plugins {
|
|
id "java"
|
|
id "jacoco"
|
|
id "io.spring.dependency-management" version "1.1.7"
|
|
id "org.springframework.boot" version "3.5.6"
|
|
id "org.springdoc.openapi-gradle-plugin" version "1.9.0"
|
|
id "io.swagger.swaggerhub" version "1.3.2"
|
|
id "edu.sc.seis.launch4j" version "4.0.0"
|
|
id "com.diffplug.spotless" version "8.0.0"
|
|
id "com.github.jk1.dependency-license-report" version "2.9"
|
|
//id "nebula.lint" version "19.0.3"
|
|
id "org.panteleyev.jpackageplugin" version "1.7.5"
|
|
id "org.sonarqube" version "7.0.0.6105"
|
|
}
|
|
|
|
import com.github.jk1.license.render.*
|
|
import org.gradle.internal.os.OperatingSystem
|
|
import org.panteleyev.jpackage.ImageType
|
|
|
|
import java.nio.file.Files
|
|
import java.time.Year
|
|
|
|
ext {
|
|
springBootVersion = "3.5.6"
|
|
pdfboxVersion = "3.0.6"
|
|
imageioVersion = "3.12.0"
|
|
lombokVersion = "1.18.42"
|
|
bouncycastleVersion = "1.82"
|
|
springSecuritySamlVersion = "6.5.6"
|
|
openSamlVersion = "4.3.2"
|
|
commonmarkVersion = "0.27.0"
|
|
googleJavaFormatVersion = "1.28.0"
|
|
junitPlatformVersion = "1.12.2"
|
|
tempJrePath = null
|
|
}
|
|
|
|
ext.isSecurityDisabled = { ->
|
|
System.getenv('DOCKER_ENABLE_SECURITY') == 'false' ||
|
|
System.getenv('DISABLE_ADDITIONAL_FEATURES') == 'true' ||
|
|
(project.hasProperty('DISABLE_ADDITIONAL_FEATURES') &&
|
|
System.getProperty('DISABLE_ADDITIONAL_FEATURES') == 'true')
|
|
}
|
|
|
|
jar {
|
|
enabled = false
|
|
manifest {
|
|
attributes "Implementation-Title": "Stirling-PDF",
|
|
"Implementation-Version": project.version
|
|
}
|
|
}
|
|
|
|
bootJar {
|
|
enabled = false
|
|
}
|
|
|
|
// Configure main class for the root project
|
|
springBoot {
|
|
mainClass = 'stirling.software.SPDF.SPDFApplication'
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url = 'https://build.shibboleth.net/maven/releases' }
|
|
}
|
|
|
|
allprojects {
|
|
group = 'stirling.software'
|
|
version = '1.5.0'
|
|
|
|
configurations.configureEach {
|
|
exclude group: 'commons-logging', module: 'commons-logging'
|
|
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
|
|
}
|
|
}
|
|
|
|
tasks.register('writeVersion', WriteProperties) {
|
|
destinationFile = layout.projectDirectory.file('app/common/src/main/resources/version.properties')
|
|
println "Writing version.properties to ${destinationFile.get().asFile.path}"
|
|
comment = "${new Date()}"
|
|
property 'version', project.provider { project.version.toString() }
|
|
}
|
|
|
|
tasks.named('createExe') {
|
|
dependsOn(":stirling-pdf:bootJar")
|
|
}
|
|
|
|
subprojects {
|
|
apply plugin: 'java'
|
|
apply plugin: 'java-library'
|
|
apply plugin: 'com.diffplug.spotless'
|
|
apply plugin: 'org.springframework.boot'
|
|
apply plugin: 'io.spring.dependency-management'
|
|
apply plugin: 'jacoco'
|
|
|
|
java {
|
|
// 17 is lowest but we support and recommend 21
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
if (project.name != "stirling-pdf") {
|
|
bootJar {
|
|
enabled = false
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
configurations.configureEach {
|
|
exclude group: 'commons-logging', module: 'commons-logging'
|
|
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
|
|
// Exclude vulnerable BouncyCastle version used in tableau
|
|
exclude group: 'org.bouncycastle', module: 'bcpkix-jdk15on'
|
|
exclude group: 'org.bouncycastle', module: 'bcutil-jdk15on'
|
|
exclude group: 'org.bouncycastle', module: 'bcmail-jdk15on'
|
|
}
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom "org.springframework.boot:spring-boot-dependencies:$springBootVersion"
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
implementation 'org.springframework.boot:spring-boot-starter-actuator'
|
|
implementation 'io.github.pixee:java-security-toolkit:1.2.2'
|
|
|
|
//tmp for security bumps
|
|
implementation 'ch.qos.logback:logback-core:1.5.20'
|
|
implementation 'ch.qos.logback:logback-classic:1.5.20'
|
|
compileOnly "org.projectlombok:lombok:$lombokVersion"
|
|
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
|
|
|
|
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
|
testRuntimeOnly 'org.mockito:mockito-inline:5.2.0'
|
|
testRuntimeOnly "org.junit.platform:junit-platform-launcher:$junitPlatformVersion"
|
|
|
|
testImplementation platform("com.squareup.okhttp3:okhttp-bom:5.2.1")
|
|
testImplementation "com.squareup.okhttp3:mockwebserver"
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = "UTF-8"
|
|
dependsOn "spotlessApply"
|
|
}
|
|
|
|
compileJava {
|
|
options.compilerArgs << "-parameters"
|
|
}
|
|
|
|
test {
|
|
useJUnitPlatform()
|
|
finalizedBy jacocoTestReport
|
|
}
|
|
|
|
jacocoTestReport {
|
|
dependsOn test
|
|
reports {
|
|
xml.required.set(true)
|
|
csv.required.set(false)
|
|
html.required.set(true)
|
|
}
|
|
}
|
|
|
|
jacocoTestCoverageVerification {
|
|
dependsOn jacocoTestReport
|
|
violationRules {
|
|
rule {
|
|
limit {
|
|
minimum = 0.0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.named("processResources") {
|
|
dependsOn(rootProject.tasks.writeVersion)
|
|
}
|
|
|
|
if (name == 'stirling-pdf') {
|
|
apply plugin: 'org.springdoc.openapi-gradle-plugin'
|
|
|
|
openApi {
|
|
apiDocsUrl = "http://localhost:8080/v1/api-docs"
|
|
outputDir = file("$projectDir")
|
|
outputFileName = "SwaggerDoc.json"
|
|
waitTimeInSeconds = 60 // Increase the wait time to 60 seconds
|
|
}
|
|
|
|
tasks.named("forkedSpringBootRun") {
|
|
dependsOn(":common:jar")
|
|
dependsOn(":proprietary:jar")
|
|
}
|
|
|
|
tasks.register("copySwaggerDoc", Copy) {
|
|
doNotTrackState("Writes SwaggerDoc.json to project root")
|
|
from(layout.projectDirectory.file("SwaggerDoc.json"))
|
|
into(rootProject.projectDir)
|
|
dependsOn("generateOpenApiDocs")
|
|
}
|
|
|
|
tasks.register("cleanSwaggerInBuild", Delete) {
|
|
doNotTrackState("Cleans up SwaggerDoc.json in build directory")
|
|
delete(layout.projectDirectory.file("SwaggerDoc.json"))
|
|
dependsOn("copySwaggerDoc")
|
|
}
|
|
|
|
tasks.named("copySwaggerDoc") {
|
|
finalizedBy("cleanSwaggerInBuild")
|
|
}
|
|
|
|
tasks.named("generateOpenApiDocs") {
|
|
finalizedBy("copySwaggerDoc")
|
|
doNotTrackState("OpenAPI plugin writes outside build directory")
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = "UTF-8"
|
|
dependsOn "spotlessApply"
|
|
}
|
|
|
|
def allProjects = ((subprojects as Set<Project>) + project) as Set<Project>
|
|
|
|
licenseReport {
|
|
projects = allProjects
|
|
renderers = [new JsonReportRenderer()]
|
|
allowedLicensesFile = project.layout.projectDirectory.file("app/allowed-licenses.json").asFile
|
|
outputDir = project.layout.buildDirectory.dir("reports/dependency-license").get().asFile.path
|
|
configurations = [ "productionRuntimeClasspath", "runtimeClasspath" ]
|
|
}
|
|
|
|
// Configure the forked spring boot run task to properly delegate to the stirling-pdf module
|
|
tasks.named('forkedSpringBootRun') {
|
|
dependsOn ':stirling-pdf:bootRun'
|
|
doFirst {
|
|
println "Delegating forkedSpringBootRun to :stirling-pdf:bootRun"
|
|
}
|
|
}
|
|
|
|
//0.11.5 to 2024.11.5
|
|
static def getMacVersion(String version) {
|
|
def currentYear = Year.now().getValue()
|
|
def versionParts = version.split("\\.", 2)
|
|
return "${currentYear}.${versionParts.length > 1 ? versionParts[1] : versionParts[0]}"
|
|
}
|
|
|
|
jpackage {
|
|
dependsOn(":stirling-pdf:bootJar")
|
|
input = layout.projectDirectory.dir("app/core/build/libs")
|
|
destination = layout.projectDirectory.dir("build/jpackage")
|
|
mainJar = "Stirling-PDF-${project.version}.jar"
|
|
appName = "Stirling PDF"
|
|
appVersion = project.version
|
|
vendor = "Stirling PDF Inc"
|
|
appDescription = "Stirling PDF - Your Local PDF Editor"
|
|
icon = layout.projectDirectory.file("app/core/src/main/resources/static/favicon.ico")
|
|
verbose = true
|
|
// mainClass = "org.springframework.boot.loader.launch.JarLauncher"
|
|
|
|
// JVM Options
|
|
javaOptions = [
|
|
"-DBROWSER_OPEN=true",
|
|
"-DSTIRLING_PDF_DESKTOP_UI=true",
|
|
"-DDISABLE_ADDITIONAL_FEATURES=false",
|
|
"-Djava.awt.headless=false",
|
|
"-Dapple.awt.UIElement=true",
|
|
"--add-opens=java.base/java.lang=ALL-UNNAMED",
|
|
"--add-opens=java.desktop/java.awt.event=ALL-UNNAMED",
|
|
"--add-opens=java.desktop/sun.awt=ALL-UNNAMED",
|
|
"--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED",
|
|
"--add-opens=java.desktop/sun.awt.windows=ALL-UNNAMED",
|
|
"--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED",
|
|
"--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED",
|
|
]
|
|
|
|
// Windows-specific configuration
|
|
windows {
|
|
launcherAsService = false
|
|
appVersion = project.version
|
|
|
|
winConsole = false
|
|
winMenu = true // Creates start menu entry
|
|
winShortcut = true // Creates desktop shortcut
|
|
winShortcutPrompt = true // Lets user choose whether to create shortcuts
|
|
winDirChooser = true // Allows users to choose installation directory
|
|
winPerUserInstall = false
|
|
winMenuGroup = "Stirling PDF"
|
|
winUpgradeUuid = "2a43ed0c-b8c2-40cf-89e1-751129b87641" // Unique identifier for updates
|
|
winHelpUrl = "https://github.com/Stirling-Tools/Stirling-PDF"
|
|
winUpdateUrl = "https://github.com/Stirling-Tools/Stirling-PDF/releases"
|
|
type = ImageType.EXE
|
|
installDir = "C:/Program Files/Stirling-PDF"
|
|
}
|
|
|
|
// MacOS-specific configuration
|
|
mac {
|
|
appVersion = getMacVersion(project.version.toString())
|
|
icon = layout.projectDirectory.file("app/core/src/main/resources/static/favicon.icns")
|
|
type = ImageType.DMG
|
|
macPackageIdentifier = "Stirling PDF"
|
|
macPackageName = "Stirling PDF"
|
|
macAppCategory = "public.app-category.productivity"
|
|
macSign = false // Enable signing
|
|
macAppStore = false // Not targeting App Store initially
|
|
|
|
// // Add license and other documentation to DMG
|
|
// /*macDmgContent = [
|
|
// "README.md",
|
|
// "LICENSE",
|
|
// "CHANGELOG.md"
|
|
// ]*/
|
|
//
|
|
// // Enable Mac-specific entitlements
|
|
// //macEntitlements = "entitlements.plist" // You'll need to create this file
|
|
}
|
|
|
|
// Linux-specific configuration
|
|
linux {
|
|
appVersion = project.version
|
|
icon = layout.projectDirectory.file("app/core/src/main/resources/static/favicon.png")
|
|
type = ImageType.DEB // Can also use "rpm" for Red Hat-based systems
|
|
|
|
// Debian package configuration
|
|
//linuxPackageName = "stirlingpdf"
|
|
linuxDebMaintainer = "support@stirlingpdf.com"
|
|
linuxMenuGroup = "Office;PDF;Productivity"
|
|
linuxAppCategory = "Office"
|
|
linuxAppRelease = "1"
|
|
linuxPackageDeps = true
|
|
|
|
installDir = "/opt/Stirling-PDF"
|
|
|
|
// RPM-specific settings
|
|
//linuxRpmLicenseType = "MIT"
|
|
}
|
|
|
|
// Common additional options
|
|
//jLinkOptions = [
|
|
// "--strip-debug",
|
|
// "--compress=2",
|
|
// "--no-header-files",
|
|
// "--no-man-pages"
|
|
//]
|
|
|
|
// Add any additional modules required
|
|
/*addModules = [
|
|
"java.base",
|
|
"java.desktop",
|
|
"java.logging",
|
|
"java.sql",
|
|
"java.xml",
|
|
"jdk.crypto.ec"
|
|
]*/
|
|
|
|
// Add copyright and license information
|
|
copyright = "Copyright © 2025 Stirling PDF Inc."
|
|
licenseFile = layout.projectDirectory.file("LICENSE")
|
|
}
|
|
|
|
//tasks.wrapper {
|
|
// gradleVersion = "8.14"
|
|
// distributionType = Wrapper.DistributionType.ALL
|
|
//}
|
|
|
|
tasks.register('jpackageMacX64') {
|
|
group = 'distribution'
|
|
description = 'Packages app for MacOS x86_64'
|
|
|
|
println "Running jpackageMacX64 task"
|
|
|
|
if (OperatingSystem.current().isMacOsX()) {
|
|
println "MacOS detected. Downloading temp JRE."
|
|
dependsOn("downloadTempJre")
|
|
} else {
|
|
return
|
|
}
|
|
|
|
doLast {
|
|
def jrePath = project.ext.tempJrePath
|
|
|
|
if (!jrePath) {
|
|
throw new GradleException("JRE path not found.")
|
|
}
|
|
|
|
def outputStream = new ByteArrayOutputStream()
|
|
def errorStream = new ByteArrayOutputStream()
|
|
|
|
def result = exec {
|
|
commandLine 'jpackage',
|
|
'--type', 'dmg',
|
|
'--name', 'Stirling PDF (x86_64)',
|
|
'--input', 'app/core/build/libs',
|
|
'--main-jar', "Stirling-PDF-${project.version}.jar",
|
|
'--main-class', 'org.springframework.boot.loader.launch.JarLauncher',
|
|
'--runtime-image', file(jrePath + "/zulu-17.jre/Contents/Home"),
|
|
'--dest', 'build/jpackage/x86_64',
|
|
'--icon', 'app/core/src/main/resources/static/favicon.icns',
|
|
'--app-version', getMacVersion(project.version.toString()),
|
|
'--mac-package-name', 'Stirling PDF (x86_64)',
|
|
'--mac-package-identifier', 'Stirling PDF (x86_64)',
|
|
'--mac-app-category', 'public.app-category.productivity',
|
|
|
|
// Java options
|
|
'--java-options', '-DBROWSER_OPEN=true',
|
|
'--java-options', '-DSTIRLING_PDF_DESKTOP_UI=true',
|
|
'--java-options', '-DDISABLE_ADDITIONAL_FEATURES=false',
|
|
'--java-options', '-Djava.awt.headless=false',
|
|
'--java-options', '-Dapple.awt.UIElement=true',
|
|
'--java-options', '--add-opens=java.base/java.lang=ALL-UNNAMED',
|
|
'--java-options', '--add-opens=java.desktop/java.awt.event=ALL-UNNAMED',
|
|
'--java-options', '--add-opens=java.desktop/sun.awt=ALL-UNNAMED',
|
|
'--java-options', '--add-opens=java.desktop/sun.awt.X11=ALL-UNNAMED',
|
|
'--java-options', '--add-opens=java.desktop/sun.awt.windows=ALL-UNNAMED',
|
|
'--java-options', '--add-opens=java.desktop/sun.lwawt=ALL-UNNAMED',
|
|
'--java-options', '--add-opens=java.desktop/sun.lwawt.macosx=ALL-UNNAMED'
|
|
|
|
standardOutput = outputStream
|
|
errorOutput = errorStream
|
|
ignoreExitValue = true
|
|
}
|
|
|
|
def stdout = outputStream.toString("UTF-8")
|
|
def stderr = errorStream.toString("UTF-8")
|
|
|
|
if (!stdout.isBlank()) {
|
|
println "jpackage stdout:\n$stdout"
|
|
}
|
|
|
|
if (result.exitValue != 0) {
|
|
throw new GradleException("jpackage failed with exit code ${result.exitValue}.\n\n$stderr")
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.register('downloadTempJre') {
|
|
group = 'distribution'
|
|
description = 'Downloads and extracts a temporary JRE'
|
|
|
|
doLast {
|
|
try {
|
|
def jreUrl = 'https://cdn.azul.com/zulu/bin/zulu17.56.15-ca-jre17.0.14-macosx_x64.tar.gz'
|
|
def tmpDir = Files.createTempDirectory('zulu-jre').toFile()
|
|
def jreArchive = new File(tmpDir, 'jre.tar.gz')
|
|
def jreDir = new File(tmpDir, 'jre')
|
|
|
|
println "Downloading JRE to $jreArchive"
|
|
jreArchive.withOutputStream { out ->
|
|
new URI(jreUrl).toURL().withInputStream { from -> out << from }
|
|
}
|
|
|
|
println "Extracting JRE to $jreDir"
|
|
jreDir.mkdirs()
|
|
providers.exec {
|
|
commandLine 'tar', '-xzf', jreArchive.absolutePath, '-C', jreDir.absolutePath, '--strip-components=1'
|
|
}.result.get()
|
|
|
|
println "JRE ready at: $jreDir"
|
|
ext.tempJrePath = jreDir.absolutePath
|
|
project.ext.tempJrePath = jreDir.absolutePath
|
|
} catch (Exception e) {
|
|
println "Failed to download JRE. ${e.getLocalizedMessage()}"
|
|
cleanTempJre
|
|
}
|
|
}
|
|
}
|
|
|
|
tasks.register('cleanTempJre') {
|
|
dependsOn('jpackageMacX64')
|
|
group = 'distribution'
|
|
description = 'Deletes the temporary JRE'
|
|
|
|
doLast {
|
|
def path = project.ext.tempJrePath
|
|
|
|
if (path && new File("$path").exists()) {
|
|
println "Cleaning up temporary JRE: $path"
|
|
new File("$path").parentFile.deleteDir()
|
|
}
|
|
}
|
|
}
|
|
|
|
launch4j {
|
|
icon = "${projectDir}/app/core/src/main/resources/static/favicon.ico"
|
|
|
|
outfile="Stirling-PDF.exe"
|
|
|
|
if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') {
|
|
headerType = "gui"
|
|
} else {
|
|
headerType = "console"
|
|
}
|
|
jarTask = project(":stirling-pdf").tasks.bootJar
|
|
|
|
errTitle="Encountered error, do you have Java 21?"
|
|
downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe"
|
|
|
|
if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') {
|
|
variables=["BROWSER_OPEN=true", "STIRLING_PDF_DESKTOP_UI=true"]
|
|
} else {
|
|
variables=["BROWSER_OPEN=true"]
|
|
}
|
|
|
|
jreMinVersion="17"
|
|
|
|
mutexName="Stirling-PDF"
|
|
windowTitle="Stirling-PDF"
|
|
|
|
messagesStartupError="An error occurred while starting Stirling-PDF"
|
|
// messagesJreNotFoundError="This application requires a Java Runtime Environment, Please download Java 17."
|
|
messagesJreVersionError="You are running the wrong version of Java, Please download Java 21."
|
|
messagesLauncherError="Java is corrupted. Please uninstall and then install Java 21."
|
|
messagesInstanceAlreadyExists="Stirling-PDF is already running."
|
|
}
|
|
|
|
spotless {
|
|
yaml {
|
|
target '*.yml', '*.yaml'
|
|
trimTrailingWhitespace()
|
|
leadingTabsToSpaces()
|
|
endWithNewline()
|
|
}
|
|
format 'gradle', {
|
|
target 'build.gradle', 'settings.gradle', 'gradle/*.gradle', 'gradle/**/*.gradle'
|
|
trimTrailingWhitespace()
|
|
leadingTabsToSpaces()
|
|
endWithNewline()
|
|
}
|
|
}
|
|
|
|
sonar {
|
|
properties {
|
|
property "sonar.projectKey", "Stirling-Tools_Stirling-PDF"
|
|
property "sonar.organization", "stirling-tools"
|
|
|
|
property "sonar.exclusions", "**/build-wrapper-dump.json, **/src/main/java/org/apache/**, **/src/main/resources/static/pdfjs/**, **/src/main/resources/static/pdfjs-legacy/**, **/src/main/resources/static/js/thirdParty/**"
|
|
property "sonar.coverage.exclusions", "**/src/main/java/org/apache/**, **/src/main/resources/static/pdfjs/**, **/src/main/resources/static/pdfjs-legacy/**, **/src/main/resources/static/js/thirdParty/**"
|
|
property "sonar.cpd.exclusions", "**/src/main/java/org/apache/**, **/src/main/resources/static/pdfjs/**, **/src/main/resources/static/pdfjs-legacy/**, **/src/main/resources/static/js/thirdParty/**"
|
|
}
|
|
}
|
|
|
|
swaggerhubUpload {
|
|
// dependsOn = generateOpenApiDocs // Depends on your task generating Swagger docs
|
|
api = "Stirling-PDF" // The name of your API on SwaggerHub
|
|
owner = "${System.getenv().getOrDefault('SWAGGERHUB_USER', 'Frooodle')}" // Your SwaggerHub username (or organization name)
|
|
version = project.version // The version of your API
|
|
inputFile = file("SwaggerDoc.json") // The path to your Swagger docs
|
|
token = "${System.getenv("SWAGGERHUB_API_KEY")}" // Your SwaggerHub API key, passed as an environment variable
|
|
oas = "3.0.0" // The version of the OpenAPI Specification you"re using
|
|
}
|
|
|
|
dependencies {
|
|
implementation project(':stirling-pdf')
|
|
implementation project(':common')
|
|
if (rootProject.ext.isSecurityDisabled()) {
|
|
implementation project(':proprietary')
|
|
}
|
|
|
|
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
|
testRuntimeOnly "org.junit.platform:junit-platform-launcher:$junitPlatformVersion"
|
|
|
|
testImplementation platform("com.squareup.okhttp3:okhttp-bom:5.2.1")
|
|
testImplementation "com.squareup.okhttp3:mockwebserver"
|
|
}
|
|
|
|
tasks.named("test") {
|
|
useJUnitPlatform()
|
|
}
|
|
|
|
// Make sure all relevant processes depend on writeVersion
|
|
processResources.dependsOn(writeVersion)
|
|
|
|
tasks.register('printVersion') {
|
|
doLast {
|
|
println project.version
|
|
}
|
|
}
|
|
|
|
tasks.register('printMacVersion') {
|
|
doLast {
|
|
println getMacVersion(project.version.toString())
|
|
}
|
|
}
|
|
|
|
tasks.named('bootRun') {
|
|
group = 'application'
|
|
description = 'Delegates to :stirling-pdf:bootRun'
|
|
dependsOn ':stirling-pdf:bootRun'
|
|
|
|
doFirst {
|
|
println "Delegating to :stirling-pdf:bootRun"
|
|
}
|
|
}
|
|
|
|
tasks.named('build') {
|
|
group = 'build'
|
|
description = 'Delegates to :stirling-pdf:bootJar'
|
|
dependsOn ':stirling-pdf:bootJar'
|
|
|
|
doFirst {
|
|
println "Delegating to :stirling-pdf:bootJar"
|
|
}
|
|
}
|