从Maven存储库获取源JAR


Answers:


786

Maven Micro-Tip:获取源代码和Javadocs

在IDE中使用Maven时,通常会发现IDE需要解析库依赖项的源代码和Javadocs。有一个简单的方法可以实现该目标。

mvn dependency:sources
mvn dependency:resolve -Dclassifier=javadoc

第一个命令将尝试下载pom文件中每个依赖项的源代码。

第二个命令将尝试下载Javadocs。

Maven受这里的图书馆打包人员的摆布。因此,其中一些将没有打包源代码,并且许多将没有Javadocs。

如果您有很多依赖关系,那么最好使用包含/排除来获取特定的工件,例如,以下命令将仅下载具有特定artifactId的依赖关系的源:

mvn dependency:sources -DincludeArtifactIds=guava

来源:http//tedwise.com/2010/01/27/maven-micro-tip-get-sources-and-javadocs/

文档:https : //maven.apache.org/plugins/maven-dependency-plugin/sources-mojo.html


10
下载后将它们放在哪里?
詹姆斯·摩尔

15
它将它们与M2_HOME下的二进制JAR放在同一目录中。
阿兰·奥德

19
如果您使用的是eclipse,之后再执行“ mvn eclipse:eclipse”,然后在eclipse中刷新项目,可能会有所帮助-避免手动将源附加到每个文件。
unigeek 2014年

1
下载它们后,找不到源和javadocs。我已经检查了M2_HOME下的每个目录
Patrick Kiernan

2
mvn dependency:resolve -Dclassifier=javadocIntelliJ IDEA自动注意到javadocs之后,这非常好。
Jonik

89

配置和运行maven-eclipse插件(例如,从命令行mvn eclipse:eclipse

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

你什么意思?mvn eclipse:eclipse如果您将源代码和文档添加到POM文件中,那么您是在运行时下载源文件和文档吗?
Lii 2014年

3
是。就那么简单。
RobAu 2014年

@RobAu,将在哪里下载源代码,将其附加到自己的项目还是其他地方?
Jaskey 2014年

1
它将M2_REPO以xxxx-yy-sources.jar的jar格式下载到jar中,与普通jar相同。它将作为库中xxxx-yy jar的源代码附加
RobAu 2014年

1
@KanagaveluSugumar,您需要将M2_REPO添加到eclipse,然后刷新项目。
RobAu

36

如果一个项目创建了一个由项目源组成的jar并将其部署到Maven存储库中,那么您将找到它:)

仅供参考,源工件通常由maven-source-plugin创建。此插件可以将项目的主要或测试源捆绑到jar存档中,如配置源插件中所述

(...)如果生成的jar文件finalName是主要来源,则将以加号“ -sources” 的值命名。否则,finalName如果是测试源,它将加上“ -test-sources”。

用来描述工件的附加文本(此处为“ -sources”或“ -test-sources”)称为分类器。

要声明对使用分类器的工件的依赖,只需添加<classifier>元素。例如:

<dependency>
  <groupId>org.hibernate</groupId>
  <artifactId>hibernate</artifactId>
  <version>3.2.7.ga</version>
  <classifier>sources</classifier>
</dependency>

请注意,您通常不这样做,大多数IDE都提供了从主要工件下载源(和/或JavaDoc)的支持,而没有明确声明对它们的依赖性。

最后,还要注意,某些存储库搜索引擎允许使用分类器搜索工件(至少Nexus使用高级搜索进行搜索)。例如,请参见此搜索


19

要下载某些特定的源代码或javadoc,我们需要包含GroupIds-其以逗号分隔的值,如下所示

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=sources

请注意,分类器之间没有逗号分隔,要下载javadoc,我们需要将分类器作为javadoc再运行一次以上命令

mvn dependency:sources -DincludeGroupIds=com.jcraft,org.testng -Dclassifier=javadoc

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

18

IntelliJ Idea 的Maven Idea 插件可让您指定是否应解析和下载源代码和Java文档

mvn idea:idea -DdownloadSources=true -DdownloadJavadocs=true

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

此插件已
停用

14

要下载任何工件,请使用

mvn dependency:get -Dartifact=groupId:artifactId:version:packaging:classifier

对于Groovy来源,这将是

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:sources

对于Groovy的javadoc,您可以使用

mvn dependency:get -Dartifact=org.codehaus.groovy:groovy-all:2.4.6:jar:javadoc

这会将给定的工件放入本地Maven存储库,即通常$HOME/.m2/repository

dependency:sources 仅下载项目依赖项的源,而不是插件源,也不下载插件内部定义的依赖项源。


12

您可以在以下相关问题中找到信息: 如果使用eclipse maven插件,则获取附加到Eclipse的Maven管理的依赖项的源jar文件,
然后使用'mvn eclipse:eclipse -DdownloadSources = true'


这是唯一对我有用的解决方案。我正在使用Eclipse Kepler。由于这在.classpath中进行了正确的引用。如下所示:
aspdeepak 2014年

<classpathentry kind =“ var” path =“ M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0.jar” sourcepath =“ M2_REPO / redis / clients / jedis / 2.6.0 / jedis-2.6.0 -sources.jar“>
aspdeepak,2014年

当我遵循@ RobAu回答时,仅从回购中下载了Hibernate Docs,而不是Spring。然后,我访问您提供的链接,并按照@ mrembisz进行操作,并对Maven偏好进行更改,并像一种魅力一样工作。我得到Spring Docs。@Stefan De Boey感谢您的分享。+1。
OO7 2015年

9

如果您使用的是eclipse,则还可以打开“首选项”>“ Maven”并选择“下载Artifact源”,这将使pom.xml完整无缺,并将源或Java文档(如果选中)仅用于在您的机器位置〜/ .m2进行开发。


7

在Eclipse中

  1. 右键点击 pom.xml
  2. 选择Run As-> Maven generate-sources
    它会默认在.m2文件夹中生成源

先决条件:

Maven应该配置有Eclipse。


1
回答另一个问题。这个问题是关于不生成源JAR的下载。
斯蒂芬·C

5

在Eclipse中-单击项目,然后:

在此处输入图片说明


我在Eclipse Maven设置中未选中“下载工件资源”,因此它仅下载jar。但是后来,我尝试使用此解决方案下载源,但没有任何消息失败。我在maven本地存储库中删除了jar文件夹,然后再次下载了jar,然后成功下载了源jar。我认为这是因为maven本地存储库中有jar,所以我无法使用此方法下载源代码。
坦率

4

如果已上传,则可以。通常,它们被称为“ frameworkname-version-source(s)”


4

NetBeans,上下文单击

在具有Maven驱动的项目的NetBeans 8中,只需在上下文上单击您感兴趣的依赖项的jar文件列表项即可。选择Download Sources。请稍等,NetBeans将自动下载并安装源代码(如果有)。

同样,您可以选择Download Javadoc在本地安装该文档。然后,您可以在编辑器中右键单击一些代码,然后选择查看JavaDoc。

在由Maven驱动的NetBeans 8项目中选择了上下文菜单项“下载源”的屏幕快照


3

基于在Eclipse(Kepler)中观看Maven控制台的基础,如果您尝试在编辑器中尝试从所述Maven依赖项打开一个类,而您尚未下载该源,那么将自动下载Maven依赖项的源。当您不想获取所有依赖项的源代码,但是又不知道想要哪些依赖项(并且正在使用Eclipse)时,这非常方便。

我最终使用了@GabrielRamierez的方法,但以后将使用@PascalThivent的方法



1

我还使用了eclipse插件将项目导入eclipse工作区。由于我从事过另一个项目,因此我发现可以使用eclipse,但不需要使用maven-eclipse-plugin。这使得它更易于在不同的环境中使用,并使得Maven在Eclipse之上的使用变得容易。而且无需更改pom.xml文件。

因此,我推荐加布里埃尔·拉米雷斯(Gabriel Ramirez)的方法。


0

为了进行调试,您还可以使用“ Java Decompiler”,例如:JAD和即时反编译源代码(尽管生成的源代码与原始源代码永远不会相同)。然后将JAD作为插件安装在Eclipse或您喜欢的IDE中。


0

Maven仓库确实提供了下载源jar的简单方法。

我将使用“ spring-boot-actuator-autoconfigure”的演示对其进行解释。

  1. 转到Maven存储库-https: //mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure
  2. 该页面列出了各种版本。例如,单击所需的2.1.6.RELEASE- https: //mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE
  3. 该页面在“文件”旁边具有链接“查看全部”。单击它 -https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/
  4. 该页面列出了各种文件,包括用于来源的文件-https: //repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/spring-boot-actuator-autoconfigure -2.1.6.RELEASE-sources.jar

否则,您可以始终从github上“ git clone”该仓库,如果有的话,并获取特定的代码。

正如其他人所解释的那样,您可以使用“ mvndependency:sources”命令为所使用的依赖项获取并生成源jar。

注意:某些依赖项将没有sources.jar,因为它们不包含源代码而是一个pom文件。例如spring-boot-starter-actuator。在这种情况下:

入门POM是可以在应用程序中包括的一组便捷的依赖项描述符。您可以一站式购买所需的所有Spring和相关技术,而不必遍历示例代码并复制依赖项描述符的粘贴负载。

参考:Spring Boot Starters简介


0

在IntelliJ IDEA中,可以通过打开“自动下载源”选项在导入时自动下载工件源:

Settings→交通 Build, Execution, Deployment→交通Build Tools→交通Maven→交通Importing

在此处输入图片说明


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.