无法理解创建可执行fat-jar的gradle jar任务代码

时间:2014-08-09 19:43:06

标签: jar gradle task

我正在学习Gradle,但我不明白创建一个包含所有依赖项的jar的jar任务代码(取自Gradle Cookbook):

jar {
    baseName = jarBaseName
    manifest { attributes "Main-Class": mainClass }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

我的问题是:

1.任务名称为jar。因为它不是像jar一样写的<< {...}我假设这是在配置阶段运行,而不是执行阶段。我是对的吗?

2. configurations.compile究竟是什么?我假设查询某种依赖类路径,并且每个jar都是zipTree-ed。然后所有这些东西都与基类路径合并 。请详细说明

3.使用zipTree方法,我假设每种罐子都是unarchives,但我不确定。我是对的吗?

问候,

1 个答案:

答案 0 :(得分:2)

  1. 是的,你是对的。如果未添加任何操作(主要使用<<查看文档),则代码将在配置阶段运行。您提供的代码也在配置阶段运行。

  2. configurations.compile使用compile对象(一种配置容器)引用名为configurations的配置。在gradle 2.0之前,默认情况下会为compile插件提供java配置。 AFAIR现在被称为javaCompile。根据{{​​1}},你也是正确的。

  3. 是的,你是