将生成工件复制到Gradle多项目生成中的源集
我有一个根gradle项目,由两个子项目组成:将生成工件复制到Gradle多项目生成中的源集,gradle,Gradle,我有一个根gradle项目,由两个子项目组成: 由wepback捆绑的JS前端称为admin frontend Java Spring后端称为管理后端 admin frontend中的构建任务运行webpack,该webpack将包发送到admin frontend/build/resources/static。admin backend中的相应命令编译Java应用程序 我需要格雷德尔: 构建管理前端 将admin前端/build/resources/static复制到admin后端/src/m
admin frontend
admin frontend
中的构建任务运行webpack,该webpack将包发送到admin frontend/build/resources/static
。admin backend
中的相应命令编译Java应用程序
我需要格雷德尔:
管理前端
admin前端/build/resources/static
复制到admin后端/src/main/resources/static
管理后端
,以便构建将包括在第二步复制的webpack捆绑包.
├── admin-backend
│ ├── build
│ ├── build.gradle
│ ├── src
│ ├── main
│ ├── resources
│ ├── static
├── admin-frontend
│ ├── build
│ │ ├── resources
│ │ ├── static
│ ├── build.gradle
├── build.gradle
├── gradle
│ └── wrapper
├── gradlew
├── gradlew.bat
└── settings.gradle
这是一个有趣的问题。请不要认为这个答案是权威性的,甚至是有效的,但这是你可能想尝试的 首先将静态资源声明为
管理前端
项目的输出或。您应该能够通过以下方式实现这一点:
configurations {
staticFiles
}
artifacts {
staticFiles file("$buildDir/resources/static"), {
builtBy build
}
}
老实说,我在猜测上面的语法。此外,您最好将文件(…)
替换为实际生成静态文件的任务或任务列表。请参见API文档中的示例
现在,您需要做的就是将该配置作为依赖项添加到后端项目中。比如:
configurations {
frontEndResources
}
dependencies {
frontEndResources project(path: ":path:to:admin-frontend", configuration: "staticResources")
}
然后,您应该能够使用配置.frontEndResources
以您认为合适的方式合并静态资源。例如,如果您想将它们包括在项目的JAR中:
jar.from configurations.frontEndResources
理想情况下,您可以将其配置为主要源集资源的一部分,但这似乎只适用于目录,而不适用于文件集合。我认为有一种方法可以解决这个问题:
管理前端
中生成静态资源的任务,将这些资源复制到管理后端
,并将它们打包到生成的应用程序中。换句话说,您应该让增量构建在管理前端
和管理后端
之间顺利运行现在剩下要做的就是看看它是否真的有效:)我在root
build.gradle中完成了以下任务:
task build(dependsOn: ':frontend:webpack') {
doLast {
def backendStaticResources = new File(project(':backend').projectDir ,"/src/main/resources/static");
def backendTemplates = new File(project(':backend').projectDir ,"/src/main/resources/templates");
[backendStaticResources,backendTemplates].each {
delete(fileTree(it) {
exclude '.gitignore'
})
}
copy {
from file('frontend/build/index.html')
into 'backend/src/main/resources/templates'
}
copy {
from 'frontend/build'
into 'backend/src/main/resources/static'
}
}
}
所以首先它运行webpack,将其构建复制到静态资源中,构建java