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


176

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

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


相关问题询问如何始终使用Maven时下载源和javadoc:stackoverflow.com/questions/5780758/...

Answers:


226

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

这是通过进入“窗口”>“首选项”>“ Maven”并选中“下载Artifact源”和“下载Artifact JavaDoc”选项来实现的。

Screenshot of Maven Preferences


是的,我刚刚开始使用m2eclipse,它确实可以解决这个问题(以及其他许多maven)。
Thilo

44
这些答复都不是答案。他们为什么被投票?我可以通过在导航器视图中按住Control键并单击项目,然后选择“ m2 Maven”->“下载源代码”来下载源代码。然后,我可以在课程上单击(mac)来导航到链接的源。
亚历克斯·沃登

8
看来,如果已经下载了已编译的JAR,则Eclipse不会尝试立即获取源代码/ Javadoc JAR。看来,修改包含我想要在Eclipse中使用源/ Javadoc的POM的依赖项的POM并保存POM会下载依赖项的源/ Javadoc,即使已编译的JAR已在Maven存储库高速缓存中。
弗朗西斯·加涅

13
@Francis-完成上述更改后,右键单击您的项目,然后选择“ Maven>更新项目...”,这将导致您的源jar下载。
carbontax

3
除了下载所有依赖项的源代码之外,是否可以通过在pom中将其与依赖项本身一起指定来仅下载某些依赖项,可以通过依赖项标签中的某些内部标签或类似方式进行下载吗?
nanosoft

127
mvn eclipse:eclipse -DdownloadSources=true

要么

mvn eclipse:eclipse -DdownloadJavadocs=true

也可以添加两个标志,如Spencer K所指出的。

此外,该=true部分不是必需的,因此您可以使用

mvn eclipse:eclipse -DdownloadSources -DdownloadJavadocs

8
或两者!mvn eclipse:eclipse -DdownloadSources = true -DdownloadJavadocs = true仅当源和javadocs已提供给要从中下载的存储库时,此方法才有效。有时它们没有像Spring那样提供。
Spencer Kormos

2
Spring现在提供了它们。
罗宾·格林

请注意,此答案已有10多年的历史了。在eclipse中使用m2e插件,而不是让maven创建eclipse配置文件。
托尔比约恩Ravn的安德森

71

关于这项工作的其他答案,但是如果您想避免必须记住命令行参数,也可以将其添加到pom.xml的maven-eclipse-plugin部分的downloadSources和downloadJavadocs配置中:

<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>

我可以将其设置为每个依赖项级别吗?
marcorossi 2011年

@marcorossi对不起,我不确定是否可行。
考虑过

我不认为这是适当的。当然,源和Javadoc下载设置是用户首选项,而不是项目级别的关注点吗?请参阅下面答案,了解如何将其放置在settings.xml文件中。
邓肯·琼斯

我收到此警告:[警告] org.apache.maven.plugins:maven-eclipse-plugin的“ build.plugins.plugin.version”丢失了。要解决此问题,您可以在<artifactId>下添加以下内容:<version> 2.9 </ version>
Christiaan

16

我不希望将源/ 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>

1
我在.m2中复制了这个settings.xml,但是没有复制源和javadocs。但是,以下在CLI上显式指定的命令会显示源代码和javadocs:mvn依赖项:sources依赖项:resolve -Dclassifier = javadoc有什么想法吗?
阿伦·古普塔

也许这可行,但是请解释一下,Maven eclipse插件应该如何找到这些配置设置?您认为它正在寻找全球资产吗?
chrisinmtown

9

右键单击项目-> Maven->下载源


3
每个人都说如何启用它,而不是如何使Maven下载源代码!启用该选项之后
2014年

8

如果源jar位于本地存储库中,并且您正在使用Eclipses Maven支持,则源将自动附加。您可以运行mvn dependency:sources以下载给定项目的所有源jar。虽然不确定如何对文档进行同样的操作。


这对我有用。运行之后mvn dependency:sources,我能够在Eclipse中单击以阅读源代码。无需使用m2e进行其他处理。要下载javadocs,请执行以下操作mvn dependency:sources -Dclassifier=javadoc
Mat Gessel '16

4

如果您使用的是meclipse,

窗口-> maven->下载工件资源(选择检查)

(如果仍显示附件来源窗口,请单击附件文件按钮,然后关闭附件来源窗口。下次尝试查看该来源时,它将打开正确的来源)

苏拉兹



3

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

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


使用您的解决方案,我可以选择要获取源代码的模块。只需将CD插入该模块,然后使用“ mvn eclipse:clean eclipse:eclipse -DdownloadSources = true -T4 -Dmaven.test.skip = true -Denforcer.skip = true”进行构建。谢谢:)
vishwarajanand

2

在我使用m2Eclipse的Eclipse helios版本中,没有

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

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

如果右键单击您的项目,则选择maven->下载源

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

在eclipse之外执行mvn xxx是危险的-有些命令不能与m2ecilpse一起使用-我这样做一次就失去了整个项目,不得不重新安装eclipse并从头开始。

我仍在寻找一种方法,让ecilpse和maven查找并使用诸如servlet-api之类的外部jar的源。


2

将maven-eclipse-plugin的pom更改为包括source / javadoc,仅适用于添加到pom的新依赖项。如果需要申请现有的依赖项,则必须运行mvndependency:sources。我检查了这个。


2

有时仅以Eclipse-Maven首选项检查下载源/ javadoc是不够的。如果maven由于某些原因(网络中断?)无法下载它们,maven会创建一些* .lastUpdated文件,然后将不再下载。我的经验性解决方案是从.m2 / repository中删除工件目录,并使用已检查的源代码/ javadoc重新启动eclipse工作区,并在启动时也检查了更新项目。重新启动工作区之后,也许某些项目可能被标记为错误,而在Eclipse进度下载时,则将清除所有错误。也许这个过程不是那么“科学”,但对我来说却成功了。


1

我已经将pom配置添加到了maven-eclipse插件中,以下载源代码和javadocs,但我认为/希望新依赖项(而不是现有依赖项)会发生这种情况。

对于现有的依赖关系,我在包资源管理器中浏览到“ Maven Dependencies”,然后右键单击commons-lang-2.5.jar,选择“ Maven”。下载Sources ......似乎没有任何反应(没有进度条或表明它在做任何事情)。但是确实下载了,因为我现在可以跳到commons-lang的源代码。


1

过度考虑建议使用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!


1

对于Indigo(可能还有Helios),上述复选框位于此处:

窗口->首选项-> Maven


0

我有一个类似的问题,最适合我的解决方案是将源代码和编译后的代码包含在同一jar中(因此jar中的给定目录将同时包含Foo.javaFoo.class)。Eclipse自动将源与已编译的代码相关联,并自动从源中提供JavaDoc。显然,这只有在控制工件的情况下才有用。


0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.