2

最小限のファイルをダウンロードして、io.airlift:node:0.112 のすべての依存関係を見つけたい:

  1. コマンド%M2_HOME%/bin/mvn を使用する依存関係: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-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 がこの追加のプラグインをダウンロードしようとするのはなぜですか? 追加のプラグインをダウンロードせずに依存関係を見つける最良の方法は何ですか?

4

1 に答える 1

1

io.airlift:node:0.112pom には次の行があります。

<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 の一部です。詳細については、リンクを参照してください

したがって、実行可能ファイルはこれです。そのリンクにはあまりありませんが、見てみることができます。これにより、org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1がダウンロードされ、プロジェクトの git リポジトリへの接続が容易になります。これはプロジェクト自体への依存ではありませんが、バージョン管理に git を使用してプロジェクトを維持する方法への依存です。

したがって、 を実行するmvn dependency:copyと がダウンロードされますが、git scm を定義しない(そして実際には SCM をまったく定義しない)gitexe新しいプロジェクトを作成すると、実行可能ファイルはダウンロードされません。

于 2015-08-03T17:36:22.060 に答える