构建.Gradle分发插件:有条件地复制资产



我正在使用Gradle的Distribution插件打包我的java应用程序。我想制作两个发行版,一个不包含JRE,另一个将JRE与应用程序捆绑在一起。我已经设置了一个copyJre任务,并且只想让Distributions插件只在copyJre任务位于任务图中时才包含一个文件夹(下面示例中的jre-8(。这是我的尝试,但没有成功。

distributions {
main {
contents {
from('/') {
include 'tools/**'
}      
// my attempt to conditionally copy
// jre-8 directory only when tasks graph contains
// a task named 'copyJre' 
if (tasks.findByName('copyJre') != null) {
from('../../jre-dist/') {
include 'jre-8/**'
}
}
}
}
}

总的来说,可能应该有一个更好的方法。这看起来像是拼凑的。

从Gradle的角度来看,你最好用另一种方式来表达你的需求:

  • 创建一个包含JRE的不同分发版,可能会提取副本规范的公共部分
  • 如果你真的只想要一个输出,那么在构建它之后,让它取代默认的分布

最新更新