8

私は次の構成を持っています:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-dependency-plugin</artifactId>
  <version>2.6</version>
  <executions>
      <execution>
          <id>analyze</id>
          <goals>
              <goal>analyze-only</goal>
          </goals>
          <configuration>
              <failOnWarning>false</failOnWarning>
          </configuration>
      </execution>
      <!--Copy the dependencies so ant build has the same versions-->
      <execution>
          <id>copy-dependencies</id>
          <phase>package</phase>
          <goals>
              <goal>copy-dependencies</goal>
          </goals>
          <configuration>
              <outputDirectory>${project.basedir}/lib</outputDirectory>
              <overWriteIfNewer>true</overWriteIfNewer>
              <stripVersion>true</stripVersion>
              <overWriteReleases>false</overWriteReleases>
              <overWriteSnapshots>true</overWriteSnapshots>
              <excludeTransitive>false</excludeTransitive>
          </configuration>
      </execution>
  </executions>
</plugin>

上記の構成では、すべてが同じフォルダーにダンプされます。テスト構成を追加してテストスコープを除外しようとしましたが、エラーが発生します。

プロジェクトpcgenで目標org.apache.maven.plugins:maven-dependency-plugin:2.6:copy-dependencies(copy-dependencies)を実行できませんでした:テストスコープを除外できません。これによりすべてが除外されます。

テストの依存関係を他の依存関係から分離して、別のフォルダーにコピーできるようにする方法はありますか?

4

2 に答える 2

8

テスト構成を追加してテストスコープを除外しようとしましたが、エラーが発生します

おそらく非常に異なる理由で、私はこれに偶然出くわしましたが、私は私たち両方の答えを見つけたと思います。たとえば、これを試してください。もちろん、現在のディレクトリにpom.xmlが必要です。

mvn dependency:copy-dependencies \
-DincludeScope=runtime \
-DexcludeScope=provided \
-DoutputDirectory=target/war/WEB-INF/lib

Maven Dependency Plugin Issue#128について書いているBrian Foxに大いに遅れて感謝します:

2つのスコープは互いに構成されているため、同時に2つのスコープを含めたり除外したりする必要はありません。デフォルトでは、すべてを含むテストスコープが含まれます。テストの依存関係や提供された依存関係が必要ない場合は、ランタイムを含め、提供されたものを除外します。

解釈されるスコープは、pomで指定されているものではなく、Mavenが認識しているスコープです。したがって、「テスト」スコープにはすべてが含まれ、ランタイムにはコンパイルが含まれますが、提供されません。

2013年5月、includeScopeのドキュメントは次のように更新されました。

/**
  * Scope to include. An Empty string indicates all scopes (default).
  * The scopes being interpreted are the scopes as
  * Maven sees them, not as specified in the pom. In summary:
  * <ul>
  * <li><code>runtime</code> scope gives runtime and compile dependencies,</li>
  * <li><code>compile</code> scope gives compile, provided, and system dependencies,</li>
  * <li><code>test</code> (default) scope gives all dependencies,</li>
  * <li><code>provided</code> scope just gives provided dependencies,</li>
  * <li><code>system</code> scope just gives system dependencies.</li>
  * </ul>
  * 
  * @since 2.0
  */
 @Parameter( property = "includeScope", defaultValue = "" )
 protected String includeScope;
于 2013-12-02T06:15:50.213 に答える
0

実際に使用するincludeScopeと、テストスコープにはすべてのスコープが含まれるため、失敗します。

<includeScope>runtime</includeScope>
于 2014-01-23T00:11:28.187 に答える