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

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

最佳答案

因此,假设所有模块都是简单的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'
            }
        }
    }
}

关于java - Gradle-在多模块项目构建中复制所有已更改模块的jar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52070874/

10-11 22:37
查看更多