猿问

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

我有一个包含大约 100 个模块的多模块构建。有没有办法只为更改的模块创建 jar 文件并将它们复制到某个地方?

任务应该是一个独立的任务,不修改现有的 jar 任务


忽然笑
浏览 202回答 2
2回答

蓝山帝景

假设您正确设置了所有任务输入和输出,gradle 支持开箱即用的最新检查和任务跳过。查看最新检查(又名增量构建)对于复制,您可以使用同步任务,该任务只会复制(或删除)与目标目录不同的 jar。例如task syncJars(type: Sync) {    allprojects { p ->        from p.tasks.withType(Jar)    }    into 'path/to/target/dir' } 

慕丝7291255

因此,假设您的所有模块都是简单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'            }        }    }}
随时随地看视频慕课网APP

相关分类

Java
我要回答