dependency:copy 在命令行中使用的 mojo 和在 pom 文件中配置相同的插件作为构建插件有什么区别
What's the difference between dependency:copy mojo used in command line and configured same pulgin in pom file as build plugin
我想找到 io.airlift:node:0.112 的所有依赖项,下载最小文件:
使用命令 %M2_HOME%/bin/mvn dependency:copy -Dmdep.outputScope=true -DincludeScope=compile -DincludeParents=true -DoutputFile="F:\temp\mytemp5" -DexcludeTransitive=true -f "F:\maven-plugins\node-0.112.pom",正在下载org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1 .
如果我创建一个虚拟 pom 并依赖于 node-0.112,然后 运行 在虚拟 pom 上执行相同的命令,它不会下载 org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1。下面是我的 pom 文件:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>dummy</groupId>
<artifactId>dummy</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>io.airlift</groupId>
<artifactId>node</artifactId>
<version>0.112</version>
<type>pom</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.8</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<addParentPoms>true</addParentPoms>
<copyPom>true</copyPom>
<outputDirectory>.</outputDirectory>
<excludeTransitive>false</excludeTransitive>
<useRepositoryLayout>true</useRepositoryLayout>
<includeScope>compile</includeScope>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
另外 org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1 甚至没有作为两种方法的依赖项返回。
为什么 maven 试图下载这个额外的插件?在不下载额外插件的情况下找到依赖项的最佳方法是什么?
io.airlift:node:0.112
pom 中有以下几行:
<scm>
<connection>scm:git:git://github.com/airlift/airlift.git</connection>
<developerConnection>scm:git:git@github.com:airlift/airlift.git</developerConnection>
<url>https://github.com/airlift/airlift/tree/master</url>
<tag>0.112</tag>
</scm>
SCM 代表 Software Configuration Management,它基本上是定义作者如何维护其来源的 pom 部分。有关详细信息,请参阅 link
So, the executable is this; there's not much at that link but you can take a look. 这会导致下载 org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1
以促进项目与其 git 存储库的连接。它不依赖于项目本身,但它 依赖于项目的维护方式 - 通过使用 git 进行版本控制。
因此,如果您执行 mvn dependency:copy
,它将下载 gitexe
,但是如果您创建一个 没有 定义 git scm(事实上,根本没有定义任何 SCM),那么它不会下载可执行文件。
我想找到 io.airlift:node:0.112 的所有依赖项,下载最小文件:
使用命令 %M2_HOME%/bin/mvn dependency:copy -Dmdep.outputScope=true -DincludeScope=compile -DincludeParents=true -DoutputFile="F:\temp\mytemp5" -DexcludeTransitive=true -f "F:\maven-plugins\node-0.112.pom",正在下载org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1 .
如果我创建一个虚拟 pom 并依赖于 node-0.112,然后 运行 在虚拟 pom 上执行相同的命令,它不会下载 org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1。下面是我的 pom 文件:
<project> <modelVersion>4.0.0</modelVersion> <groupId>dummy</groupId> <artifactId>dummy</artifactId> <version>1.0</version> <packaging>pom</packaging> <dependencies> <dependency> <groupId>io.airlift</groupId> <artifactId>node</artifactId> <version>0.112</version> <type>pom</type> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.8</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <addParentPoms>true</addParentPoms> <copyPom>true</copyPom> <outputDirectory>.</outputDirectory> <excludeTransitive>false</excludeTransitive> <useRepositoryLayout>true</useRepositoryLayout> <includeScope>compile</includeScope> </configuration> </execution> </executions> </plugin> </plugins> </build> </project>
另外 org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1 甚至没有作为两种方法的依赖项返回。
为什么 maven 试图下载这个额外的插件?在不下载额外插件的情况下找到依赖项的最佳方法是什么?
io.airlift:node:0.112
pom 中有以下几行:
<scm>
<connection>scm:git:git://github.com/airlift/airlift.git</connection>
<developerConnection>scm:git:git@github.com:airlift/airlift.git</developerConnection>
<url>https://github.com/airlift/airlift/tree/master</url>
<tag>0.112</tag>
</scm>
SCM 代表 Software Configuration Management,它基本上是定义作者如何维护其来源的 pom 部分。有关详细信息,请参阅 link
So, the executable is this; there's not much at that link but you can take a look. 这会导致下载 org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1
以促进项目与其 git 存储库的连接。它不依赖于项目本身,但它 依赖于项目的维护方式 - 通过使用 git 进行版本控制。
因此,如果您执行 mvn dependency:copy
,它将下载 gitexe
,但是如果您创建一个 没有 定义 git scm(事实上,根本没有定义任何 SCM),那么它不会下载可执行文件。