gpt4 book ai didi

java - Gradle:为什么 ANT jar 任务更快?

转载 作者:行者123 更新时间:2023-11-30 11:26:10 25 4
gpt4 key购买 nike

我有两种方法可以用 gradle 创建一个 fat jar:

通过使用 Ant 任务:

    jar {
doLast {
ant.jar(destFile: jar.archivePath, update: 'true') {
configurations.compile.files.each { file ->
zipfileset(src: file) {
exclude(name: '**/META-INF/maven')
exclude(name: '**/META-INF/maven/**/*')
exclude(name: '**/templates')
exclude(name: '**/about_files')
exclude(name: '**/about_files/**/*')
exclude(name: '**/*html')
exclude(name: '**/*readme*')
exclude(name: '**/*txt')
exclude(name: '**/*inf')
exclude(name: '**/*SF')
exclude(name: '**/*RSA')
exclude(name: '**/*.vm')
exclude(name: '**/empty.file')
}
}
}
}
}

通过使用gradle方式:

    jar {
dependsOn configurations.compile
from (configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }) {
exclude '**/META-INF/maven'
exclude '**/META-INF/maven/**/*'
exclude '**/templates'
exclude '**/about_files'
exclude '**/about_files/**/*'
exclude '**/*html'
exclude '**/*readme*'
exclude '**/*txt'
exclude '**/*inf'
exclude '**/*SF'
exclude '**/*RSA'
exclude '**/*.vm'
exclude '**/empty.file'
}
}

这两个任务创建一个相同的 jar 文件。但是第一种方法需要 20 秒,第二种需要 3 分钟。

为什么第一个更快?除了执行时间:哪个是“更清洁”的解决方案?还是有更聪明的方法来完成这项工作?

最佳答案

前一个任务缺少一个dependsOn configurations.compile,这可以解释为什么执行这个任务更快。另一个主要区别是只有第二个任务,任务输入被正确声明(即 Gradle 可以可靠地确定任务是否是 up-to-date),如果 中的文件,这可能需要一段时间code>configurations.compile 很大。

PS:第二个任务应该使用 from { configurations.compile.collect { ... } } 来避免在配置阶段做工作。这将加快不涉及该任务的构建调用。

关于java - Gradle:为什么 ANT jar 任务更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19927148/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com