blob: 58a2f4b927bfb781f286bc8930476151d6647f3e [file] [log] [blame]
import com.bmuschko.gradle.docker.tasks.image.DockerBuildImage
import com.bmuschko.gradle.docker.tasks.image.DockerPushImage
plugins {
id 'java'
id 'io.quarkus'
id "com.bmuschko.docker-remote-api" version "${dockerPluginVersion}"
id "com.diffplug.gradle.spotless" version "${spotlessPluginVersion}"
id "com.github.ben-manes.versions" version "${versionsPluginVersion}"
id "se.patrikerdes.use-latest-versions" version "${useLatestVersionsPluginVersion}"
}
sourceCompatibility = 11
targetCompatibility = 11
repositories {
mavenLocal()
mavenCentral()
}
tasks {
dependencyUpdates {
checkConstraints = true
gradleReleaseChannel = "current"
revision = "release"
}
}
dependencies {
implementation enforcedPlatform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}")
implementation 'io.quarkus:quarkus-agroal'
implementation 'io.quarkus:quarkus-elytron-security-properties-file'
implementation 'io.quarkus:quarkus-flyway'
implementation 'io.quarkus:quarkus-hibernate-orm-panache'
implementation 'io.quarkus:quarkus-hibernate-validator'
implementation 'io.quarkus:quarkus-jdbc-postgresql'
//implementation 'io.quarkus:quarkus-kubernetes'
implementation 'io.quarkus:quarkus-mailer'
implementation 'io.quarkus:quarkus-oidc'
implementation 'io.quarkus:quarkus-resteasy'
implementation 'io.quarkus:quarkus-resteasy-jsonb'
implementation 'io.quarkus:quarkus-resteasy-qute'
implementation 'io.quarkus:quarkus-scheduler'
implementation 'io.quarkus:quarkus-smallrye-jwt'
//implementation 'io.quarkus:quarkus-elytron-security'
//implementation 'io.quarkus:quarkus-elytron-security-jdbc'
//implementation 'io.quarkus:quarkus-elytron-security-oauth2'
//implementation 'io.quarkus:quarkus-keycloak-authorization'
//implementation 'io.quarkus:quarkus-quartz'
//implementation 'io.quarkus:quarkus-smallrye-fault-tolerance'
//implementation 'io.quarkus:quarkus-smallrye-health'
//implementation 'io.quarkus:quarkus-smallrye-metrics'
//implementation 'io.quarkus:quarkus-smallrye-openapi'
//implementation 'jakarta.transaction:jakarta.transaction-api'
//implementation 'org.jboss.spec.javax.xml.bind:jboss-jaxb-api_2.3_spec'
//implementation 'jakarta.persistence:jakarta.persistence-api'
implementation "org.bitbucket.b_c:jose4j"
implementation 'org.mapstruct:mapstruct'
compileOnly 'org.mapstruct:mapstruct-processor'
compileOnly 'com.google.code.findbugs:jsr305'
implementation 'com.vladmihalcea:hibernate-types-52'
implementation "jakarta.security.jacc:jakarta.security.jacc-api"
implementation "net.java.dev.jna:jna"
testImplementation 'io.quarkus:quarkus-junit5'
testImplementation 'io.rest-assured:rest-assured'
implementation "com.rometools:rome"
implementation "com.vladsch.flexmark:flexmark-all"
implementation "org.jsoup:jsoup"
annotationProcessor "org.hibernate:hibernate-jpamodelgen"
constraints {
implementation "com.vladmihalcea:hibernate-types-52:${hibernateTypesVersion}"
implementation "org.mapstruct:mapstruct:${mapstructVersion}"
compileOnly "org.mapstruct:mapstruct-processor:${mapstructVersion}"
compileOnly "com.google.code.findbugs:jsr305:${findbugsJsr305Version}"
implementation "jakarta.security.jacc:jakarta.security.jacc-api:${jakartaJaccVersion}"
implementation "net.java.dev.jna:jna:${jnaVersion}"
implementation "org.bitbucket.b_c:jose4j:${jose4jVersion}"
implementation "com.vladsch.flexmark:flexmark-all:${flexmarkVersion}"
implementation "org.jsoup:jsoup:${jsoupVersion}"
implementation "com.rometools:rome:${romeVersion}"
annotationProcessor "org.hibernate:hibernate-jpamodelgen:${hibernateVersion}"
}
}
spotless {
java {
googleJavaFormat()
removeUnusedImports()
}
}
group "eu.mulk"
version "${projectVersion}"
task yarnInstall(type:Exec) {
def resourceDir = "src/main/resources/META-INF/resources"
onlyIf { !project.hasProperty('skipWeb') }
inputs.file "${resourceDir}/package.json"
outputs.dir "${resourceDir}/node_modules"
outputs.file "${resourceDir}/yarn.lock"
workingDir resourceDir
commandLine "yarn", "install"
}
task snowpack(type:Exec) {
def resourceDir = "src/main/resources/META-INF/resources"
onlyIf { !project.hasProperty('skipWeb') }
dependsOn yarnInstall
inputs.dir "${resourceDir}/node_modules"
inputs.file "${resourceDir}/yarn.lock"
inputs.file "${resourceDir}/package.json"
outputs.dir "${resourceDir}/web_modules"
workingDir resourceDir
commandLine "yarn", "run", "snowpack", "--optimize"
}
task flow(type:Exec) {
def resourceDir = "src/main/resources/META-INF/resources"
onlyIf { !project.hasProperty('skipWeb') }
dependsOn snowpack
workingDir resourceDir
commandLine "yarn", "run", "flow", "--color=always"
}
task eslint(type:Exec) {
def resourceDir = "src/main/resources/META-INF/resources"
onlyIf { !project.hasProperty('skipWeb') }
dependsOn snowpack
workingDir resourceDir
commandLine "yarn", "run", "eslint", "cms2", "bookmarks", "--color"
}
task compileWeb {
dependsOn snowpack
dependsOn flow
dependsOn eslint
doLast {}
}
processResources {
exclude("META-INF/resources/node_modules/**/*")
exclude("META-INF/resources/package.json")
exclude("META-INF/resources/yarn.lock")
}
quarkusBuild.dependsOn compileWeb
task buildDocker(type: DockerBuildImage) {
onlyIf { !project.hasProperty('skipDocker') }
inputDir = file(".")
dockerFile = file("src/main/docker/Dockerfile.jvm")
images.add("docker.benkard.de/mulk/mulkcms2:${projectVersion}")
}
buildDocker.dependsOn quarkusBuild
assemble.dependsOn buildDocker
task pushDocker(type: DockerPushImage) {
images.add("docker.benkard.de/mulk/mulkcms2:${projectVersion}")
}
pushDocker.dependsOn buildDocker