【问题标题】:How to add external library's sources and javadoc to gradle with IntelliJ?如何将外部库的源代码和 javadoc 添加到 IntelliJ 的 gradle 中?
【发布时间】:2014-09-06 01:28:12
【问题描述】:

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

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

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

【问题讨论】:

  • 对于从 Maven/Ivy/flatDir 存储库解析的依赖项,将自动下载和链接源(如果它们存在于存储库中)。
  • 我的 jar 文件在我电脑的一个文件夹中。包含源代码和 javadoc 的两个 zip 文件位于同一文件夹中。 gradle会解决这个问题吗?我有这个配置:dependencies { compile fileTree(dir: "/my/directory/on/computer/libs", includes: ['*.jar']) } 如果我删除包含参数,它会使用库的 source.zip 文件吗?
  • 不,这行不通。如果源代码和 javadoc zip 遵循 Maven 命名约定,它可能适用于 flatDir 存储库(有关详细信息,请参阅 Gradle User Guide),但我不确定。
  • 我回家后试一试并与您分享结果。
  • 抱歉回复晚了。我决定保持当前配置并从 IDEA 手动添加源。不幸的是,我没有太多空闲时间,所以我不能让自己在这样的“小”问题上坐上几天。我需要专注于项目的代码。我还没有设法弄清楚 flatDir 存储库的正确配置。感谢您的帮助。

标签: java intellij-idea gradle javadoc


【解决方案1】:

你需要知道源在哪里的不是 Gradle。它是 IntelliJ。

文件 -> 项目结构 -> 模块 -> 如果您有多个模块,请选择正确的模块 -> 依赖项选项卡 -> 单击底部附近的 + 号 -> 选择罐子或目录 -> 选择包含您的目录的目录来源/javadocs 罐子。

IntelliJ 将看到它们是 javadoc 和源并适当地索引它们。

【讨论】:

  • 这种方法的问题是,如果我刷新我的 gradle 项目或再次将其导入 IntelliJ,IntelliJ 会忘记此配置。我需要一种在 build.gradle 文件中声明它的方法,否则我总是需要手动添加源 jar 文件。
  • 哦,我明白了。 IntelliJ 基于 build.gradle 配置项目。因此,当您编辑 build.gradle 时,它​​会根据 build.gradle 进行自我配置(就像它为 Grails 项目所做的那样)。你检查过 Gradle 文档吗?此外,如果您似乎无法使用源 jar 配置 Gradle,您可以使用 Jetbrains 打开功能请求以不覆盖源设置。我会检查 Gradle 文档的依赖管理,看看你是否可以包含源 jar (type=source ???)
【解决方案2】:

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

我知道将 gradle 项目导入 IntelliJ 的两种方法。第一个是来自 IntelliJ 的“导入项目...”向导,它运行良好。但如果它们存在,它不会导入 javadoc jar。至少我从来没有管理过它。

第二种方法使用了gradle 2.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 idea,它会为 IntelliJ 创建您的项目。

如果您的库未存储在 maven 存储库中,您可以简单地在上传它的地方放置一个链接。这将允许您使用上述方法。

【讨论】:

    【解决方案3】:

    我使用 intellij 和 gradle 来构建我的 java 项目。按照这些简单的步骤,这将非常容易:

    • 首先在您的 src 目录的同一级别添加一个名为“libs”的“目录”。

    • 将您的 jar 文件添加到此目录“libs”,(这使您的代码可移植)。

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

    • 在左侧面板中选择要添加新 jar 的模块。

    • 依赖项选项卡。
    • '+' → JAR 或目录并在 \libs 中添加 jar 文件。

    • 在依赖项部分的 gradle.build 文件中添加:

      依赖{ 编译文件('libs/"nameOfJarFile".jar') }

    • 虽然没有必要,但最好在某个时间点使缓存无效并重新启动。

    【讨论】:

    • 附加信息:如果gradle.build 文件的依赖项部分中有compileOnly 参数,则无法导入。在此之前必须将compileOnly 更改为简单的compile 参数。
    【解决方案4】:

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

    1. 选择来源 - 从目录
    2. 从 Maven 下载

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      • 1970-01-01
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多