gradle - 无论如何要在构建任务中执行特定任务吗?
问题描述
我想在运行根项目的构建任务时将子模块存档文件复制到根项目构建目录中
task archive(type: Zip) {
dependsOn copyWars
archiveName = "${project.name}-${version}.zip"
destinationDir = file('build/dist')
from 'build/libs'
exclude "*.zip"
includeEmptyDirs = false
}
我已经尝试过build.dependsOn archive
和build.finalizedBy archive
我想要在运行根模块构建任务时包含子模块war文件的根模块zip文件。设 a,b 两个子模块,c 是根模块。所以c.zip
应该包含a.war
& b.war
。但是没有c.zip
创建文件。可能是我做错了方法。请任何人告诉我正确的道路。
解决方案
假设您有两个子项目war1
并war2
产生war
人工制品:根项目脚本中的以下配置应该可以工作:
build.gradle(根项目)
// copy war artifacts from sub-projects
task copyWars(type: Copy){
into "build/libs"
from project("war1").war
from project("war2").war
}
// create archive with content from 'build/libs' directory
task archive(type: Zip) {
dependsOn copyWars
archiveName = "${project.name}-${version}.zip"
destinationDir = file('build/dist')
from 'build/libs'
exclude "*.zip"
includeEmptyDirs = false
}
// add 'archive' task to the main "build" lifecycle
build.dependsOn archive
您还可以简化并摆脱copyWars
(如果此任务目的只是将战争从子项目复制到根项目):
task archive(type: Zip) {
dependsOn copyWars
archiveName = "${project.name}-${version}.zip"
destinationDir = file('build/dist')
from 'build/libs'
from project("war1").war
from project("war2").war
exclude "*.zip"
includeEmptyDirs = false
}
build.dependsOn archive
推荐阅读
- c++ - CMake target_sources() 用于更大的库
- flutter - 通过 Facebook 进行 Flutter 和 Firebase 身份验证:与设备的连接丢失
- c# - 继承控件中的 UWP 数据绑定
- mysql - MYSQL Group By Query,根据where条件减去数字
- java - JDeveloper 找不到具有 xades4j.jar 的 SignerEPES
- php - 向 Binance GET url 添加参数会导致签名错误
- apache-storm - 启动风暴雨云命令不起作用
- youtube-api - 可以发送到 YT 视频 API 的 ID 列表的最大可能长度是多少?
- .htaccess - Joomla Gzip 压缩仅在主页中工作
- c# - SignalR 集线器不响应对象参数