ChatGPT解决这个技术问题 Extra ChatGPT

从 Maven 存储库获取源 JAR

有谁知道您是否可以在 Maven 存储库中找到源 JAR?

在 Idea 中,右键单击 Maven 工具窗口中的依赖项会产生魔力。 czak.pl/images/posts/gwt-with-idea-ce/download-sources.png

h
hfhc2

Maven 小提示:获取源代码和 Javadocs 当您在 IDE 中使用 Maven 时,您经常会发现 IDE 需要为您的库依赖项解析源代码和 Javadocs。有一种简单的方法可以实现这一目标。 mvn dependency:sources mvn dependency:resolve -Dclassifier=javadoc 第一个命令将尝试下载 pom 文件中每个依赖项的源代码。第二个命令将尝试下载 Javadocs。 Maven 在这里受库打包程序的摆布。所以他们中的一些人没有打包源代码,而且他们中的许多人没有Javadocs。如果您有很多依赖项,使用包含/排除项来获取特定工件也是一个好主意,例如,以下命令将仅下载具有特定工件ID 的依赖项的源: mvn dependency:sources -DincludeArtifactIds=番石榴

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

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


下载后它们放在哪里?
它将它们放在与 M2_HOME 下的二进制 JAR 相同的目录中。
如果您使用的是 eclipse,那么之后执行“mvn eclipse:eclipse”可能会有所帮助,然后在 eclipse 中刷新您的项目——使您免于手动将源附加到每个文件。
下载后我找不到源代码和 javadocs。我检查了 M2_HOME 下的每个目录
mvn dependency:resolve -Dclassifier=javadoc之后,IntelliJ IDEA 会自动注意到 javadocs,这非常好。
R
Rob Audenaerde

配置和运行 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>

你是什么意思?如果您将其添加到 POM 文件中,您的意思是当您运行 mvn eclipse:eclipse 时会下载源代码和文档?
@RobAu,源将在哪里下载,它会附加到它自己的项目还是其他地方?
它将作为 xxxx-yy-sources.jar 的 jar 在您的 M2_REPO 中下载,与普通 jar 位于同一位置。它将作为库中 xxxx-yy jar 的源代码附加
如果您是 netbeans 用户,请转到菜单“工具”、“选项”、“java”,然后访问“执行”级别并使用@RobAu 引用的“eclipse:eclipse”填充输入“全局执行选项”
@KanagaveluSugumar 您需要将 M2_REPO 添加到 Eclipse,然后刷新项目。
Y
Yoon5oo

如果一个项目创建一个项目源的 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


d
dev_doctor

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

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

除了下载所有依赖项的源之外,是否可以通过在 pom 中指定它以及依赖项本身来下载某些依赖项,可以通过依赖项标记中的一些内部标记或类似的东西来下载?
此插件已停用
但是,@kiltek 该功能现在已内置到 Intellij 的 Maven UI 中......
A
Anver Sadhat

要下载一些特定的源代码或 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 中指定它以及依赖项本身来下载某些依赖项,可以通过依赖项标记中的一些内部标记或类似的东西来下载?
S
Stefan van den Akker

要下载任何工件,请使用

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 仅下载项目依赖项的源,而不是插件源或插件内定义的依赖源。


C
Community

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


这是唯一对我有用的解决方案。我正在使用 Eclipse 开普勒。因为这会在 .classpath 中进行正确的引用。如下所示:
当我关注@RobAu 回答时,仅从 repo 下载 Hibernate Docs,而不是 Spring。然后我访问你提供的链接并关注@mrembisz 并更改 Maven 偏好并像魅力一样工作。我得到 Spring Docs。 @Stefan De Boey 感谢分享。 +1。
G
Gabriel Ramirez

如果您使用的是 eclipse,您还可以打开 Preferences > Maven 并选择 Download Artifact Sources,这将使 pom.xml 保持完整并保留您的源代码或 java 文档(如果选择)仅用于在您的机器位置进行开发 ~/.m2


M
Mohammad Faisal

在日食中

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

先决条件:

Maven 应该使用 Eclipse 进行配置。


回答一个不同的问题。这个问题是关于下载源 JAR 而不生成它们。
W
Witold Kaczurba

在eclipse中-然后单击项目:

https://i.stack.imgur.com/lfnnK.png


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

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


B
Basil Bourque

NetBeans,上下文单击

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

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

https://i.stack.imgur.com/O12sq.png


C
Community

根据在 Eclipse (Kepler) 中观察 Maven 控制台,如果您尝试在编辑器中打开来自所述 Maven 依赖项的类,而您尚未下载其源代码,则会自动下载 Maven 依赖项的源代码。当您不想获取所有依赖项的源代码但不知道提前需要哪些依赖项(并且您正在使用 Eclipse)时,这很方便。

我最终使用了 @GabrielRamierez's approach,但以后会使用 @PascalThivent's approach


s
senninha

如果你知道 groupId 和 aritifactId,你可以像这样生成下载 url。

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

https://i.stack.imgur.com/pkLAC.jpg

https://i.stack.imgur.com/narOO.jpg


e
eeezyy

我还使用 eclipse 插件将项目放入 eclipse 工作区。由于我从事过一个不同的项目,我发现可以使用 eclipse 但没有 maven-eclipse-plugin。这使得它更容易在不同的环境中使用,并且可以在 eclipse 上轻松使用 maven。这无需更改 pom.xml 文件。

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


M
Manojkumar Khotele

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

我将使用“spring-boot-actuator-autoconfigure”的演示来解释它。

转到 maven 存储库 - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure 该页面列出了各种版本。点击想要的,比如说 2.1.6.RELEASE - https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE 页面有链接“ “文件”旁边的“查看全部”。单击它 - https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-actuator-autoconfigure/2.1.6.RELEASE/ 该页面列出了各种文件,包括源文件 - 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”repo(如果它在那里)并获取特定代码。

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

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

Starter POM 是一组方便的依赖描述符,您可以将其包含在应用程序中。您可以获得所需的所有 Spring 和相关技术的一站式商店,而无需搜索示例代码并复制粘贴加载的依赖描述符。

参考:Intro to Spring Boot Starters


S
Saikat

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

SettingsBuild, Execution, DeploymentBuild ToolsMavenImporting

https://i.stack.imgur.com/lmfUn.png


N
Naresh Muthyala

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


a
atom88

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


D
DAB

如果您使用的是 Eclipse,我建议您同时下载第三方库的源代码和 Javadocs。

右键单击项目并按照下面的屏幕截图下载两者。

下载 Javadocs 意味着您通常可以从第三方库中获得有关方法的上下文帮助,以及有用的参数描述等。如果您不太了解该库,这将是必不可少的。在某些情况下,我发现当源不可用时 Javadocs 可用。

https://i.stack.imgur.com/2zmL0.png