gpt4 book ai didi

spring-boot - Gradle子项目排序并生成jar(spring boot + Angular)

转载 作者:行者123 更新时间:2023-12-03 03:06:08 26 4
gpt4 key购买 nike

我是 Gradle 新手。我有以下项目设置:

  • 核心:包含 Spring Boot 2 应用程序
  • ui:Angular 5 前端应用

目标:我想从我的根文件夹运行“gradle build”,它应该包含一个包含 Angular 应用程序的 jar 文件。

我已经涵盖了“ui”:

apply plugin: "com.moowork.node"

buildscript {
repositories globalRepositories
dependencies {


classpath "com.moowork.gradle:gradle-node-plugin:1.2.0"
}
}

node {
// based on current version of Angular 5
version = "8.9.1"
npmVersion = "5.6.0"
download = true
}

task buildAngular(type: NpmTask) {
args = ['run', 'build']
}

buildAngular.dependsOn(npm_install)
build.dependsOn(buildAngular)

上述 gradle 定义将在静态后端核心应用程序中构建并生成 Angular 文件。

“核心”gradle 构建文件如下所示(我排除了依赖项),没有什么特别的:

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

group = 'xxx.xxxxxx'
version = '0.0.1-SNAPSHOT'

sourceCompatibility = 1.8
targetCompatibility = 1.8

buildscript {
repositories globalRepositories
ext {
springBootVersion = '2.0.0.M7'
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}

jar {
baseName = 'spring-boot-angular'
version = '1.0.0'
}

我怎样才能做到这一点?我希望当我从根项目运行“gradle build”时触发以下操作:

  1. 在用户界面中运行第一个“gradle build”
  2. 然后在核心中第二次运行“gradle build”
  3. 使用“core”生成的 jar 文件作为最终结果

我无法忍受类似 groovy 的语法,等不及 Gradle Kotlin DSL 成熟:P

希望有人能帮忙。当我准备好这个设置时,我将开源这个设置(与 Spring 5、Hibernate 5 和 Flyway 一起)。提前致谢。

最佳答案

您需要将前端(ui)buildAngular 任务的结果包含在后端(核心)构建中生成的 jar 中:

bootJar {
dependsOn ':ui:buildAngular'

into('BOOT-INF/classes/static') {
from "${project(':ui').projectDir}/dist"
}
}

事实上,bootJar 任务现在依赖于前端的 buildAngular 任务,这将使 gradle 根据需要对它们进行排序。

您可以浏览this project of mine有一个使用基本相同设置的示例(除了它使用yarn而不是npm来解决依赖关系)

关于spring-boot - Gradle子项目排序并生成jar(spring boot + Angular),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48381349/

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