我想找到io.airlift的所有依赖项:node:0.112,下载最小文件:
使用命令%M2_HOME%/ bin / mvn依赖项:copy -Dmdep.outputScope = true -DincludeScope = compile -DincludeParents = true -DoutputFile =" F:\ temp \ mytemp5&#34 ; -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,然后在dummy pom上运行相同的命令,它就不会下载 org.apache.maven.scm:maven- SCM-提供商-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试图下载这个额外的插件?在不下载额外插件的情况下找到依赖项的最佳方法是什么?
答案 0 :(得分:1)
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的一部分。有关更多信息,请参阅链接
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,然后它不会下载可执行文件。