如何使用IntelliJ将外部库的源代码和javadoc添加到gradle?

如何使用IntelliJ将外部库的源代码和javadoc添加到gradle?,java,intellij-idea,gradle,javadoc,Java,Intellij Idea,Gradle,Javadoc,我与IntelliJ和Gradle建立了一个Java项目。我的根项目中有一个build.gradle文件,我可以编译和运行我的应用程序 然而。。。我正在使用一个Java库,它附带了一个源代码和javadoc zip文件。如果我在源代码中,想从这个库中声明一个类或方法,IntelliJ会打开.class文件,而不是zip中提供的源.java文件 我如何告诉gradle使用外部库提供的源代码和javadoc Zip?你不需要告诉gradle源代码在哪里。这是IntelliJ 文件->项目结构->模块

我与IntelliJ和Gradle建立了一个Java项目。我的根项目中有一个build.gradle文件,我可以编译和运行我的应用程序

然而。。。我正在使用一个Java库,它附带了一个源代码和javadoc zip文件。如果我在源代码中,想从这个库中声明一个类或方法,IntelliJ会打开.class文件,而不是zip中提供的源.java文件


我如何告诉gradle使用外部库提供的源代码和javadoc Zip?

你不需要告诉gradle源代码在哪里。这是IntelliJ

文件->项目结构->模块->如果有多个模块,请选择正确的模块->依赖项选项卡->单击底部附近的+符号->选择JAR或目录->选择保存源/javadocs JAR的目录

IntelliJ将看到它们是javadoc和源代码,并对它们进行适当的索引


我不确定您的库是否存储在maven存储库中。我想是的

我知道将gradle项目导入IntelliJ的两种方法。第一个是导入项目。。。来自IntelliJ的向导,运行良好。但是如果javadoc jar存在,它不会导入它们。至少我没能做到

第二种方法使用Gradle2.1中的idea插件。插件为您生成项目。这样我就把javadoc放进去了。build.gradle的完整工作示例:

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

sourceCompatibility = '1.7'
targetCompatibility = '1.7'

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.apache.commons', name: 'commons-compress', version: '1.8.1'
    compile group: 'com.google.guava', name: 'guava', version: '18.0'

    testCompile group: 'junit', name: 'junit', version: '4.11'
    testCompile group: 'org.mockito', name: 'mockito-all', version: '1.8.5'
}

idea{
    project {
        languageLevel = '1.7'
    }
    module {
        downloadJavadoc = true // defaults to false
        downloadSources = true
    }
}
您可以调用gradle cleanIdea,它为IntelliJ创建了您的项目


如果您的库没有存储在maven存储库中,您只需在其中建立一个nexus即可上传。这将允许您使用上述方法。

我使用intellij和gradle构建java项目。通过以下简单步骤,这将非常容易:

首先,在与src目录相同的级别添加一个名为libs的目录。

将jar文件添加到此目录libs中,这将使代码可移植

按照以下步骤操作: 从“文件”菜单中单击“项目结构”

在左侧面板中选择要添加新JAR的模块

依赖项选项卡。 '+' → jar或目录,并将jar文件添加到\libs中。 在依赖项部分的gradle.build文件中添加:

依赖关系{ 编译文件'libs/nameOfJarFile.jar' }

虽然不是必需的,但在某个时刻使缓存无效并重新启动是一种很好的做法。


转到任何库的任何IntelliJ反编译.class文件。如所附图片所示。 您会注意到Intellij为您提供了两个选项

从目录中选择源代码 下载-来自Maven
对于从Maven/Ivy/flatDir repo解析的依赖项,如果源文件存在于repo中,将自动下载并链接它们。我的jar文件位于我的计算机中的一个文件夹中。包含sources和javadoc的两个zip文件位于同一文件夹中。格雷德尔能解决这个问题吗?我有这样的配置:dependencies{compile fileTreedir:/my/directory/on/computer/libs,includes:['*.jar']}如果我删除includes参数,它会使用库的source.zip文件吗?不,这不起作用。它可能与flatDir存储库一起工作,请查看源代码和javadoc ZIP是否遵循Maven命名约定的详细信息,但我不确定。我回家后会尝试一下,并与您共享结果。很抱歉回复太晚。我决定保持当前配置,并从IDEA手动添加源代码。不幸的是,我没有太多的空闲时间,所以我不能让自己坐在像这样的“小”问题上好几天。我需要专注于项目的代码。我还没有找到flatDir repos的正确配置。感谢您的帮助。此方法的问题是,如果我刷新gradle项目或将其再次导入IntelliJ,IntelliJ会忘记此配置。我需要一种在build.gradle文件中声明的方法,否则我总是需要手动添加源jar文件。哦,我明白了。IntelliJ基于build.gradle配置项目。因此,当您编辑build.gradle时,它会根据build.gradle进行自我配置,就像它在Grails项目中所做的一样。你查过Gradle的文件了吗?此外,如果您似乎无法使用源JAR配置Gradle,则可以使用Jetbrains打开功能请求,以不覆盖源设置。我会检查Gradle文档的依赖关系管理,看看是否可以包含source jars type=source???其他信息:如果Gradle.build文件的依赖关系部分中有compileOnly参数,则导入时无法使用。在此之前,必须将compileOnly更改为简单的编译参数。