将自定义命令添加到 gradle 脚本
Adding custom command to gradle script
我正在使用 Gradle (4.2.1) 的 shadowJar
插件来构建所谓的 fatJar
或 uberJar
。这按预期工作,但我想在构建完成后添加一些操作。更准确地说,我想让生成的文件可执行(在 Unix
术语中,即 chmod +x
),然后将其复制到某个目录。我在谷歌上搜索了很多,我知道这两项任务都是可能的。我想知道我是否应该编写一个运行 shadowJar
然后执行我想要的脚本(任务),或者我应该更改 shadowJar
本身以嵌入我需要的操作。
我认为判断这种情况的一个很好的标准是问问自己新功能是否真的是 shoadowJar
的责任的一部分。如果答案是否定的,那么(如您所提到的)最好有另一个任务在此之上运行。通过这样做,您可以通过将 shadowJar
与其他任务相结合,在更多不同的场景中重用它。如果您将新任务定义为依赖于 shadowJar
,那么您可以确定您仍然可以单独调用 shadowJar
任务,而调用新任务将始终触发 shadowJar
。您的新任务将是这样的:
task afterShadowJar (dependesOn: 'shadowJar') {
// manipulate file permissions, etc.
}
我正在使用 Gradle (4.2.1) 的 shadowJar
插件来构建所谓的 fatJar
或 uberJar
。这按预期工作,但我想在构建完成后添加一些操作。更准确地说,我想让生成的文件可执行(在 Unix
术语中,即 chmod +x
),然后将其复制到某个目录。我在谷歌上搜索了很多,我知道这两项任务都是可能的。我想知道我是否应该编写一个运行 shadowJar
然后执行我想要的脚本(任务),或者我应该更改 shadowJar
本身以嵌入我需要的操作。
我认为判断这种情况的一个很好的标准是问问自己新功能是否真的是 shoadowJar
的责任的一部分。如果答案是否定的,那么(如您所提到的)最好有另一个任务在此之上运行。通过这样做,您可以通过将 shadowJar
与其他任务相结合,在更多不同的场景中重用它。如果您将新任务定义为依赖于 shadowJar
,那么您可以确定您仍然可以单独调用 shadowJar
任务,而调用新任务将始终触发 shadowJar
。您的新任务将是这样的:
task afterShadowJar (dependesOn: 'shadowJar') {
// manipulate file permissions, etc.
}