我有一个根gradle项目,包括两个子项目:
admin-frontend
admin-backend
中的构建任务运行webpack,它将包发送到admin-frontend
。 admin-frontend/build/resources/static
中的相应命令编译Java应用程序。
我需要gradle:
admin-backend
admin-frontend
复制到admin-frontend/build/resources/static
admin-backend/src/main/resources/static
,以便构建包含在第二步复制的webpack包我该怎么做?
这是目录结构:
admin-backend
这是个有趣的问题。请不要将这个答案视为权威的,或者甚至是能够/可以工作的东西,但这可能是您想要尝试的。
首先将静态资源声明为.
├── 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
项目的输出 - 或artifact。您应该可以使用以下内容执行此操作:
admin-frontend
老实说,我猜测上面的语法。此外,您最好将configurations {
staticFiles
}
artifacts {
staticFiles file("$buildDir/resources/static"), {
builtBy build
}
}
替换为实际生成静态文件的任务或任务列表。请参阅file(...)
API文档中的示例。
现在,您需要做的就是将该配置添加为后端项目中的依赖项。就像是:
ArtifactHandler
然后,您应该能够使用configurations {
frontEndResources
}
dependencies {
frontEndResources project(path: ":path:to:admin-frontend", configuration: "staticResources")
}
来合并您认为合适的静态资源。例如,如果您想将它们包含在项目的JAR中:
configurations.frontEndResources
理想情况下,您可以将其配置为主要源集资源的一部分,但这似乎只能用于目录,而不是文件集合。我认为这有一种愚蠢的方式:
jar.from configurations.frontEndResources
) - 确保指定将输出声明为see second example in SourceSetOutput
API doc从步骤1开始的任务builtBy
中的任务,将这些资源复制到admin-frontend
,并将它们打包到生成的应用程序中。换句话说,你应该在admin-backend
和admin-frontend
之间顺利地进行增量构建。现在剩下要做的就是看看它是否真的有效:)
我最终在根admin-backend
中执行了以下任务:
build.gradle
首先它运行webpack,将其构建复制到静态资源中,构建java。