我想在我的项目中创建一个新任务,该任务使用我的项目的类文件和依赖项的类文件(也称为“shaded jar”或“fat jar”)创建一个 jar 存档。
Gradle Cookbook 提出的解决方案修改了 JavaPlugin 的标准 jar 任务:
jar {
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
但是,我想保留原始的 jar 任务,并为 shaeded jar 执行一个附加任务,即一个行为与 jar 任务完全相同的任务,但包含根据的附加文件
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
并且有另一个分类器(“阴影”)。
我尝试通过复制如下属性来接管 jar 任务的配置:
task shadedJar(type: Jar, dependsOn: configurations.compile) {
dependencies = tasks.jar.taskDependencies
source = tasks.jar.source
manifest = tasks.jar.manifest
includes = tasks.jar.includes
classifier = 'shaded'
from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}
但生成的任务不会接管“jar”的依赖关系,并且生成的 jar 不包含项目的类文件。此外,作为使用现有任务作为新任务模板的推荐方法,这种方法似乎很麻烦。
对于我的特定需求(单独的阴影 Jar 任务)以及“克隆”任务以将它们用作一般其他任务的模板,推荐的方法是什么?
(我目前仍在使用 Gradle 1.3,但也欢迎当前 Gradle 版本的解决方案)