【问题标题】:How to attach gradle-api sources in IntelliJ如何在 IntelliJ 中附加 gradle-api 源
【发布时间】:2020-11-18 10:00:57
【问题描述】:

我正在开发一个自定义 Gradle 插件。由于某种原因,IntelliJ 无法找到 gradle-api 工件的来源,并且只显示反编译的 .class 文件。我已经在使用 Gradle Wrapper 的 -all 发行版(其中包括 一些 源,但显然不是我需要的源)。点击下载...会导致错误:

Sources not found: Sources for 'gradle-api-6.5.1.jar' not found

如何在 IntelliJ 中正确附加/选择 gradle-api 的源?

编辑:

我有一个带有类似代码的最小 Gradle 插件(取自 official samples):

plugins {
    id 'java-gradle-plugin'
}

repositories {
    jcenter()
}

dependencies {
    testImplementation 'junit:junit:4.13'
}

gradlePlugin {
    // ...
}

【问题讨论】:

  • 如何定义项目中的依赖关系?资源可在repo.gradle.org/gradle/libs-releases-local/org/gradle/… 获得。您是否在 build.gradle 中添加了此存储库?
  • 谢谢@CrazyCoder - 这让我更接近了一点。首先,我不得不降级到 Gradle 6.1.1(不知何故,这是您发布的链接的最后一个发布版本)。然后可以手动附加下载源 jar 文件。即使在构建脚本中添加了自定义存储库后,自动下载仍然不起作用。
  • 如何在构建脚本中声明这个依赖?你有 gradle 复合构建吗?你使用 Groovy DSL 吗?
  • 看起来像IDEA-221322IDEA-197970
  • 谢谢@Andrey - 看起来确实与那些票有关。

标签: java gradle intellij-idea gradle-plugin


【解决方案1】:

我猜,默认的 Intellij 配置 use gradle from gradle-wrapper.properties file 将使用 /gradle/wrapper/gradle-wrapper.jar,但它不包含源代码。你需要的是一个像gradle-wrapper-all.jar 这样的罐子。但我不知道如何让 Gradle 重新下载。仅设置Wrapper.DistributionType.ALL 不起作用。

解决方案

  1. 设置Wrapper.DistributionType.ALL
wrapper {
    jarFile = file(System.getProperty("user.dir") + '/gradle/wrapper/gradle-wrapper.jar')
    gradleVersion = '6.7.1'
    distributionType = Wrapper.DistributionType.ALL
}
  1. 我下载 Gradle 并使用它。在这里设置两个东西,刷新一下。

这里是源代码,版本是对的,名字里有allgradle-6.7.1-all):

【讨论】:

    【解决方案2】:

    根据this excellent manual,您应该将gradleApi() 添加为runtimeOnly 依赖项:

    dependencies {
       //...
       runtimeOnly(gradleApi())
       
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-11
      • 1970-01-01
      • 2015-10-18
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多