理想情况下,我们想添加一个任务来下载第一级的所有源jar和我们项目的传递依赖项。有没有办法做到这一点?
如果没有,是否有供maven提供的命令行选项必须将所有资源下载到我们的机器上?
这些日子似乎应该是默认的,至少对于第一级依赖,因为它在eclipse中提供了javadoc然后在执行代码完成时非常好。
答案 0 :(得分:38)
可以使用downloadSources配置eclipse任务。以下是该配置的示例
apply plugin: 'java'
apply plugin: 'eclipse'
eclipse {
classpath {
downloadSources=true
}
}
所以运行
gradle cleanEclipse eclipse
让它下载资源。
答案 1 :(得分:25)
如果您使用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用户做同样的事情,但可能会这样做。)
答案 2 :(得分:20)
在其他答案中未提及的另一个问题是当您在mavenLocal()
文件中使用gradle.build
存储库时。如果在本地maven仓库中有下载的jar但在该仓库中没有下载的源或javadoc,那么gradle甚至不会尝试为您下载javadoc或源代码。即使已启用eclipse.classpath.downloadJavadoc
和eclipse.classpath.downloadSources
。
解决方案是从mavenLocal()
中删除repositories
或将其放在列表底部。或者您可以setup maven下载源代码和javadoc并清理您的maven本地存储库(~/.m2/repository
)。
问题的更详细说明是here。
答案 3 :(得分:10)
以下是如何使用IDE的插件在Gradle中添加所需的配置:
apply plugin: 'java'
apply plugin: 'eclipse'
eclipse {
classpath {
downloadJavadoc = true
downloadSources = true
}
}
apply plugin: 'java'
apply plugin: 'idea'
idea {
module {
downloadJavadoc = true
downloadSources = true
}
}
运行这些插件:
gradle cleanEclipse eclipse
gradle cleanIdea idea
答案 4 :(得分:6)
Piohen上面的评论应该是它自己的答案(因为这是唯一对我有用的解决方案)
并将其纳入Gradle Eclipse插件(因此您不必每次都手动执行此操作):
Why is Eclipse not attaching 3rd party libs source files to a WTP-faceted Gradle project?
答案 5 :(得分:0)
这里只有一个问题。这仅在生成新项目时有效。如果您正在处理无法使用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。啊!哦,是的,这也解决了该线程中提到的问题。现在,源再次可用。