【问题标题】:How to download sources for a jar with Maven?如何使用 Maven 下载 jar 的源代码?
【发布时间】:2012-07-06 20:39:56
【问题描述】:

在我的项目中,我使用的是通过 Maven 提供的 JAR 文件。但是 Maven 给我的只是这个 jar - 没有 javadocs 也没有来源。按“Download Sources”没有任何效果:Eclipse 仍然没有找到 jar 的源代码。

这取决于什么?存储库是否应该自动提供源代码?

我可能需要在 POM 中写一些东西来指示 Maven 下载源代码吗?

我当前的 pom 如下:

<repositories>
    <repository>
        <id>xuggle repo</id>
        <url>http://xuggle.googlecode.com/svn/trunk/repo/share/java/</url>
    </repository>
</repositories>

<dependencies>

    <dependency>
        <groupId>xuggle</groupId>
        <artifactId>xuggle-xuggler</artifactId>
        <version>5.3</version>
        <type>rar</type>
    </dependency>

</dependencies>

为什么 Maven 没有说任何 cmets 在它的源下载失败?

【问题讨论】:

    标签: java maven jar


    【解决方案1】:

    源/javadoc jar 可能尚未提供且不在存储库中——没有任何东西需要存在源/javadoc jar。

    【讨论】:

      【解决方案2】:

      2020 年更新:

      maven dependency plugin 应该与dependency:sources goal 一起使用:

        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.1</version>
          <executions>
            <execution>
              <id>download-sources</id>
              <goals>
                <goal>sources</goal>
              </goals>
              <configuration>
              </configuration>
            </execution>
          </executions>
        </plugin>
      

      这也可以从命令行运行:

      mvn dependency:sources -Dsilent=true
      

      已弃用:

      执行 mvn dependency:sources 将强制 maven 下载项目中所有 jar 的所有源,如果源可用(上传到托管工件的存储库中)。如果你想下载 javadoc 命令是mvn dependency:resolve -Dclassifier=javadoc

      也可以在您的 settings.xml 文件中创建配置文件并包含以下属性:

      <properties>
        <downloadSources>true</downloadSources>
        <downloadJavadocs>true</downloadJavadocs>
      </properties>
      

      【讨论】:

      • 但是如果存储库中没有源,Maven 会默默地什么都不做,对吧?没有错误,没有警告?
      • 是的,我想是的,至少如果它没有在一些非常冗长/调试模式下运行。也许可以在调试/详细模式下运行它并 grep 获取特定消息。
      • 我添加了一个答案以扩展将这些属性添加到 maven settings.xml
      • @hovanessyan - 我们可以添加一些设置,仅针对某些依赖项而不是所有依赖项拉取 jars 吗?
      • 这些属性适用于已弃用的 Eclipse Maven 插件 (maven.apache.org/plugins/maven-eclipse-plugin/…)。如果您不使用该插件,他们将不会做任何事情。
      【解决方案3】:
      mvn dependency:sources
      mvn dependency:resolve -Dclassifier=javadoc
      

      如果它没有来源,它应该说类似

      [INFO] The following files have NOT been resolved:
      [INFO]    com.oracle:ojdbc6:java-source:sources:12.1.0.1
      [INFO]    javax:javaee-api:java-source:sources:6.0
      

      【讨论】:

        【解决方案4】:

        继续@hovanessyan 的回答。

        在 Maven 的 settings.xml 中启用 downloadSources 和 downloadJavadocs 的基本配置文件如下所示。 例如profile id 是 downloadSources

        <!-- add the profile under profiles section -->
        
            <profile>
                <id>downloadSources</id>
                <properties>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>           
                </properties>
            </profile>
        
        <!-- activate the profile under activeProfiles section -->
        
          <activeProfiles>
            <activeProfile>downloadSources</activeProfile>
          </activeProfiles>
        

        【讨论】:

          【解决方案5】:

          在 Eclipse 中,右击您的项目,然后再次点击 Maven&gt;Download Sources Maven&gt;Download Javadoc

          【讨论】:

            【解决方案6】:

            最好不要依赖 Eclipse 插件,因为它已被弃用。使用 downloadSourcesdownloadJavadocs 属性对我不起作用。上面发布的关于使用依赖插件词的答案。但是,您可能希望自动下载源代码和 javadocs。此外,您可能希望始终创建一个源 jar 和一个 javadoc jar。把它放在你项目的 pom 中。如果您使用模块,请放入您的父 pom。

            <build>
                <plugins>
                    <!-- download sources and javadoc -->
                    <plugin>
                        <artifactId>maven-dependency-plugin</artifactId>
                        <version>2.10</version>
                        <executions>
                            <execution>
                                <id>download-sources</id>
                                <goals>
                                    <goal>sources</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>download-javadoc</id>
                                <configuration>
                                    <classifier>javadoc</classifier>
                                </configuration>
                                <goals>
                                    <goal>resolve</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Always create javadoc jar. -->
                    <plugin>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>2.10.4</version>
                        <executions>
                            <execution>
                                <id>attach-javadoc</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <!-- Always create source jar. -->
                    <plugin>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>2.10</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar</goal>
                                    <goal>test-jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
            

            【讨论】:

            • 我同意@AlmirCampos
            【解决方案7】:

            您也可以使用以下方式下载target/dependencies 下的资源:

            mvn -Dclassifier=sources dependency:copy-dependencies
            

            【讨论】:

              猜你喜欢
              • 2016-06-17
              • 2018-01-26
              • 2013-10-09
              • 1970-01-01
              • 2015-03-14
              • 2015-04-08
              • 2012-02-18
              • 2017-05-09
              • 1970-01-01
              相关资源
              最近更新 更多