import de.undercouch.gradle.tasks.download.Download import org.gradle.crypto.checksum.Checksum plugins { id 'org.springframework.boot' version '3.2.3' id 'io.spring.dependency-management' version '1.1.0' id "com.gorylenko.gradle-git-properties" version "2.3.2" id "checkstyle" id 'java' id 'jacoco' id "de.undercouch.download" version "5.3.1" id "io.freefair.lombok" version "8.4" id 'org.gradle.crypto.checksum' version '1.4.0' } group = 'run.halo.app' compileJava.options.encoding = 'UTF-8' compileTestJava.options.encoding = 'UTF-8' java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } 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' } } tasks.named('jar') { enabled = false } dependencies { implementation project(':api') 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' } tasks.register('createChecksums', Checksum) { dependsOn tasks.named('bootJar') inputFiles.setFrom(layout.buildDirectory.files('libs')) outputDirectory = layout.buildDirectory.dir("libs") checksumAlgorithm = Checksum.Algorithm.SHA256 } tasks.named('processResources', ProcessResources) { from project(':ui').layout.buildDirectory.dir('dist') into layout.buildDirectory.dir('resources/main') configure { mustRunAfter project(':ui').tasks.named('build') } } tasks.named('build') { dependsOn tasks.named('createChecksums') } tasks.named('test', Test) { useJUnitPlatform() 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/v1.9.0/plugin-comment-widget-1.9.0.jar': 'plugin-comment-widget.jar', 'https://github.com/halo-dev/plugin-search-widget/releases/download/v1.3.1/plugin-search-widget-1.3.1.jar': 'plugin-search-widget.jar', 'https://github.com/halo-dev/plugin-sitemap/releases/download/v1.1.1/plugin-sitemap-1.1.1.jar': 'plugin-sitemap.jar', 'https://github.com/halo-dev/plugin-feed/releases/download/v1.2.1/plugin-feed-1.2.1.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-cWbLS/assets/app-release-cWbLS-fZYSx': '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()] } }