2023-01-27 19:23:40 +01:00
|
|
|
plugins {
|
2024-06-15 12:47:16 +02:00
|
|
|
id "java"
|
2024-11-23 11:51:17 +01:00
|
|
|
id "org.springframework.boot" version "3.4.0"
|
2024-08-03 11:33:57 +02:00
|
|
|
id "io.spring.dependency-management" version "1.1.6"
|
2024-06-15 12:47:16 +02:00
|
|
|
id "org.springdoc.openapi-gradle-plugin" version "1.8.0"
|
2023-12-30 03:34:36 +01:00
|
|
|
id "io.swagger.swaggerhub" version "1.3.2"
|
2024-08-15 23:41:03 +02:00
|
|
|
id "edu.sc.seis.launch4j" version "3.0.6"
|
2024-06-15 12:47:16 +02:00
|
|
|
id "com.diffplug.spotless" version "6.25.0"
|
2024-08-16 00:04:43 +02:00
|
|
|
id "com.github.jk1.dependency-license-report" version "2.9"
|
2024-08-23 12:52:45 +02:00
|
|
|
//id "nebula.lint" version "19.0.3"
|
2023-01-27 19:23:40 +01:00
|
|
|
}
|
|
|
|
|
2024-11-16 23:24:00 +01:00
|
|
|
|
|
|
|
|
2024-01-04 00:01:33 +01:00
|
|
|
import com.github.jk1.license.render.*
|
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
ext {
|
2024-11-23 11:51:17 +01:00
|
|
|
springBootVersion = "3.4.0"
|
2024-08-16 13:44:25 +02:00
|
|
|
pdfboxVersion = "3.0.3"
|
|
|
|
logbackVersion = "1.5.7"
|
2024-10-18 00:48:06 +02:00
|
|
|
imageioVersion = "3.12.0"
|
2024-11-19 00:16:31 +01:00
|
|
|
lombokVersion = "1.18.36"
|
2024-11-22 10:06:30 +01:00
|
|
|
bouncycastleVersion = "1.79"
|
2024-11-29 16:11:59 +01:00
|
|
|
springSecuritySamlVersion = "6.4.1"
|
|
|
|
openSamlVersion = "4.3.2"
|
2024-06-15 12:47:16 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
group = "stirling.software"
|
2024-12-05 20:16:18 +01:00
|
|
|
version = "0.36.0"
|
2024-11-26 21:50:35 +01:00
|
|
|
|
2024-05-19 00:59:40 +02:00
|
|
|
|
2024-08-03 14:18:51 +02:00
|
|
|
java {
|
|
|
|
// 17 is lowest but we support and recommend 21
|
|
|
|
sourceCompatibility = JavaVersion.VERSION_17
|
|
|
|
}
|
2023-01-27 19:23:40 +01:00
|
|
|
|
|
|
|
repositories {
|
2023-12-30 03:34:36 +01:00
|
|
|
mavenCentral()
|
2024-06-15 12:47:16 +02:00
|
|
|
maven { url "https://jitpack.io" }
|
2024-10-20 13:30:58 +02:00
|
|
|
maven { url "https://build.shibboleth.net/nexus/content/repositories/releases/" }
|
2024-10-14 23:34:41 +02:00
|
|
|
maven {
|
2024-10-20 13:30:58 +02:00
|
|
|
url 'https://build.shibboleth.net/maven/releases'
|
2024-10-14 23:34:41 +02:00
|
|
|
}
|
2023-01-27 19:23:40 +01:00
|
|
|
}
|
|
|
|
|
2024-01-04 00:01:33 +01:00
|
|
|
licenseReport {
|
|
|
|
renderers = [new JsonReportRenderer()]
|
|
|
|
}
|
|
|
|
|
2023-08-27 12:59:08 +02:00
|
|
|
sourceSets {
|
|
|
|
main {
|
|
|
|
java {
|
2024-06-15 12:47:16 +02:00
|
|
|
if (System.getenv("DOCKER_ENABLE_SECURITY") == "false") {
|
|
|
|
exclude "stirling/software/SPDF/config/security/**"
|
|
|
|
exclude "stirling/software/SPDF/controller/api/UserController.java"
|
2024-07-05 21:48:33 +02:00
|
|
|
exclude "stirling/software/SPDF/controller/api/DatabaseController.java"
|
2024-06-15 12:47:16 +02:00
|
|
|
exclude "stirling/software/SPDF/controller/web/AccountWebController.java"
|
2024-07-05 21:48:33 +02:00
|
|
|
exclude "stirling/software/SPDF/controller/web/DatabaseWebController.java"
|
2024-06-15 12:47:16 +02:00
|
|
|
exclude "stirling/software/SPDF/model/ApiKeyAuthenticationToken.java"
|
2024-07-22 22:15:10 +02:00
|
|
|
exclude "stirling/software/SPDF/model/AttemptCounter.java"
|
2024-06-15 12:47:16 +02:00
|
|
|
exclude "stirling/software/SPDF/model/Authority.java"
|
|
|
|
exclude "stirling/software/SPDF/model/PersistentLogin.java"
|
2024-08-16 12:57:37 +02:00
|
|
|
exclude "stirling/software/SPDF/model/SessionEntity.java"
|
2024-06-15 12:47:16 +02:00
|
|
|
exclude "stirling/software/SPDF/model/User.java"
|
|
|
|
exclude "stirling/software/SPDF/repository/**"
|
2023-08-27 12:59:08 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-06-03 23:56:15 +02:00
|
|
|
openApi {
|
2023-09-14 22:25:18 +02:00
|
|
|
apiDocsUrl = "http://localhost:8080/v1/api-docs"
|
2023-06-04 00:01:14 +02:00
|
|
|
outputDir = file("$projectDir")
|
2023-06-03 23:56:15 +02:00
|
|
|
outputFileName = "SwaggerDoc.json"
|
|
|
|
}
|
|
|
|
|
2023-06-10 16:05:38 +02:00
|
|
|
launch4j {
|
2024-06-15 12:47:16 +02:00
|
|
|
icon = "${projectDir}/src/main/resources/static/favicon.ico"
|
2023-06-10 16:05:38 +02:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
outfile="Stirling-PDF.exe"
|
|
|
|
headerType="console"
|
|
|
|
jarTask = tasks.bootJar
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
errTitle="Encountered error, Do you have Java 21?"
|
|
|
|
downloadUrl="https://download.oracle.com/java/21/latest/jdk-21_windows-x64_bin.exe"
|
2024-11-07 22:50:47 +01:00
|
|
|
variables=["BROWSER_OPEN=true"]
|
2024-06-15 12:47:16 +02:00
|
|
|
jreMinVersion="17"
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
mutexName="Stirling-PDF"
|
|
|
|
windowTitle="Stirling-PDF"
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
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."
|
2023-06-10 16:05:38 +02:00
|
|
|
}
|
|
|
|
|
2023-12-30 03:34:36 +01:00
|
|
|
spotless {
|
|
|
|
java {
|
|
|
|
target project.fileTree('src/main/java')
|
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
googleJavaFormat("1.22.0").aosp().reorderImports(false)
|
2023-12-30 03:34:36 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
importOrder("java", "javax", "org", "com", "net", "io")
|
2023-12-30 03:34:36 +01:00
|
|
|
toggleOffOn()
|
|
|
|
trimTrailingWhitespace()
|
|
|
|
indentWithSpaces()
|
|
|
|
endWithNewline()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-23 12:52:45 +02:00
|
|
|
//gradleLint {
|
|
|
|
// rules=['unused-dependency']
|
|
|
|
// }
|
2024-06-15 12:47:16 +02:00
|
|
|
tasks.wrapper {
|
|
|
|
gradleVersion = "8.7"
|
|
|
|
}
|
2024-08-23 12:52:45 +02:00
|
|
|
//tasks.withType(JavaCompile) {
|
|
|
|
// options.compilerArgs << "-Xlint:deprecation"
|
|
|
|
//}
|
|
|
|
configurations.all {
|
|
|
|
exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
|
|
|
|
}
|
2023-01-27 19:23:40 +01:00
|
|
|
dependencies {
|
2023-12-30 03:34:36 +01:00
|
|
|
//security updates
|
2024-11-24 15:36:30 +01:00
|
|
|
implementation "org.springframework:spring-webmvc:6.2.0"
|
2023-12-30 03:34:36 +01:00
|
|
|
|
2024-08-15 23:01:41 +02:00
|
|
|
implementation("io.github.pixee:java-security-toolkit:1.2.0")
|
2024-02-11 17:47:00 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
// implementation "org.yaml:snakeyaml:2.2"
|
2024-06-15 10:05:31 +02:00
|
|
|
implementation 'com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4'
|
2024-08-03 14:18:51 +02:00
|
|
|
|
2024-05-27 17:31:00 +02:00
|
|
|
// Exclude Tomcat and include Jetty
|
2024-08-23 12:52:45 +02:00
|
|
|
implementation("org.springframework.boot:spring-boot-starter-web:$springBootVersion")
|
2024-06-15 12:47:16 +02:00
|
|
|
implementation "org.springframework.boot:spring-boot-starter-jetty:$springBootVersion"
|
|
|
|
|
|
|
|
implementation "org.springframework.boot:spring-boot-starter-thymeleaf:$springBootVersion"
|
2024-10-14 23:34:41 +02:00
|
|
|
implementation 'com.posthog.java:posthog:1.1.1'
|
|
|
|
implementation 'com.googlecode.owasp-java-html-sanitizer:owasp-java-html-sanitizer:20240325.1'
|
2024-10-20 13:30:58 +02:00
|
|
|
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
if (System.getenv("DOCKER_ENABLE_SECURITY") != "false") {
|
|
|
|
implementation "org.springframework.boot:spring-boot-starter-security:$springBootVersion"
|
2024-12-09 23:44:23 +01:00
|
|
|
implementation "org.thymeleaf.extras:thymeleaf-extras-springsecurity5:3.1.3.RELEASE"
|
2024-06-15 12:47:16 +02:00
|
|
|
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
|
|
|
|
implementation "org.springframework.boot:spring-boot-starter-oauth2-client:$springBootVersion"
|
2024-02-11 17:47:00 +01:00
|
|
|
|
2024-11-29 16:11:59 +01:00
|
|
|
implementation "org.springframework.session:spring-session-core:$springBootVersion"
|
|
|
|
|
2024-10-14 23:34:41 +02:00
|
|
|
implementation 'com.unboundid.product.scim2:scim2-sdk-client:2.3.5'
|
2024-11-24 15:36:53 +01:00
|
|
|
// Don't upgrade h2database
|
|
|
|
runtimeOnly "com.h2database:h2:2.3.232"
|
2024-10-20 13:30:58 +02:00
|
|
|
constraints {
|
2024-11-29 16:11:59 +01:00
|
|
|
implementation "org.opensaml:opensaml-core:$openSamlVersion"
|
|
|
|
implementation "org.opensaml:opensaml-saml-api:$openSamlVersion"
|
|
|
|
implementation "org.opensaml:opensaml-saml-impl:$openSamlVersion"
|
2024-10-20 13:30:58 +02:00
|
|
|
}
|
2024-11-29 16:11:59 +01:00
|
|
|
implementation "org.springframework.security:spring-security-saml2-service-provider:$springSecuritySamlVersion"
|
|
|
|
// implementation 'org.springframework.security:spring-security-core:$springSecuritySamlVersion'
|
2024-10-20 13:30:58 +02:00
|
|
|
implementation 'com.coveo:saml-client:5.0.0'
|
2024-10-29 18:56:29 +01:00
|
|
|
|
|
|
|
|
2023-08-27 12:59:08 +02:00
|
|
|
}
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
testImplementation "org.springframework.boot:spring-boot-starter-test:$springBootVersion"
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2023-12-24 02:27:04 +01:00
|
|
|
// Batik
|
2024-10-18 00:48:41 +02:00
|
|
|
implementation "org.apache.xmlgraphics:batik-all:1.18"
|
2024-09-02 22:01:50 +02:00
|
|
|
|
2023-12-24 02:27:04 +01:00
|
|
|
// TwelveMonkeys
|
2024-08-24 18:08:51 +02:00
|
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-batik:$imageioVersion"
|
2024-08-23 12:52:45 +02:00
|
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-bmp:$imageioVersion"
|
2024-08-24 18:08:51 +02:00
|
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-hdr:$imageioVersion"
|
|
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-icns:$imageioVersion"
|
|
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-iff:$imageioVersion"
|
2024-08-23 12:52:45 +02:00
|
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-jpeg:$imageioVersion"
|
2024-08-24 18:08:51 +02:00
|
|
|
// 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"
|
2024-08-23 12:52:45 +02:00
|
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-tiff:$imageioVersion"
|
|
|
|
runtimeOnly "com.twelvemonkeys.imageio:imageio-webp:$imageioVersion"
|
2024-08-24 18:08:51 +02:00
|
|
|
// runtimeOnly "com.twelvemonkeys.imageio:imageio-xwd:$imageioVersion"
|
2024-06-15 12:47:16 +02:00
|
|
|
|
2024-10-23 13:17:40 +02:00
|
|
|
// Image metadata extractor
|
|
|
|
implementation "com.drewnoakes:metadata-extractor:2.19.0"
|
|
|
|
|
2024-11-26 21:38:51 +01:00
|
|
|
implementation "commons-io:commons-io:2.18.0"
|
2024-06-15 12:50:31 +02:00
|
|
|
implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0"
|
2023-10-31 18:58:40 +01:00
|
|
|
//general PDF
|
|
|
|
|
|
|
|
// https://mvnrepository.com/artifact/com.opencsv/opencsv
|
2024-06-15 12:47:16 +02:00
|
|
|
implementation ("com.opencsv:opencsv:5.9") {
|
|
|
|
exclude group: "commons-logging", module: "commons-logging"
|
2023-12-18 15:52:18 +01:00
|
|
|
}
|
2024-02-11 17:47:00 +01:00
|
|
|
|
2024-08-16 13:44:25 +02:00
|
|
|
implementation ("org.apache.pdfbox:pdfbox:$pdfboxVersion") {
|
2024-06-15 12:47:16 +02:00
|
|
|
exclude group: "commons-logging", module: "commons-logging"
|
2023-12-18 15:52:18 +01:00
|
|
|
}
|
2024-02-11 17:47:00 +01:00
|
|
|
|
2024-08-16 13:44:25 +02:00
|
|
|
implementation ("org.apache.pdfbox:xmpbox:$pdfboxVersion") {
|
2024-06-15 12:47:16 +02:00
|
|
|
exclude group: "commons-logging", module: "commons-logging"
|
2023-12-18 15:52:18 +01:00
|
|
|
}
|
2024-08-16 13:44:25 +02:00
|
|
|
|
2024-11-24 00:28:44 +01:00
|
|
|
// 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"
|
|
|
|
}
|
|
|
|
|
2024-08-16 13:44:25 +02:00
|
|
|
implementation 'org.apache.pdfbox:jbig2-imageio:3.0.4'
|
|
|
|
|
|
|
|
implementation "org.bouncycastle:bcprov-jdk18on:$bouncycastleVersion"
|
|
|
|
implementation "org.bouncycastle:bcpkix-jdk18on:$bouncycastleVersion"
|
2024-06-15 12:47:16 +02:00
|
|
|
implementation "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
|
2024-11-22 10:06:16 +01:00
|
|
|
implementation "io.micrometer:micrometer-core:1.14.1"
|
2024-06-15 12:47:16 +02:00
|
|
|
implementation group: "com.google.zxing", name: "core", version: "3.5.3"
|
2023-08-01 01:03:13 +02:00
|
|
|
// https://mvnrepository.com/artifact/org.commonmark/commonmark
|
2024-10-22 01:21:14 +02:00
|
|
|
implementation "org.commonmark:commonmark:0.24.0"
|
2024-10-22 01:19:14 +02:00
|
|
|
implementation "org.commonmark:commonmark-ext-gfm-tables:0.24.0"
|
2024-06-15 12:47:16 +02:00
|
|
|
// https://mvnrepository.com/artifact/com.bucket4j/bucket4j_jdk17
|
2024-08-20 11:55:00 +02:00
|
|
|
implementation "com.bucket4j:bucket4j_jdk17-core:8.14.0"
|
2024-09-10 12:18:24 +02:00
|
|
|
implementation "com.fathzer:javaluator:3.0.5"
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
developmentOnly("org.springframework.boot:spring-boot-devtools:$springBootVersion")
|
2024-08-16 13:44:25 +02:00
|
|
|
compileOnly "org.projectlombok:lombok:$lombokVersion"
|
|
|
|
annotationProcessor "org.projectlombok:lombok:$lombokVersion"
|
2024-03-10 15:00:00 +01:00
|
|
|
|
2024-08-23 12:52:45 +02:00
|
|
|
testRuntimeOnly 'org.mockito:mockito-inline:5.2.0'
|
2023-01-27 19:23:40 +01:00
|
|
|
}
|
|
|
|
|
2024-06-05 22:16:22 +02:00
|
|
|
tasks.withType(JavaCompile).configureEach {
|
2024-06-15 12:47:16 +02:00
|
|
|
options.encoding = "UTF-8"
|
|
|
|
dependsOn "spotlessApply"
|
2023-12-30 20:37:46 +01:00
|
|
|
}
|
2024-01-13 01:37:19 +01:00
|
|
|
compileJava {
|
2024-06-15 12:47:16 +02:00
|
|
|
options.compilerArgs << "-parameters"
|
2024-01-13 01:37:19 +01:00
|
|
|
}
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2024-08-03 14:18:51 +02:00
|
|
|
task writeVersion {
|
2024-06-15 12:47:16 +02:00
|
|
|
def propsFile = file("src/main/resources/version.properties")
|
2023-06-03 23:56:15 +02:00
|
|
|
def props = new Properties()
|
2024-06-15 12:47:16 +02:00
|
|
|
props.setProperty("version", version)
|
2023-06-03 23:56:15 +02:00
|
|
|
props.store(propsFile.newWriter(), null)
|
|
|
|
}
|
|
|
|
|
2023-06-04 00:21:12 +02:00
|
|
|
swaggerhubUpload {
|
|
|
|
//dependsOn generateOpenApiDocs // Depends on your task generating Swagger docs
|
2024-06-15 12:47:16 +02:00
|
|
|
api "Stirling-PDF" // The name of your API on SwaggerHub
|
|
|
|
owner "Frooodle" // Your SwaggerHub username (or organization name)
|
2023-06-04 00:21:12 +02:00
|
|
|
version project.version // The version of your API
|
2024-06-15 12:47:16 +02:00
|
|
|
inputFile "./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
|
2023-06-03 23:56:15 +02:00
|
|
|
}
|
|
|
|
|
2023-01-29 15:10:12 +01:00
|
|
|
jar {
|
|
|
|
enabled = false
|
2023-03-20 22:55:11 +01:00
|
|
|
manifest {
|
2024-06-15 12:47:16 +02:00
|
|
|
attributes "Implementation-Title": "Stirling-PDF",
|
|
|
|
"Implementation-Version": project.version
|
2023-03-20 22:55:11 +01:00
|
|
|
}
|
2023-10-31 18:58:40 +01:00
|
|
|
|
2023-01-29 15:10:12 +01:00
|
|
|
}
|
|
|
|
|
2024-06-15 12:47:16 +02:00
|
|
|
tasks.named("test") {
|
2023-12-30 03:34:36 +01:00
|
|
|
useJUnitPlatform()
|
2023-01-27 19:23:40 +01:00
|
|
|
}
|
2023-01-29 18:06:53 +01:00
|
|
|
|
2024-08-03 14:18:51 +02:00
|
|
|
task printVersion {
|
2024-06-05 22:16:22 +02:00
|
|
|
println project.version
|
2023-01-27 19:23:40 +01:00
|
|
|
}
|