我正在使用 Maven(和 Maven Eclipse 集成)来管理我在 Eclipse 中的 Java 项目的依赖关系。从 Maven 存储库自动下载 JAR 文件的功能可以节省实时时间。不幸的是,它不包括 API 文档和源代码。
如何设置 Maven 以自动获取源和 javadoc 附件并使用 Eclipse 正确注册它们?
我确信 Eclipse 的 m2eclipse Maven 插件 - 反过来 - 可以做到这一点。您可以将其配置为自动为您下载源文件和 javadoc。
这是通过进入Window > Preferences > Maven and checking the "Download Artifact Sources" and "Download Artifact JavaDoc"
选项来实现的。
mvn eclipse:eclipse -DdownloadSources=true
或者
mvn eclipse:eclipse -DdownloadJavadocs=true
或者您可以添加两个标志,正如 Spencer K 指出的那样。
此外,该=true
部分不是必需的,因此您可以使用
mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs
关于这项工作的其他答案,但如果你想避免记住命令行参数,你也可以添加到 downloadSources 和 downloadJavadocs 配置到你的 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>
我不喜欢将源/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
如果源 jar 在本地存储库中并且您使用的是 Eclipses maven 支持,则源会自动附加。您可以运行mvn dependency:sources
以下载给定项目的所有源 jar。不知道如何对文档做同样的事情。
如果你使用 meclipse 做
window --> maven --> Download Artifact Sources (select check)
(如果您仍然获得附加源窗口,则单击附加文件按钮并关闭附加源窗口。下次您尝试查看源时,它将打开正确的源)
还有一个类似的问题可以回答这个问题并包括示例 pom 设置。
我试过windows->pref..->Maven
了,但没有成功。因此,我使用命令 mvn eclipse:eclipse -DdownloadSources=true 创建了一个新的类路径,并刷新了一次工作区。瞧……附上来源。
源 jar 的条目在类路径中可用。因此,新版本解决了问题...
在我的带有 m2Eclipse 的 Eclipse helios 版本中,没有
window --> maven --> Download Artifact Sources (select check)
窗口下只有“新窗口”、“新编辑器”、“打开透视图”等。
如果您右键单击您的项目,然后选择maven--> download sources
没发生什么事。没有下载源,没有更新 pom 文件,没有弹出窗口询问哪些源。
在 eclipse 之外执行 mvn xxx 是危险的 - 某些命令不适用于 m2ecilpse - 我这样做了一次并且丢失了整个项目,不得不重新安装 eclipse 并从头开始。
我仍在寻找一种方法来让 ecilpse 和 maven 找到和使用像 servlet-api 这样的外部 jar 的来源。
将 maven-eclipse-plugin 的 pom 更改为包含 source/javadoc 只需申请添加到 pom 的新依赖项。如果我们需要申请现有的依赖,我们必须运行 mvn dependency:sources。我检查了这个。
在 Eclipse-Maven 首选项中检查下载源/javadoc,有时是不够的。如果 maven 由于某种原因(网络中断?)无法下载它们,maven 会创建一些 *.lastUpdated 文件,然后永远不会再次下载。我的经验解决方案是从 .m2/repository 中删除工件目录,然后重新启动 eclipse 工作区,检查下载源/javadoc 并检查启动时更新项目。重新启动工作区后,可能有些项目会被标记为错误,而 eclipse 进度正在下载,那么任何错误都会被清除。也许这个程序不是那么“科学”,但对我来说确实成功了。
我已将 pom 配置添加到 maven-eclipse 插件以下载源代码和 javadocs,但我认为/希望这会发生在新的依赖项上,而不是现有的依赖项。
对于现有依赖项,我在包资源管理器中浏览到“Maven Dependencies”并右键单击 commons-lang-2.5.jar,选择 Maven | 下载源和......似乎没有发生任何事情(没有进度条或指示它正在做任何事情)。但是,它确实下载了,因为我现在可以跳转到 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 和源(因为我之前尝试使用 -DdownloadSources 选项失败)。
但令人惊讶的是 - 使用 POM 变体时,.classpath 文件正在获取其源代码和 javadoc!
对于 Indigo(可能还有 Helios),上面提到的复选框位于此处:
Window -> Preferences -> Maven
我遇到了类似的问题,最适合我的解决方案是将源代码包含在与编译代码相同的 jar 中(因此 jar 中的给定目录将同时包含Foo.java
and Foo.class
)。Eclipse 自动将源代码与编译后的代码相关联,并自动从源代码中提供 JavaDoc。显然,这只有在您控制工件时才有用。
在项目级别或用户属性级别设置属性后,请执行 Maven -> 更新项目(强制更新)。它下载源
对答案的一个小补充,如果您的项目不是 maven 项目,您仍然可以通过使用 eclipse Java Source Attacher中提供的这个插件来获取 jar 的源代码