【问题标题】:How can I amend the classes available to a custom Gradle task?如何修改可用于自定义 Gradle 任务的类?
【发布时间】:2018-02-27 16:57:09
【问题描述】:

我写了一个自定义 Gradle 任务来封装一个 Java 应用程序,https://github.com/ndw/xmlcalabash1-gradle

这是org.gradle.api.internal.ConventionTask 的一个相当简单的扩展,很快就拼凑起来了。完全有可能是我做错了。

它已经工作了一段时间了。我已经在几个项目中使用过它。但是,对于我现在正在编写的特定 build.gradle,我需要为其提供额外的类。

在将额外的 jar 放入类路径中经历了很多挫折和完全失败之后,我返回并更新了我的应用程序类,以便它可以打印出它的类路径。这表明当这个任务运行时,类路径只包含/usr/lib/gradle/4.4.1/lib/gradle-launcher-4.4.1.jar。我的结论是,必须使用一些备用类加载器,因为该任务确实成功加载了核心应用程序类。

谁能告诉我如何为我的任务提供更多的罐子?我的网络搜索 foo 都没有引导我找到答案。

【问题讨论】:

  • “为它提供额外的类”是什么意思?
  • 在这种情况下,应用程序需要实例化 com.acme.Thingy,因此我需要在类路径中获取包含这些类的 jar 文件以执行应用程序。我短暂地认为在 buildscript 闭包中放置一个 fileTree(dir: 'lib').include('*.jar') 可以解决问题,但没有这样的运气。

标签: gradle task classpath


【解决方案1】:

哦,为了对万物的热爱。我在 buildscript 闭包中将“类路径”排除在依赖项之外。 #facepalm。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2017-01-01
    相关资源
    最近更新 更多