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

c86crjj0  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(134)

我是一个Gradle初学者,我正在努力将前端发行版构建文件夹包含在后端jar中(我使用Sping Boot ,前端是一个离子应用程序)。在backend.gradle中,我配置了jar-Task,它应该将前端构建文件夹(称为www)包含到后端的构建文件夹中。jar任务将继续运行,但是所需的构件并不存在于backend-build文件夹中,因此也不存在于最终jar中。我很乐意得到任何帮助。
项目结构:

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

settings.gradle

include 'backend'
include 'frontend'

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

build.gradle

allprojects {

    buildscript {
        repositories {
            mavenCentral()
        }
    }

    apply plugin: 'idea'

    repositories {
        mavenCentral()
    }    
}

frontend.gradle

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

task clean(dependsOn: 'npm_run_clean') {
}

task build(dependsOn: 'npm_run_build') {
}

backend.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')
}
a7qyws3x

a7qyws3x1#

你需要告诉gradle jar任务依赖于前端的build任务,否则它可能会在build任务之前运行jar文件,因此没有什么可以包含在jar中。
通过项目名称引用项目也是一个更好的主意,而不是使用绝对路径:

jar {
    dependsOn(':frontend:build')

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

lhcgjxsq2#

当创建文件夹时,您是否也获得了dist文件夹?

相关问题