【问题标题】:how to tell gradle to download all the source jars如何告诉 gradle 下载所有源 jar
【发布时间】:2012-04-26 18:18:48
【问题描述】:

理想情况下,我们想添加一个任务来下载我们项目的第一级和传递依赖项的所有源 jar。有没有办法做到这一点?

如果没有,是否提供命令行选项,例如 maven 必须将所有源下载到我们的机器上?

现在看来,这应该只是第一级依赖项的默认设置,因为它在 Eclipse 中为您提供了 javadoc,这在执行代码完成时非常好。

【问题讨论】:

  • :) 只是想提请您注意关于使用签名的常见问题解答中的this section;您在 StackOverflow 上的问题和答案已经用您的用户卡“签名”了,因此不需要在后签名。
  • 好吧,这太糟糕了...签名是显示在您的帖子中的东西,而不是您必须单击链接才能到达的东西...读取签名的速度很正常由于该链接的障碍而下降(实际上,它可能下降了 90% 左右:(这是非常不幸的,因为 stackoverflow 可以帮助很多人使用 REAL 签名)。
  • 如果您使用的是 Gradle 包装器,请查看此答案:stackoverflow.com/a/46596203/924597

标签: gradle


【解决方案1】:

eclipse 任务可以通过 downloadSources 进行配置。以下是该配置的示例

apply plugin: 'java'
apply plugin: 'eclipse'

eclipse {
    classpath {
       downloadSources=true
    }
}

所以运行

gradle cleanEclipse eclipse

让它下载源代码。

【讨论】:

  • 这是gradle.org/docs/current/dsl/…的默认行为
  • 也许是这样,但我的gradle cleanEclipse eclipse 直到我将指定的配置添加到build.gradle 后才下载源jar。谢谢@skipy!
【解决方案2】:

如果您使用 Eclipse 并希望在那里导航您的依赖项的源代码,那么 Eclipse 插件会为您完成这项工作。

通过将apply plugin: "eclipse" 添加到您的 build.gradle 文件来安装 eclipse 插件。然后运行gradle eclipse 生成Eclipse .project、.classpath 和.settings 文件。该插件将自动下载所有可用的源并在 .classpath 文件中添加对它们的引用(参见 classpathentry 元素的 sourcepath 属性)。

要将项目导入 Eclipse,请选择 File > Import... > Existing Projects into Workspace 并选择您的项目。

(我不确定 Idea 插件是否对 Idea 用户有相同的作用,但它可能会这样做)。

【讨论】:

  • 是的,根据我的经验,Gradle 会下载源 .jar 并在构建路径设置中链接源,以便您可以调试源代码。
  • 需要注意的一点:清理我的 gradle 缓存后,我必须 gradle cleanEclipse eclipse 然后关闭并重新打开 eclipse 项目以让 eclipse 再次查看源代码。
  • Android Studio 怎么样?经过小研究,我认为是做不到的……
  • 有时您在 Eclipse WTP 中看不到源代码,尽管它们是由 gradle 下载的。在这种情况下,您需要手动将 Web App Libraries 推送到构建路径的底部或使用 the solution from Andreas Kuhrwahl
  • 谢谢。就我而言,gradle 确实会下载源代码,但 eclipse 不会链接源代码和项目... :-(
【解决方案3】:

其他答案中未提及的另一个问题是当您在 gradle.build 文件中使用 mavenLocal() 存储库时。如果该本地 maven 存储库中有下载的 jar,但该存储库中没有下载的源代码或 javadocs,则 gradle 甚至不会尝试为您下载 javadocs 或源代码。即使启用了eclipse.classpath.downloadJavadoceclipse.classpath.downloadSources

解决方案是从repositories 中删除mavenLocal() 或将其置于列表底部。或者您可以setup maven 下载源代码和 javadocs 并清理您的 maven 本地存储库 (~/.m2/repository)。

更详细的问题描述是here

【讨论】:

  • 就是这样。 解决方案是从存储库中删除 mavenLocal() 或将其放在列表底部为我工作!
  • 太好了,经过两天的搜索,这对我有用。
【解决方案4】:

以下是如何使用 IDE 的插件在 Gradle 中添加所需的配置:

对于Eclipse

apply plugin: 'java'
apply plugin: 'eclipse'

eclipse {
    classpath {
        downloadJavadoc = true
        downloadSources = true
    }
}

对于IntelliJ

apply plugin: 'java'
apply plugin: 'idea'

idea {
    module {
        downloadJavadoc = true
        downloadSources = true
    }
}

要运行这些插件:

gradle cleanEclipse eclipse
gradle cleanIdea idea

【讨论】:

    【解决方案5】:

    上面 Piohen 的评论应该是它自己的答案(因为它是唯一对我有用的解决方案)

    1. 右键单击您的项目,然后选择“构建路径”-->“配置构建路径”;
    2. 选择“订购和导出”
    3. 选择“Web App Libraries”,点击“Bottom”按钮,“Web App Libraries”会在底部;

    并将其放入 Gradle Eclipse 插件(因此您无需每次都手动执行):

    Why is Eclipse not attaching 3rd party libs source files to a WTP-faceted Gradle project?

    【讨论】:

      【解决方案6】:

      这里只有一个问题。这仅在您生成新项目时才有效。如果您正在处理无法使用 Gradle 重新生成的成熟项目,则上述建议将不起作用。

      我应该补充一点,Gradle/Builsdhip 插件的版本很大程度上取决于您用来启动 Eclipse 的 Java 版本。它们都必须兼容。我不得不将我的 Eclipse(当前版本)从 Java 11 切换回 Java 8 以修复 Buildship (3.0.1) 错误。由于 Gradle 中的 API 更改破坏了我们的构建,我们现在并且一直在使用 Gradle 4.2.1 一段时间。因此,要迁移到 Java 11,我们必须迁移到新版本的 Gradle、Buildship 和 Eclipse。啊!哦,是的,这也解决了这个线程中提到的问题。源现在再次可用。

      【讨论】:

        猜你喜欢
        • 2017-06-01
        • 2013-04-15
        • 2015-11-30
        • 2016-06-20
        • 1970-01-01
        • 2015-04-08
        • 1970-01-01
        • 1970-01-01
        • 2011-06-22
        相关资源
        最近更新 更多