为了账号安全,请及时绑定邮箱和手机立即绑定

Gradle - 在多模块项目构建中复制所有更改模块的 jar

Gradle - 在多模块项目构建中复制所有更改模块的 jar

忽然笑 2021-08-19 16:41:20
我有一个包含大约 100 个模块的多模块构建。有没有办法只为更改的模块创建 jar 文件并将它们复制到某个地方?任务应该是一个独立的任务,不修改现有的 jar 任务
查看完整描述

2 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

假设您正确设置了所有任务输入和输出,gradle 支持开箱即用的最新检查和任务跳过。查看最新检查(又名增量构建)


对于复制,您可以使用同步任务,该任务只会复制(或删除)与目标目录不同的 jar。


例如


task syncJars(type: Sync) {

    allprojects { p ->

        from p.tasks.withType(Jar)

    }

    into 'path/to/target/dir' 


查看完整回答
反对 回复 2021-08-19
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

因此,假设您的所有模块都是简单java模块,那么您的所有模块都将有一个jar任务(类型Jar)来构建相应模块的 JAR 文件。jar由于 Gradle 增量构建功能,每个任务只会在内容以任何方式更改(例如编译新文件)时执行。


您可以简单地doLast为这些任务中的每一个添加一个闭包,它将创建的文件复制到您的目录中,因为只有当且仅当任务被执行时,闭包才会被执行:


单个任务的示例:


jar {

    doLast {

        project.copy {

            from archivePath

            into 'path/to/my/location'

        }

    }

}

如果这适用于单个模块,我们可以尝试与@lance-java 所做的类似的方法:


allprojects { project ->

    project.tasks.withType(Jar).all { jar ->

        jar.doLast {

            project.copy {

                from jar.archivePath

                into 'path/to/my/location'

            }

        }

    }

}


查看完整回答
反对 回复 2021-08-19
  • 2 回答
  • 0 关注
  • 185 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信