我正在使用Gradle(4.2.1)的shadowJar插件来构建所谓的fatJaruberJar。这可以按预期工作,但是在构建完成后我想添加一些操作。更确切地说,我想使生成的文件可执行(以Unix的形式,即chmod +x),然后将其复制到某个目录。我已经在Google上搜索了很多,而且我知道这两个任务都是可能的。我想知道是否应该编写一个运行shadowJar的脚本(任务),然后执行所需的操作,还是应该更改shadowJar本身以嵌入所需的操作。

最佳答案

我认为,决定这种情况的一个很好的标准是问自己,新功能是否确实是shoadowJar职责的一部分。如果答案是否定的,那么(如您所述)最好在其上运行另一个任务。这样,您可以将shadowJar与其他任务结合使用,从而在更多不同的场景中重用shadowJar。如果您定义新的依赖于shadowJar的代码,则可以确保仍然可以单独调用shadowJar任务,而调用新任务将始终触发ojit_code。您的新任务将是这样的:

task afterShadowJar (dependesOn: 'shadowJar') {
    // manipulate file permissions, etc.
}

10-07 17:04