java - 依赖:copy mojo used in command line and configured same pulgin in pom file as build plugin有什么区别

标签 java maven maven-scm

我想找到 io.airlift:node:0.112 的所有依赖项,下载最少的文件:

  1. 使用命令 %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 .

  2. 如果我创建一个虚拟 pom 并依赖于 node-0.112,然后在虚拟 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 试图下载这个额外的插件?无需下载额外插件即可找到依赖项的最佳方法是什么?

最佳答案

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),然后它不会下载可执行文件。

关于java - 依赖:copy mojo used in command line and configured same pulgin in pom file as build plugin有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793140/

相关文章:

java - 如何使用 html 在 swing 组件上渲染内部图像?

java - 仅在尚未运行时启动 Java 程序

maven - 预定义的 Maven 属性列表在哪里

java - 用于测试的 Maven 配置文件

maven - 使用GitHub上的maven-release-plugin "You can' t推送到git ://github. com/...”

java - 斜边程序,无法弄清楚如何让程序运行,直到用户输入2

git - 无法识别的 SSL 消息,明文连接?在 Jenkins

java - maven构建错误

maven - 使用 maven scm 插件提交多个文件

java - 处理后将对象设置为 null 是一种好习惯吗?