【问题标题】:IntelliJ cannot load sources from local Maven repositoryIntelliJ 无法从本地 Maven 存储库加载源
【发布时间】:2014-08-17 20:31:20
【问题描述】:

我正在做一些测试工作,需要使用 JUnit 中我不熟悉的功能。为了更好地理解这些功能,我希望能够在我的项目旁边查看 IntelliJ 中的 JUnit 源代码。

此项目使用 Maven。我的 pom.xml 文件中列出了 jUnit 的以下依赖项:

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.10</version>
</dependency>

当我在命令行上运行“mvn clean install”时,jUnit 源代码会从我公司的 Maven 存储库下载到我的本地 Maven 存储库(.m2 目录)。然后项目编译并运行没有问题。

右键单击 pom.xml 文件并选择 Maven->Reimport 后,我​​可以看到 jUnit 的类、源和 javadocs 也出现在 IntelliJ 的库设置中:

但是,当我尝试在 IntelliJ 中打开一个 jUnit 类文件并单击“下载源”链接时,我看到了这个:

似乎 IntelliJ 应该可以在本地很好地找到这些来源。即使它确实必须从我公司的存储库中下载它们,我也相信它应该在那里找到它们,因为我本地存储库中的 junit-4.10-sources.jar 文件最初来自那里。

什么可能会阻止 IntelliJ 从它已经知道的 JAR 文件中加载源代码?

【问题讨论】:

  • 这个问题有一个很好的答案:考虑评论它为什么/为什么不被接受(如果它正在处理你的帖子,接受它)
  • 虽然@hawkeye 提供的答案很有帮助,但它并没有解决我的问题,而且还不够全面,不足以保证接受当时的官方答案。这个问题现在也有几年了,AFAIK 已经在较新版本的 IntelliJ 中得到解决。编辑:刚刚注意到你仍然遇到这个问题。如果您碰巧找到了问题的明确解决方案,请随时在此处发布您的答案,我会接受!

标签: java maven intellij-idea


【解决方案1】:

我能够在 Windows 上的 IntelliJ 16 中复制它。

这是我的解决方法:

  1. 选择文件 -> 设置 -> 构建、执行、部署 -> 构建工具 -> Maven -> 存储库
  2. 从列表中选择您的本地存储库(如果不存在则添加)
  3. 点击“更新”按钮
  4. 点击确定
  5. 右键单击您的 pom.xml 文件并选择 Maven -> 重新导入

【讨论】:

  • 你是怎么知道的?
  • 我确实按照这些说明进行操作 - 本地回购 已过时。但即使在每个步骤之后,结果都是“无法下载源文件”
  • 假设您还在 pom.xml 的命令行上运行“mvn compile”步骤以更新您的存储库
  • 是的 - 源文件已确认在 repo 中并包含特定的类。但没有骰子。
  • 好的 - 对你来说是时候从头开始了。删除您的 Maven 和 IntelliJ 安装。重新安装 maven 并使用源代码创建一个全新的项目。编译然后安装 IntelliJ 并重试。然后回到你原来的源项目。
【解决方案2】:

我遇到了同样的问题。就我而言,我在本地开发了 2 个项目(项目 A 和 B),其中项目 B 是项目 A 的依赖项。我通过以下方式解决了它:

首先:在项目 B 上,将以下插件添加到您的 pom 文件中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>3.2.0</version>
    <executions>
        <execution>
            <id>attach-sources</id>
            <phase>verify</phase>
            <goals>
                <goal>jar-no-fork</goal>
            </goals>
        </execution>
    </executions>
</plugin>

关于这个插件的更多信息在这里:https://maven.apache.org/plugins/maven-source-plugin/usage.html

第二:在项目 B 根文件夹上运行:mvn source:jar,然后是 mvn install。 第一个命令将生成源代码,第二个命令将它们发布到您的本地仓库中。

然后项目 A 上的 IntelliJ 会自动从项目 B 中获取源代码。如果没有,那么您可能需要重新加载项目 A 上的项目依赖项或在根文件夹上运行 mvn clean install

【讨论】:

    猜你喜欢
    • 2021-10-14
    • 2018-02-06
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2012-02-26
    • 2013-04-01
    • 1970-01-01
    • 2012-05-27
    相关资源
    最近更新 更多