对于流行的Java库,“附加源”是否更容易?

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

  • 您必须搜索托管相应项目的站点,并找到其“下载源”页面(例如,上次我搜索JPA API时,我花了几个小时来获取源代码)。 或者,您可能需要从版本控制中检出。

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

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

我知道Maven有能力从其存储库下载源代码,并在生成IDE配置文件时将其包含在src路径中。 但Maven的回购在内容方面很差 – 很少有lib实际上已经上传了他们的源代码。

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

你们,伙计们,经历过同样的经历吗?

你如何获得附加的来源?

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

下载源截图

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

Maven偏好截图

我自己没见过满意的解决方案。

我倾向于推出自己的回购,没有Maven(Maven很好,但它没有点击我)。 我运行类似于BSD端口系统的东西,即一个包含很少Ant构建文件的大结构化树。 这些构建文件要么检查项目的源,从树中的其他地方提取它的依赖关系并构建它(这些是我想要构建的项目 – 即我的)或从其他地方(可能是外部的)提取二进制文件源或我自己的二进制文件库)。

系统可以很容易地扩展到拉src jar,但我现在手动完成。

它可能很复杂但值得最初的努力。

我按以下方式执行:在我的项目目录中,我有三个主要目录,

  • src(我自己的)
  • LIB
  • suppl(没有源存在时的sources / javadoc)

我为每个库提供了一个zip文件,包含了源代码。 在intellij中,这不仅给了我调试器超级大国,还给了我javadocs。

你是对的,获得消息来源是一种痛苦。 有时候来源是在lib的.jar文件中提供的,有时是单独的下载(我最喜欢的),有时候我必须创建一个单独的cvs / svn目录,我可以在这里查看源代码。 我通常需要按照我喜欢的方式重新包装它们,即使是以拉链forms提供。

我对maven持怀疑态度。 我只是不喜欢将有关选择libs的决定移交给程序。

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

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