【问题标题】:Is Gradles `jar` a method?Gradles `jar` 是一种方法吗?
【发布时间】:2016-06-24 00:58:53
【问题描述】:

我在 Gradle 中使用 Java 插件

apply plugin: 'java'

我还使用以下方法配置 Jar 任务:

version = '1.0'
jar {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart',
                   'Implementation-Version': version
    }
}

如果我理解正确,jar 是一个 方法,它以闭包作为参数调用。但是这种方法记录在哪里?我的理解应该是项目的一种方法。

我在 https://docs.gradle.org/current/userguide/java_plugin.htmlhttps://docs.gradle.org/current/dsl/org.gradle.api.Project.htmlhttps://docs.gradle.org/current/dsl/org.gradle.api.tasks.bundling.Jar.html 中找不到它

或者我认为jar 是一种方法是错误的?

【问题讨论】:

  • 就在那里,我刚刚在您的第一个链接中搜索了“jar”。 docs.gradle.org/current/dsl/…
  • @Dima:我在那个页面上找不到它,...在表中我只找到 task jar 链接到 jar。但是没有 方法 jar 的文档(显示例如签名)。还是jar 不是一种方法?那么:用闭包调用任务的记录在哪里,是什么意思?
  • 不是“调用任务”,而是“配置任务”。你只是给它你想要添加到 jar 清单的属性。这一切都在我链接到的页面上进行了描述。
  • 它绝对不能是Project的方法,因为Project不知道插件API。但是插件可以自己注册,项目会将配置块的处理委托给相应的插件。

标签: java gradle jar build build.gradle


【解决方案1】:

答案是是,不是。语法是语法糖(尽管在这种情况下它会让事情变得混乱)。调用的不是函数jar,而是函数tasks.getByName获取名称和闭包作为参数。

https://docs.gradle.org/current/userguide/more_about_tasks.html 部分显示17.3. Configuring tasks (Example 17.9. Configuring a task - with closure):

这适用于任何任务。示例的第 3 行只是 tasks.getByName() 方法的快捷方式。需要注意的是,如果您将闭包传递给getByName() 方法,此闭包将应用于配置任务,而不是在任务执行时。

所以你也可以这样写:

version = '1.0'
tasks.getByName "jar", {
    manifest {
        attributes 'Implementation-Title': 'Gradle Quickstart',
                   'Implementation-Version': version
    }
}

【讨论】:

    【解决方案2】:

    可能不是您正在寻找的全面答案,但有一些指向正确方向的指针:

    jar 任务的内部结构似乎没有详细记录,因此您必须查看源代码才能找到您要查找的内容。 jar 任务来自 java 插件here。这反过来又添加了来自this class 的任务。除了从 Jar.java 扩展之外,这个类并没有做很多事情。

    所以看起来关闭了:

    jar {
            ....
    }
    

    调用构造函数here 并设置jar 闭包中定义的属性。进一步的 Jar 类从 Zip.java 扩展,同时覆盖存档文件的扩展名,并添加清单属性。

    --

    PS:这仍然不能帮助我从你的original question 中理解with jar,但我喜欢你的提问方式,一路上我正在学习一些东西!

    【讨论】:

    猜你喜欢
    • 2011-11-22
    • 1970-01-01
    • 2021-01-06
    • 2011-01-28
    • 2014-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-12
    相关资源
    最近更新 更多