为 Maven 管理的依赖项获取附加到 Eclipse 的源 jar 文件

我使用 Maven (和 MavenEclipseIntegration)来管理 Eclipse 中 Java 项目的依赖关系。从 Maven 存储库自动下载 JAR 文件的特性可以实时节省时间。不幸的是,它不包括 API 文档和源代码。

如何设置 Maven 来自动获取源代码和 javadoc 附件,并在 Eclipse 中正确注册它们?

163748 次浏览
mvn eclipse:eclipse -DdownloadSources=true

或者

mvn eclipse:eclipse -DdownloadJavadocs=true

或者你可以把两面旗子都加上,就像斯宾塞 · K 指出的那样。

此外,不需要 =true部分,因此可以使用

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

还有一个 类似的问题来回答这个问题,并且包含了例子 pom 设置。

我确信 Eclipse 的 m2eclipseMaven 插件(反过来)可以做到这一点。您可以将其配置为自动下载源文件和 javadoc。

这是通过进入 Window > Preferences > Maven and checking the "Download Artifact Sources" and "Download Artifact JavaDoc"选项实现的。

Screenshot of Maven Preferences

如果你正在使用月食做

window --> maven --> Download Artifact Sources (select check)

(如果您仍然得到附加源窗口,然后单击附加文件按钮,并关闭附加源窗口。下次您尝试查看源代码时,它将打开正确的源代码)

这项工作的其他答案,但是如果你想避免必须记住命令行参数,你也可以只添加到下载源和下载 Javadocs 配置到你的 pom.xml 的 maven-eclipse-plugin 部分:

<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
... other stuff ...
</configuration>
</plugin>
</plugins>
</build>
...
</project>

如果源 jar 在本地存储库中,并且您正在使用 Eclipse maven 支持,则源将自动附加。您可以运行 mvn dependency:sources来下载给定项目的所有源 jar。但是不确定如何对文档执行相同的操作。

在我版本的 Eclipse Helios 和 m2Eclipse 中,没有

window --> maven --> Download Artifact Sources (select check)

窗口下只有“新窗口”、“新编辑器”、“开放透视图”等。

如果右键单击项目,则选择 maven--> download sources

没有任何事情发生。没有资源被下载,没有文件被更新,没有窗口弹出询问哪些资源。

在 eclipse 之外执行 mvn xxx 是危险的——有些命令不能用于 m2ecilse ——我曾经这样做过一次,失去了整个项目,不得不重新安装 eclipse 并从头开始。

我仍然在寻找获得 Eclipse 和 maven 的方法,以便找到并使用外部 jar 源代码,比如 servlet-api。

我已经将 pom 配置添加到 maven-eclipseplugin 中,以便下载 source 和 javadocs,但是我认为/希望这将适用于新的依赖项,而不是现有的依赖项。

对于现有的依赖关系,我在包浏览器中浏览到“ Maven Dependency”,然后右键单击 commons-lang-2.5.jar,选择 Maven | Download Source,然后... ... 什么都没有发生(没有进度条或者显示它正在做任何事情)。然而,它确实下载了,因为我现在可以跳转到 commons-lang 的源代码。

Overthink 建议使用 pom 中的设置:

<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-eclipse-plugin</artifactId>
<configuration>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
... other stuff ...
</configuration>
</plugin>
</plgins>
</build>
...

首先,我认为这仍然不会附加 javadoc 和源代码(因为我之前尝试使用那个-DdownloadSource 选项时失败了)。

但是令人惊讶的是-.classspath 文件在使用 POM 变体时获得了它的源代码和 javadoc 附件!

对于靛蓝(可能是 Helios) ,上面提到的复选框位于这里:

Window -> Preferences -> Maven

我遇到过类似的问题,对我来说最有效的解决方案是将源代码包含在编译代码所在的 jar 中(因此 jar 中的给定目录将同时包含 Foo.javaFoo.class)。Eclipse 自动将源代码与编译后的代码关联起来,并自动从源代码提供 JavaDoc。显然,只有你能控制藏物,这才有帮助。

将 maven-eclipse- 插件的 pom 改为包含 source/javadoc 只是为了向 pom 添加新的依赖项。如果我们需要应用现有的依赖项,我们必须运行 mvn 依赖项: 源。我查过了。

我试过 windows->pref..->Maven,但没有成功。因此,我使用命令 mvn eclipse 创建了一个新的类路径: eclipse- 下载源 = true,并刷新了一次工作区。瞧。.消息来源附呈。

源 jar 的条目在类路径中是可用的,因此新版本解决了这个问题..。

我不喜欢将 source/Javadoc 下载设置放到项目 pom.xml文件中,因为我觉得这些是用户首选项,而不是项目属性。相反,我将它们放在 settings.xml文件中的一个配置文件中:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">


<profiles>
<profile>
<id>sources-and-javadocs</id>
<properties>
<downloadSources>true</downloadSources>
<downloadJavadocs>true</downloadJavadocs>
</properties>
</profile>
</profiles>


<activeProfiles>
<activeProfile>sources-and-javadocs</activeProfile>
</activeProfiles>
</settings>

右键单击 project -> maven -> download sources

在项目级别或用户属性级别设置属性后, 请做一个 Maven-> 更新项目(强制更新)。它下载源代码

在 Eclipse-Maven 首选项中检查下载 source/javadoc,有时是不够的。万一 Maven 由于某种原因(网络中断?)而无法下载它们,maven create some * .LastUpdated 文件,然后再也不会下载了。我的经验解决方案是从中删除工件目录。M2/仓库,并重新启动 Eclipse 工作区,同时检查下载源代码/javadoc,并在启动时检查更新项目。 重新启动工作区之后,可能会有一些项目标记错误,而 Eclipse 进度正在下载,那么任何错误都将被清除。 也许这个过程并不那么“科学”,但对我来说确实成功了。

答案的一个小补充,如果您的项目不是一个 maven 项目,您仍然可以得到的 jar 源代码,通过使用这个插件提供的 Eclipse Java 源代码附件