理想情况下,我们想添加一个任务来下载我们项目的第一级和传递依赖项的所有源 jar。有没有办法做到这一点?
如果没有,是否有提供命令行选项,例如 maven 必须将所有源下载到我们的机器上?
看起来这应该只是这些天的默认值,至少对于第一级依赖项,因为它在 Eclipse 中为您提供了 javadoc,这在执行代码完成时非常好。
理想情况下,我们想添加一个任务来下载我们项目的第一级和传递依赖项的所有源 jar。有没有办法做到这一点?
如果没有,是否有提供命令行选项,例如 maven 必须将所有源下载到我们的机器上?
看起来这应该只是这些天的默认值,至少对于第一级依赖项,因为它在 Eclipse 中为您提供了 javadoc,这在执行代码完成时非常好。
可以使用 downloadSources 配置 eclipse 任务。以下是该配置的示例
apply plugin: 'java'
apply plugin: 'eclipse'
eclipse {
classpath {
downloadSources=true
}
}
所以运行
gradle cleanEclipse eclipse
让它下载源。
如果您使用 Eclipse 并希望在那里导航您的依赖项的源代码,那么 Eclipse 插件会为您执行此操作。
apply plugin: "eclipse"
通过添加到您的 build.gradle 文件来安装 eclipse 插件。然后运行gradle eclipse
以生成 Eclipse .project、.classpath 和 .settings 文件。该插件将自动下载所有可用的源并在 .classpath 文件中添加对它们的引用(参见元素的sourcepath
属性)。classpathentry
要将项目导入 Eclipse,请选择File > Import... > Existing Projects into Workspace
并选择您的项目。
(我不确定 Idea 插件是否对 Idea 用户有相同的作用,但它可能会这样做)。
其他答案中未提及的另一个问题是当您在文件中使用mavenLocal()
存储库时。gradle.build
如果该本地 maven 存储库中有下载的 jar,但该存储库中没有下载的源代码或 javadocs,则 gradle 甚至不会尝试为您下载 javadocs 或源代码。即使启用eclipse.classpath.downloadJavadoc
和eclipse.classpath.downloadSources
.
mavenLocal()
解决方案是将其从列表中删除repositories
或放置到列表的底部。或者您可以设置maven 以下载源代码和 javadocs 并清理您的 maven 本地存储库 ( ~/.m2/repository
)。
更详细的问题描述在这里。
以下是如何使用 IDE 的插件在 Gradle 中添加所需的配置:
对于日食:
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
Piohen 上面的评论应该是它自己的答案(因为它是唯一对我有用的解决方案)
并将其放入 Gradle Eclipse 插件中(因此您无需每次都手动执行此操作):
这里只有一个问题。这仅在您生成新项目时才有效。如果您正在处理无法使用 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。啊! 哦,是的,这也解决了这个线程中提到的问题。源现在再次可用。