从Maven存储库获取源JAR

时间:2010-01-13 19:05:13

标签: java maven mvn-repo

有没有人知道你是否可以在Maven资源库中找到源JAR?

19 个答案:

答案 0 :(得分:771)

  

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

     

当您在IDE中使用Maven时,您经常会发现IDE需要为您的库依赖项解析源代码和Javadoc。有一种简单的方法可以实现这一目标。

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

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

     

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

     

Maven受到图书馆打包者的支配。因此,其中一些将不会打包源代码,其中许多都不会有Javadoc。

     

如果您有很多依赖项,那么使用它也可能是个好主意   包含/排除以获取特定工件,以下命令   例如,只会下载依赖项的源代码   一个特定的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

答案 1 :(得分:87)

从命令行运行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>

答案 2 :(得分:33)

如果项目创建了一个项目源jar并将其部署到maven存储库,那么你会发现它:)

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

  

(...)生成的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使用高级搜索)。例如,请参阅this search

答案 3 :(得分:18)

要下载一些特定来源或javadoc ,我们需要包含GroupIds - 它是逗号分隔值,如下所示

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

请注意,分类器不是以逗号分隔的,要下载javadoc,我们需要再次使用分类器作为javadoc运行上述命令

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

答案 4 :(得分:16)

IntelliJ Idea的maven idea plugin允许您指定是否应解析和下载源和Java文档

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

答案 5 :(得分:13)

下载任何工件

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只是下载项目依赖项的源代码,而不是插件源代码,也不是插件中定义的依赖项源代码。

答案 6 :(得分:11)

您可以在此相关问题中找到相关信息:Get source jar files attached to Eclipse for Maven-managed dependencies
如果你使用eclipse maven插件然后使用'mvn eclipse:eclipse -DdownloadSources = true'

答案 7 :(得分:9)

如果你正在使用eclipse,你也可以打开Preferences&gt; Maven并选择Download Artifact Sources,这将使pom.xml完好无损,并保留您的源或java文档(如果选择)仅用于在您的机器位置进行开发〜/ .m2

答案 8 :(得分:6)

在Eclipse中

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

    <强>先决条件:

    应该使用Eclipse配置Maven。

答案 9 :(得分:4)

在eclipse中 - 点击项目然后:

enter image description here

答案 10 :(得分:3)

NetBeans,Context-Click

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

同样,您可以选择Download Javadoc来获取本地安装的文档。然后,您可以在编辑器中按上下文单击某些代码,然后选择查看JavaDoc。

screen shot of context-menu item "Download Sources" being chosen in a NetBeans 8 project driven by Maven

答案 11 :(得分:3)

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

答案 12 :(得分:2)

基于在Eclipse(Kepler)中观看Maven控制台,如果您尝试在编辑器中打开已经没有下载源的Maven依赖项的类,则会自动下载Maven依赖项的源代码。当你不想获取所有依赖项的源代码时,这很方便,但是你不知道你想要哪些(并且你正在使用Eclipse)。

我最终使用@GabrielRamierez's approach,但将继续使用@PascalThivent's approach

答案 13 :(得分:1)

我还使用eclipse插件将项目导入eclipse工作区。 由于我曾经在一个不同的项目上工作,我看到可以使用eclipse但没有maven-eclipse-plugin。这使得它可以更容易地在不同的环境中使用,并且可以轻松使用maven而不是eclipse。并且没有更改pom.xml文件。

所以,我推荐Gabriel Ramirez的方法。

答案 14 :(得分:1)

如果您知道 groupId aritifactId ,则可以生成这样的下载网址。

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.2.3</version>
    </dependency>

http://central.maven.org/maven2/ch/qos/logback/logback-classic/

,您将获得一个类似这样的页面,选择了所需的版本,请尽情享受吧! enter image description here

enter image description here

答案 15 :(得分:0)

对于调试,您还可以使用“ Java Decompiler”,例如:JAD和动态反编译源(尽管生成的源永远不会与原始源相同)。然后将JAD安装为Eclipse或您最喜欢的IDE中的插件。

答案 16 :(得分: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和相关技术,而不必遍历示例代码并复制粘贴的依赖项描述符负载。

参考:Intro to Spring Boot Starters

答案 17 :(得分:0)

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

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

enter image description here

答案 18 :(得分:0)

如果要手动找到任何工件的源jar文件,请转到特定工件的maven存储库位置,然后在“文件”中单击“查看全部”。您可以找到源jar文件。