繁体   English   中英

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

[英]Gradle - Copy jars of all changed modules in a multi-module project build

我有大约100个模块的多模块构建。 有没有一种方法可以只为更改的模块创建jar文件并将其复制到某个地方?

该任务应该是独立任务,无需修改现有的jar任务

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

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

例如

task syncJars(type: Sync) {
    allprojects { p ->
        from p.tasks.withType(Jar)
    }
    into 'path/to/target/dir' 
} 

因此,假设所有模块都是简单的java模块,则所有模块都将具有一个jar任务(类型为Jar ),该任务将构建相应模块的JAR文件。 由于Gradle增量构建功能,如果内容有任何更改(例如,已编译新文件),则仅执行每个jar任务。

您可以简单地向每个任务添加一个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'
            }
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM