gpt4 book ai didi

java - 使用 Gradle 将前端构建的分发文件夹包含在 JAR 中

转载 作者:行者123 更新时间:2023-11-30 02:18:48 26 4
gpt4 key购买 nike

我是一个 gradle 初学者,我正在努力将前端分发构建文件夹包含在后端 jar 中(我使用 Spring Boot,前端是一个 ionic 应用程序)。在 backend.gradle 中,我配置了 jar-Task,该任务应将 frontend-build 文件夹(称为 www)包含到后端的 build 文件夹中。 jar 任务运行完毕,但所需的工件不存在于后端构建文件夹中,因此也不存在于最终的 jar 中。很高兴获得任何帮助。

项目结构:

project
build.gradle
settings.gradle
backend
--> backend.gradle
frontend
--> frontend.gradle

设置.gradle

include 'backend'
include 'frontend'

rootProject.children.each {
it.buildFileName = it.name + '.gradle'
}

构建.gradle

allprojects {

buildscript {
repositories {
mavenCentral()
}
}

apply plugin: 'idea'

repositories {
mavenCentral()
}
}

前端.gradle

plugins {
id "com.moowork.node" version "1.2.0"
}

task clean(dependsOn: 'npm_run_clean') {
}

task build(dependsOn: 'npm_run_build') {
}

后端.gradle

buildscript {
ext {
springBootVersion = '1.5.8.RELEASE'
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'

group = 'ch.renewinkler'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8


jar {
from('frontend/www') {
into('public')
}
}

processResources.dependsOn(':frontend:build')

dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
testCompile('org.springframework.boot:spring-boot-starter-test')
}

最佳答案

你需要告诉gradle,jar任务依赖于前端的构建任务,否则它可能会在构建任务之前运行jar文件,因此jar中没有任何内容。

通过名称引用项目也是一个更好的主意,而不是使用绝对路径:

jar {
dependsOn(':frontend:build')

into('public') {
from "${project(':frontend').projectDir}/www"
}
}

关于java - 使用 Gradle 将前端构建的分发文件夹包含在 JAR 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47484295/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com