mirror of https://github.com/halo-dev/halo
197 lines
5.7 KiB
Groovy
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
|
|
}
|
|
}
|