halo/application/build.gradle

197 lines
5.7 KiB
Groovy

import de.undercouch.gradle.tasks.download.Download
import org.gradle.crypto.checksum.Checksum
plugins {
id "checkstyle"
id 'java'
id 'idea'
id 'jacoco'
alias(libs.plugins.spring.boot)
alias(libs.plugins.spring.dependency.management)
alias(libs.plugins.git.properties)
alias(libs.plugins.undercouch.download)
alias(libs.plugins.lombok)
alias(libs.plugins.checksum)
alias(libs.plugins.springdoc.openapi)
alias(libs.plugins.versions)
}
group = 'run.halo.app'
tasks.withType(JavaCompile).configureEach {
options.release = 21
options.encoding = 'UTF-8'
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(21)
}
}
idea {
module {
resourceDirs += file("../ui/build/dist/")
}
}
checkstyle {
toolVersion = "9.3"
showViolations = false
ignoreFailures = false
}
repositories {
mavenCentral()
maven { url = 'https://repo.spring.io/milestone' }
maven { url = 'https://s01.oss.sonatype.org/content/repositories/snapshots' }
}
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
springBoot {
buildInfo {
properties {
artifact = 'halo'
name = 'halo'
}
}
}
bootJar {
archiveBaseName = 'halo'
manifest {
attributes 'Implementation-Title': 'Halo Application',
'Implementation-Vendor': 'Halo OSS Team'
}
}
gitProperties {
dotGitDirectory = layout.settingsDirectory.dir('.git')
}
tasks.named('jar') {
enabled = false
}
dependencies {
implementation(project(':api')) {
exclude group: 'org.thymeleaf', module: 'thymeleaf-spring6'
}
implementation 'org.thymeleaf:thymeleaf'
// Fix https://github.com/halo-dev/halo/issues/7289
// Build from https://github.com/halo-dev/thymeleaf/commit/097a51cbaae114c87973e5de4ae9b88115976221
implementation files('libs/thymeleaf-spring6-3.1.4-rc.1+halo.2.21.6.jar')
annotationProcessor platform(project(':platform:application'))
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
annotationProcessor "org.springframework:spring-context-indexer"
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
testImplementation 'io.projectreactor:reactor-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
annotationProcessor 'com.github.therapi:therapi-runtime-javadoc-scribe'
// webjars
runtimeOnly 'org.webjars.npm:jsencrypt:3.3.2'
runtimeOnly 'org.webjars.npm:normalize.css:8.0.1'
}
tasks.register('createChecksums', Checksum) {
dependsOn tasks.named('bootJar')
inputFiles.setFrom(layout.buildDirectory.files('libs'))
outputDirectory = layout.buildDirectory.dir("libs")
checksumAlgorithm = Checksum.Algorithm.SHA256
}
tasks.register('copyUiDist', Copy) {
from project(':ui').layout.buildDirectory.dir('dist')
into layout.buildDirectory.dir('resources/main')
configure {
mustRunAfter project(':ui').tasks.named('build')
}
}
tasks.named('processResources', ProcessResources) {
dependsOn tasks.named('copyUiDist')
}
tasks.named('build') {
dependsOn tasks.named('createChecksums')
}
tasks.named('test', Test) {
useJUnitPlatform()
maxHeapSize = '1G'
finalizedBy jacocoTestReport
}
tasks.named('jacocoTestReport', JacocoReport) {
reports {
xml.required = true
html.required = false
}
}
ext.presetPluginUrls = [
'https://github.com/halo-dev/plugin-comment-widget/releases/download/v3.0.0/plugin-comment-widget-3.0.0.jar' : 'plugin-comment-widget.jar',
'https://github.com/halo-dev/plugin-search-widget/releases/download/v1.7.0/plugin-search-widget-1.7.0.jar' : 'plugin-search-widget.jar',
'https://github.com/halo-dev/plugin-sitemap/releases/download/v1.1.2/plugin-sitemap-1.1.2.jar' : 'plugin-sitemap.jar',
'https://github.com/halo-dev/plugin-feed/releases/download/v1.5.0/plugin-feed-1.5.0.jar' : 'plugin-feed.jar',
// Currently, plugin-app-store is not open source, so we need to download it from the official website.
// Please see https://github.com/halo-dev/plugin-app-store/issues/55
// https://www.halo.run/store/apps/app-VYJbF
'https://www.halo.run/store/apps/app-VYJbF/releases/download/app-release-uadbam6p/assets/app-release-uadbam6p-kwbir0ge': 'appstore.jar',
]
tasks.register('downloadPluginPresets', Download) {
doFirst {
delete 'src/main/resources/presets/plugins'
}
src presetPluginUrls.keySet()
dest 'src/main/resources/presets/plugins'
eachFile { f ->
f.name = presetPluginUrls[f.sourceURL.toString()]
}
}
openApi {
outputDir = file("$rootDir/api-docs/openapi/v3_0")
groupedApiMappings = [
'http://localhost:8091/v3/api-docs/apis_aggregated.api_v1alpha1': 'aggregated.json',
'http://localhost:8091/v3/api-docs/apis_public.api_v1alpha1' : 'apis_public.api_v1alpha1.json',
'http://localhost:8091/v3/api-docs/apis_console.api_v1alpha1' : 'apis_console.api_v1alpha1.json',
'http://localhost:8091/v3/api-docs/apis_uc.api_v1alpha1' : 'apis_uc.api_v1alpha1.json',
'http://localhost:8091/v3/api-docs/apis_extension.api_v1alpha1' : 'apis_extension.api_v1alpha1.json',
]
customBootRun {
args = ['--server.port=8091',
'--spring.profiles.active=doc',
"--halo.work-dir=${layout.buildDirectory.get()}/tmp/workdir-for-generating-apidocs"]
}
}
tasks.named('forkedSpringBootRun') {
dependsOn ':api:jar'
}
tasks.named('generateOpenApiDocs') {
outputs.upToDateWhen {
false
}
}