【发布时间】:2021-05-11 19:40:58
【问题描述】:
我需要构建一个 war 文件,其中包含来自不同存储库的 Spring Boot 后端和 Angular 前端。
这个想法是 Azure DevOps 在管道中构建 Angular 应用程序,Spring Boot 管道获取 Angular 工件以包含在 /static 资源目录下。
我目前正在本地试验以创建正确的 Gradle 代码。
我有一个my-app 的副本,这是Angular 在ng build 之后在dist 下创建的目录,我将把它粘贴到后端的存储库根目录下,与build.gradle 处于同一级别
我需要告诉 Gradle,如果目录存在,它的内容必须映射到资源下的static 目录
def frontEndDirectory = file('my-app')
if (frontEndDirectory.isDirectory()) {
project.sourceSets {
main {
resources {
srcDir frontEndDirectory
}
}
}
}
这会将资源直接复制到war文件的WEB-INF/classes下,但它们应该在WEB-INF/classes/static下
我想问如何轻松告诉Gradle从某个目录中选择文件并将它们放到资源的/static子目录中。
今天我将我的 Angular 应用程序作为一个目录,但我很可能需要从 DevOps 中的 zip 文件中获取它。这将是我的下一步。
我也试过
创建 CopyTask 脚本
if (frontEndDirectory.isDirectory()) {
task copyGeneratedFiles(type: Copy) {
from frontEndDirectory
into 'build/resources/main/static'
}
tasks.war.dependsOn(copyGeneratedFiles)
}
这具有将文件复制到暂存目录 (build/resources/main/static) 中正确位置的期望结果,但文件未出现在最终的 war 文件中
【问题讨论】:
-
你能尝试不同的任务依赖吗?我建议让
processResources依赖于copyGeneratedFiles(因为这些是资源)。您也可以尝试直接配置 processResources 任务(这是一个复制任务),例如``` processResources { from("my-webapp") { into("static") } } -
赢家是.... ????
标签: angular spring-boot gradle