mirror of
https://github.com/Stirling-Tools/Stirling-PDF.git
synced 2025-04-19 19:21:18 +00:00

# Description of Changes This pull request includes several changes to the codebase, focusing on enhancing OCR support, improving endpoint management, and adding new functionality for PDF compression. The most important changes are detailed below. ### Enhancements to OCR support: * `Dockerfile` and `Dockerfile.fat`: Added support for multiple new OCR languages including Chinese (Simplified), German, French, and Portuguese. (Our top 5 languages including English) [[1]](diffhunk://#diff-dd2c0eb6ea5cfc6c4bd4eac30934e2d5746747af48fef6da689e85b752f39557R69-R72) [[2]](diffhunk://#diff-571631582b988e88c52c86960cc083b0b8fa63cf88f056f26e9e684195221c27L78-R81) ### Improvements to endpoint management: * [`src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java`](diffhunk://#diff-750f31f6ecbd64b025567108a33775cad339e835a04360affff82a09410b697dR51-R66): Added a new method `isGroupEnabled` to check if a group of endpoints is enabled. * [`src/main/java/stirling/software/SPDF/config/EndpointConfiguration.java`](diffhunk://#diff-750f31f6ecbd64b025567108a33775cad339e835a04360affff82a09410b697dL179-L193): Updated endpoint groups and removed redundant qpdf endpoints. [[1]](diffhunk://#diff-750f31f6ecbd64b025567108a33775cad339e835a04360affff82a09410b697dL179-L193) [[2]](diffhunk://#diff-750f31f6ecbd64b025567108a33775cad339e835a04360affff82a09410b697dL243-L244) * [`src/main/java/stirling/software/SPDF/config/EndpointInspector.java`](diffhunk://#diff-845de13e140bb1264014539714860f044405274ad2a9481f38befdd1c1333818R1-R291): Introduced a new `EndpointInspector` class to discover and validate GET endpoints dynamically. ### New functionality for PDF compression: * [`src/main/java/stirling/software/SPDF/controller/api/misc/CompressController.java`](diffhunk://#diff-c307589e9f958f2593c9567c5ad9d63cd03788aa4803b3017b1c13b0d0485805R10): Enhanced the `CompressController` to handle nested images within form XObjects, improving the accuracy of image compression in PDFs. Remove Compresses Dependency on QPDF [[1]](diffhunk://#diff-c307589e9f958f2593c9567c5ad9d63cd03788aa4803b3017b1c13b0d0485805R10) [[2]](diffhunk://#diff-c307589e9f958f2593c9567c5ad9d63cd03788aa4803b3017b1c13b0d0485805R28-R44) [[3]](diffhunk://#diff-c307589e9f958f2593c9567c5ad9d63cd03788aa4803b3017b1c13b0d0485805L49-R61) [[4]](diffhunk://#diff-c307589e9f958f2593c9567c5ad9d63cd03788aa4803b3017b1c13b0d0485805R77-R99) [[5]](diff hunk://#diff-c307589e9f958f2593c9567c5ad9d63cd03788aa4803b3017b1c13b0d0485805L92-R191) Closes #(issue_number) --- ## Checklist ### General - [ ] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [ ] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [ ] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [ ] I have performed a self-review of my own code - [ ] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [ ] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details. --------- Co-authored-by: a <a>
479 lines
18 KiB
Groovy
479 lines
18 KiB
Groovy
plugins {
|
|
id "java"
|
|
id "org.springframework.boot" version "3.4.3"
|
|
id "io.spring.dependency-management" version "1.1.7"
|
|
id "org.springdoc.openapi-gradle-plugin" version "1.9.0"
|
|
id "io.swagger.swaggerhub" version "1.3.2"
|
|
id "edu.sc.seis.launch4j" version "3.0.6"
|
|
id "com.diffplug.spotless" version "7.0.2"
|
|
id "com.github.jk1.dependency-license-report" version "2.9"
|
|
//id "nebula.lint" version "19.0.3"
|
|
id("org.panteleyev.jpackageplugin") version "1.6.1"
|
|
id "org.sonarqube" version "6.0.1.5171"
|
|
}
|
|
|
|
import com.github.jk1.license.render.*
|
|
|
|
ext {
|
|
springBootVersion = "3.4.3"
|
|
pdfboxVersion = "3.0.4"
|
|
imageioVersion = "3.12.0"
|
|
lombokVersion = "1.18.36"
|
|
bouncycastleVersion = "1.80"
|
|
springSecuritySamlVersion = "6.4.4"
|
|
openSamlVersion = "4.3.2"
|
|
}
|
|
|
|
group = "stirling.software"
|
|
version = "0.44.3"
|
|
|
|
java {
|
|
// 17 is lowest but we support and recommend 21
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
maven { url = "https://build.shibboleth.net/maven/releases" }
|
|
maven { url = "https://maven.pkg.github.com/jcefmaven/jcefmaven" }
|
|
}
|
|
|
|
licenseReport {
|
|
renderers = [new JsonReportRenderer()]
|
|
allowedLicensesFile = new File("$projectDir/allowed-licenses.json")
|
|
}
|
|
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") {
|
|
exclude "stirling/software/SPDF/config/security/**"
|
|
exclude "stirling/software/SPDF/controller/api/DatabaseController.java"
|
|
exclude "stirling/software/SPDF/controller/api/UserController.java"
|
|
exclude "stirling/software/SPDF/controller/api/H2SQLCondition.java"
|
|
exclude "stirling/software/SPDF/controller/web/AccountWebController.java"
|
|
exclude "stirling/software/SPDF/controller/web/DatabaseWebController.java"
|
|
exclude "stirling/software/SPDF/model/ApiKeyAuthenticationToken.java"
|
|
exclude "stirling/software/SPDF/model/AttemptCounter.java"
|
|
exclude "stirling/software/SPDF/model/Authority.java"
|
|
exclude "stirling/software/SPDF/model/BackupNotFoundException.java"
|
|
exclude "stirling/software/SPDF/model/PersistentLogin.java"
|
|
exclude "stirling/software/SPDF/model/SessionEntity.java"
|
|
exclude "stirling/software/SPDF/model/User.java"
|
|
exclude "stirling/software/SPDF/repository/**"
|
|
}
|
|
|
|
if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") {
|
|
exclude "stirling/software/SPDF/UI/impl/**"
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
test {
|
|
java {
|
|
if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") {
|
|
exclude "stirling/software/SPDF/config/security/**"
|
|
exclude "stirling/software/SPDF/controller/api/UserControllerTest.java"
|
|
exclude "stirling/software/SPDF/controller/api/DatabaseControllerTest.java"
|
|
exclude "stirling/software/SPDF/controller/web/AccountWebControllerTest.java"
|
|
exclude "stirling/software/SPDF/controller/web/DatabaseWebControllerTest.java"
|
|
exclude "stirling/software/SPDF/model/ApiKeyAuthenticationTokenTest.java"
|
|
exclude "stirling/software/SPDF/model/AttemptCounterTest.java"
|
|
exclude "stirling/software/SPDF/model/AuthorityTest.java"
|
|
exclude "stirling/software/SPDF/model/PersistentLoginTest.java"
|
|
exclude "stirling/software/SPDF/model/SessionEntityTest.java"
|
|
exclude "stirling/software/SPDF/model/UserTest.java"
|
|
exclude "stirling/software/SPDF/repository/**"
|
|
}
|
|
|
|
if (System.getenv("STIRLING_PDF_DESKTOP_UI") == "false") {
|
|
exclude "stirling/software/SPDF/UI/impl/**"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
openApi {
|
|
apiDocsUrl = "http://localhost:8080/v1/api-docs"
|
|
outputDir = file("$projectDir")
|
|
outputFileName = "SwaggerDoc.json"
|
|
waitTimeInSeconds = 60 // Increase the wait time to 60 seconds
|
|
}
|
|
|
|
//0.11.5 to 2024.11.5
|
|
def getMacVersion(String version) {
|
|
def currentYear = java.time.Year.now().getValue()
|
|
def versionParts = version.split("\\.", 2)
|
|
return "${currentYear}.${versionParts.length > 1 ? versionParts[1] : versionParts[0]}"
|
|
}
|
|
|
|
jpackage {
|
|
input = "build/libs"
|
|
destination = "${projectDir}/build/jpackage"
|
|
mainJar = "Stirling-PDF-${project.version}.jar"
|
|
appName = "Stirling-PDF"
|
|
appVersion = project.version
|
|
vendor = "Stirling-Software"
|
|
appDescription = "Stirling PDF - Your Local PDF Editor"
|
|
icon = "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",
|
|
"-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 Software"
|
|
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 = "exe"
|
|
installDir = "C:/Program Files/Stirling-PDF"
|
|
}
|
|
|
|
// macOS-specific configuration
|
|
mac {
|
|
appVersion = getMacVersion(project.version.toString())
|
|
icon = "src/main/resources/static/favicon.icns"
|
|
type = "dmg"
|
|
macPackageIdentifier = "com.stirling.software.pdf"
|
|
macPackageName = "Stirling-PDF"
|
|
macAppCategory = "public.app-category.productivity"
|
|
macSign = false // Enable signing
|
|
macAppStore = false // Not targeting App Store initially
|
|
|
|
//installDir = "Applications"
|
|
|
|
// 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 = "src/main/resources/static/favicon.png"
|
|
type = "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 © 2024 Stirling Software"
|
|
licenseFile = "LICENSE"
|
|
}
|
|
|
|
|
|
launch4j {
|
|
icon = "${projectDir}/src/main/resources/static/favicon.ico"
|
|
|
|
outfile="Stirling-PDF.exe"
|
|
|
|
if(System.getenv("STIRLING_PDF_DESKTOP_UI") == 'true') {
|
|
headerType = "gui"
|
|
} else {
|
|
headerType = "console"
|
|
}
|
|
jarTask = 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 {
|
|
java {
|
|
target project.fileTree('src').include('**/*.java')
|
|
|
|
googleJavaFormat("1.25.2").aosp().reorderImports(false)
|
|
|
|
importOrder("java", "javax", "org", "com", "net", "io", "jakarta", "lombok", "me", "stirling")
|
|
toggleOffOn()
|
|
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/**"
|
|
}
|
|
}
|
|
|
|
//gradleLint {
|
|
// rules=['unused-dependency']
|
|
// }
|
|
tasks.wrapper {
|
|
gradleVersion = "8.12"
|
|
distributionType = Wrapper.DistributionType.ALL
|
|
}
|
|
//tasks.withType(JavaCompile) {
|
|
// options.compilerArgs << "-Xlint:deprecation"
|
|
//}
|
|
configurations.all {
|
|
// Remove all commons-logging dependencies so that only spring-jcl is used
|
|
exclude group: 'commons-logging', module: 'commons-logging'
|
|
// Exclude Tomcat
|
|
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
|
|
}
|
|
dependencies {
|
|
|
|
//tmp for security bumps
|
|
implementation 'ch.qos.logback:logback-core:1.5.17'
|
|
implementation 'ch.qos.logback:logback-classic:1.5.17'
|
|
|
|
|
|
// Exclude vulnerable BouncyCastle version used in tableau
|
|
configurations.all {
|
|
exclude group: 'org.bouncycastle', module: 'bcpkix-jdk15on'
|
|
exclude group: 'org.bouncycastle', module: 'bcutil-jdk15on'
|
|
exclude group: 'org.bouncycastle', module: 'bcmail-jdk15on'
|
|
}
|
|
|
|
if (System.getenv("STIRLING_PDF_DESKTOP_UI") != "false") {
|
|
implementation "me.friwi:jcefmaven:132.3.1"
|
|
implementation "org.openjfx:javafx-controls:21"
|
|
implementation "org.openjfx:javafx-swing:21"
|
|
}
|
|
|
|
//security updates
|
|
implementation "org.springframework:spring-webmvc:6.2.5"
|
|
|
|
implementation("io.github.pixee:java-security-toolkit:1.2.1")
|
|
|
|
// Exclude Tomcat and include Jetty
|
|
implementation("org.springframework.boot:spring-boot-starter-web:$springBootVersion")
|
|
implementation "org.springframework.boot:spring-boot-starter-jetty:$springBootVersion"
|
|
|
|
implementation "org.springframework.boot:spring-boot-starter-thymeleaf:$springBootVersion"
|
|
implementation 'com.posthog.java:posthog:1.2.0'
|
|
implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1'
|
|
|
|
|
|
if (System.getenv("DOCKER_ENABLE_SECURITY") != "false") {
|
|
implementation "org.springframework.boot:spring-boot-starter-security:$springBootVersion"
|
|
implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE"
|
|
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
|
|
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:$springBootVersion"
|
|
|
|
implementation "org.springframework.session:spring-session-core:3.4.2"
|
|
implementation "org.springframework:spring-jdbc:6.2.5"
|
|
|
|
implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5'
|
|
// Don't upgrade h2database
|
|
runtimeOnly "com.h2database:h2:2.3.232"
|
|
runtimeOnly "org.postgresql:postgresql:42.7.5"
|
|
constraints {
|
|
implementation "org.opensaml:opensaml-core:$openSamlVersion"
|
|
implementation "org.opensaml:opensaml-saml-api:$openSamlVersion"
|
|
implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion"
|
|
}
|
|
implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion"
|
|
// implementation 'org.springframework.security:spring-security-core:$springSecuritySamlVersion'
|
|
implementation 'com.coveo:saml-client:5.0.0'
|
|
|
|
}
|
|
implementation 'org.snakeyaml:snakeyaml-engine:2.9'
|
|
|
|
testImplementation "org.springframework.boot:spring-boot-starter-test:$springBootVersion"
|
|
|
|
// Batik
|
|
implementation "org.apache.xmlgraphics:batik-all:1.18"
|
|
|
|
// TwelveMonkeys
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-batik:$imageioVersion"
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-bmp:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-hdr:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-icns:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-iff:$imageioVersion"
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-jpeg:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-pcx:$imageioVersion@
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-pict:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-pnm:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-psd:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-sgi:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-tga:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-thumbsdb:$imageioVersion"
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-tiff:$imageioVersion"
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-webp:$imageioVersion"
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-xwd:$imageioVersion"
|
|
|
|
// Image metadata extractor
|
|
implementation "com.drewnoakes:metadata-extractor:2.19.0"
|
|
|
|
implementation "commons-io:commons-io:2.18.0"
|
|
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0"
|
|
//general PDF
|
|
|
|
// https://mvnrepository.com/artifact/com.opencsv/opencsv
|
|
implementation ("com.opencsv:opencsv:5.10")
|
|
|
|
implementation ("org.apache.pdfbox:pdfbox:$pdfboxVersion")
|
|
implementation "org.apache.pdfbox:preflight:$pdfboxVersion"
|
|
|
|
|
|
implementation ("org.apache.pdfbox:xmpbox:$pdfboxVersion")
|
|
|
|
// https://mvnrepository.com/artifact/technology.tabula/tabula
|
|
implementation ('technology.tabula:tabula:1.0.5') {
|
|
exclude group: "org.slf4j", module: "slf4j-simple"
|
|
exclude group: "org.bouncycastle", module: "bcprov-jdk15on"
|
|
exclude group: "com.google.code.gson", module: "gson"
|
|
}
|
|
|
|
implementation 'org.apache.pdfbox:jbig2-imageio:3.0.4'
|
|
|
|
implementation "org.bouncycastle:bcprov-jdk18on:$bouncycastleVersion"
|
|
implementation "org.bouncycastle:bcpkix-jdk18on:$bouncycastleVersion"
|
|
implementation "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
|
|
implementation "io.micrometer:micrometer-core:1.14.5"
|
|
implementation group: "com.google.zxing", name: "core", version: "3.5.3"
|
|
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
|
implementation "org.commonmark:commonmark:0.24.0"
|
|
implementation "org.commonmark:commonmark-ext-gfm-tables:0.24.0"
|
|
// https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
|
|
implementation "com.bucket4j:bucket4j_jdk17-core:8.14.0"
|
|
implementation "com.fathzer:javaluator:3.0.5"
|
|
|
|
implementation 'com.vladsch.flexmark:flexmark-html2md-converter:0.64.8'
|
|
|
|
developmentOnly("org.springframework.boot:spring-boot-devtools:$springBootVersion")
|
|
compileOnly "org.projectlombok:lombok:$lombokVersion"
|
|
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
|
|
|
|
testRuntimeOnly 'org.mockito:mockito-inline:5.2.0'
|
|
}
|
|
|
|
tasks.withType(JavaCompile).configureEach {
|
|
options.encoding = "UTF-8"
|
|
dependsOn "spotlessApply"
|
|
}
|
|
compileJava {
|
|
options.compilerArgs << "-parameters"
|
|
}
|
|
|
|
task writeVersion {
|
|
def propsFile = file("src/main/resources/version.properties")
|
|
def props = new Properties()
|
|
props.setProperty("version", version)
|
|
props.store(propsFile.newWriter(), null)
|
|
}
|
|
|
|
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
|
|
}
|
|
|
|
jar {
|
|
enabled = false
|
|
manifest {
|
|
attributes "Implementation-Title": "Stirling-PDF",
|
|
"Implementation-Version": project.version
|
|
}
|
|
|
|
}
|
|
|
|
tasks.named("test") {
|
|
useJUnitPlatform()
|
|
}
|
|
task printVersion {
|
|
doLast {
|
|
println project.version
|
|
}
|
|
}
|
|
|
|
task printMacVersion {
|
|
doLast {
|
|
println getMacVersion(project.version.toString())
|
|
}
|
|
}
|
|
|
|
tasks.named('generateOpenApiDocs') {
|
|
doNotTrackState("Tracking state is not supported for this task")
|
|
}
|