1

这是如何获取 pom.xml 中提到的所有指定 jar 和传递依赖的 jar 的后续帖子? 除了我希望将依赖和传递依赖的 jar 的源下载到自定义提到的位置。

我尝试了以下命令,但没有奏效。

mvn dependency:sources -DoutputDirectory=.../

它没有用。

mvn dependency:sources dependency:copy-dependencies -DoutputDirectory=.../

它没有用。

4

1 回答 1

1

源 jar 通常可以通过 Maven 使用分类器获得,因此对于相同的 Maven 坐标(GAV、groupId、artifactId、version),您可以拥有多个与同一构建相关的工件(即默认应用程序/库 jar、源 jar 、测试源 jar、javadoc jar 等),正如另一个SO 答案中所解释的那样。源的标准分类器是sourcesMaven 源插件创建的。

可以将复制依赖项classifier配置为通过选项获取某个分类器。

因此,在您的情况下,要将依赖项的来源获取到外部文件夹,您可以调用以下命令:

mvn dependency:copy-dependencies -DoutputDirectory=somewhere -Dclassifier=sources

请注意附加-Dclassifier=sources选项。

实现相同目的的 pom 配置示例也在 Dependency Plugin 的官方文档中进行了说明,使用以下代码段:

<project>
  [...]
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.10</version>
        <executions>
          <execution>
            <id>src-dependencies</id>
            <phase>package</phase>
            <goals>
              <!-- use copy-dependencies instead if you don't want to explode the sources -->
              <goal>unpack-dependencies</goal>
            </goals>
            <configuration>
              <classifier>sources</classifier>
              <failOnMissingClassifierArtifact>false</failOnMissingClassifierArtifact>
              <outputDirectory>${project.build.directory}/sources</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

请注意,尽管 Maven 不知道来源,但它只知道人工制品。因此,如果无法通过其 GAV+C 获得源(分类)工件,Maven 会找到它,因此不会下载任何源。

于 2016-01-10T20:19:49.037 回答