hosting of webui within Spring jar

This commit is contained in:
Gauthier Roebroeck 2019-10-04 16:46:57 +08:00
parent b059788d4f
commit 7fc4832aee
4 changed files with 61 additions and 2 deletions

1
.gitignore vendored
View file

@ -25,3 +25,4 @@ dist/
nbdist/
.nb-gradle/
/komga/src/main/resources/public/

View file

@ -18,7 +18,10 @@ jobs:
include:
- stage: deploy
jdk: openjdk8
script: skip # do not rerun any tests
install:
- ./gradlew copyWebDist
- ./gradlew assemble
script: skip
deploy:
- provider: script
script: ./gradlew dockerPushBeta

View file

@ -1,5 +1,6 @@
import com.github.breadmoirai.githubreleaseplugin.GithubReleaseTask
import com.palantir.gradle.docker.DockerExtension
import org.apache.tools.ant.taskdefs.condition.Os
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
plugins {
@ -113,6 +114,42 @@ tasks {
from(zipTree(getByName("bootJar").outputs.files.singleFile))
into("$buildDir/dependency")
}
register<Delete>("deletePublic") {
delete("$projectDir/src/main/resources/public/")
}
register<Exec>("npmInstall") {
workingDir("$rootDir/komga-webui")
commandLine(
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
"npm.cmd"
} else {
"npm"
},
"install"
)
}
register<Exec>("npmBuild") {
dependsOn("npmInstall")
workingDir("$rootDir/komga-webui")
commandLine(
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
"npm.cmd"
} else {
"npm"
},
"run",
"build"
)
}
register<Copy>("copyWebDist") {
dependsOn("deletePublic", "npmBuild")
from("$rootDir/komga-webui/dist/")
into("$projectDir/src/main/resources/public/")
}
}
configure<DockerExtension> {

View file

@ -0,0 +1,18 @@
package org.gotson.komga.infrastructure.web
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorViewResolver
import org.springframework.http.HttpStatus
import org.springframework.stereotype.Component
import org.springframework.web.servlet.ModelAndView
import javax.servlet.http.HttpServletRequest
@Component
class SPAErrorViewResolver : ErrorViewResolver {
override fun resolveErrorView(request: HttpServletRequest, status: HttpStatus, model: MutableMap<String, Any>): ModelAndView =
if (status == HttpStatus.NOT_FOUND) {
ModelAndView("/", HttpStatus.TEMPORARY_REDIRECT)
} else {
ModelAndView("/error", status)
}
}