2

当我的调试器进入某个没有相应源的类文件时,我遇到了这个障碍。找到它通常很困难:

  • 您必须搜索托管相应项目的站点,并找到它的“下载源”页面(例如,上次我搜索 JPA API,我花了几个小时才获得源)。或者,您可能需要从修订控制中检查它。

  • 您需要知道您正在使用的确切版本。否则调试器可能会进入注释和空行:)

  • 打包源代码没有约定——一些项目将它包含在 jar 本身中;有些提供单独的 zip 文件;其他人将其放在src/zip 中的子文件夹中。

我知道 Maven 能够从其存储库下载源代码,并在生成 IDE 配置文件时将其包含在 src 路径中。但是 Maven 的 repo 在内容方面太差了——很少有库实际上上传了它们的源代码。

当它可以变得简单时,为什么它会如此复杂?我们可以有一些中央存储库,它将类文件(或其哈希)与编译它的源文件(或指向它的链接)相关联。也许是一个相当大的回购,但结构非常简单。IDE 插件可以查询它以自动获取所需的内容。

小伙伴们有没有同样的经历呢?

您如何获得要附加的来源?

4

5 回答 5

2

m2eclipse和 IDEA 都会下载任何依赖项的源代码和 javadocs m2eclipse 源可以通过右键单击一个依赖项(或整个项目,如果你想要所有源)并单击 Maven->Download Sources 来下载。

下载源截图

在较新版本的 m2eclipse 上,您还可以通过转到 Window->Preferences...->Maven,然后选择“Download Artifact Sources”选项来自动下载源代码。当您在依赖 jar 中打开当前没有可用源的类型时,Maven 将在后台下载源并在后台更新源附件。

Maven 偏好截图

于 2009-09-19T22:20:42.727 回答
1

我自己还没有看到令人满意的解决方案。

我倾向于在没有 Maven 的情况下推出自己的 repo(Maven 很好,但它不会点击我)。我运行类似于 BSD 端口系统的东西,即一个包含少量 Ant 构建文件的大型结构化树。这些构建文件要么检查项目的源代码,从树中的其他位置提取其依赖项并构建它(这些是用于我想要构建的项目 - 即我的)或从其他地方提取二进制文件(可能是外部源或我自己的二进制存储库)。

该系统可以很容易地扩展以提取 src jar,但我现在手动执行此操作。

于 2008-10-26T10:53:37.293 回答
0

如果您使用 M2eclipse ( http://m2eclipse.sonatype.org ),这一切都是自动完成的。

于 2008-11-08T16:27:53.990 回答
0

它可能很复杂,但值得一开始的努力。

我这样做的方式如下:在我的项目目录中,我有三个主要目录,

  • src(我自己的)
  • suppl (sources / javadocs 当不存在源时)

我为每个库添加了一个 zip 文件,其中包含源代码。在 intellij 中,这不仅给了我调试器的超能力,还给了我 javadocs。

你是对的,获取资源是一种痛苦。有时源代码在 lib 的 .jar 文件中提供,有时作为单独的下载(我最喜欢),有时我必须创建一个单独的 cvs/svn 目录,我可以在其中签出源代码。我通常需要以我喜欢的方式重新包装它们,即使以 zip 的形式提供。

我对 Maven 持怀疑态度。我只是不喜欢将关于选择库的决定交给程序。

于 2008-10-25T22:45:53.470 回答
0

我们做一些类似于安德烈亚斯的事情。我们的 lib 目录具有进一步分类的子目录。一个这样的子目录是 source 或 debug,它具有我们要调试的所有 jar 的源 JAR/ZIP。做一次,你就很好了。我们为 jar 和源 jar 使用 IVY 存储库。

于 2008-10-26T00:27:52.470 回答