我有以下配置:
<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>
以上配置转储同一文件夹中的所有内容。我尝试通过添加测试配置来排除测试范围,但是出现错误:
无法执行目标org.apache.maven.plugins:maven-dependency-plugin:2.6:项目pcgen上的copy-dependencies(copy-dependencies):无法排除测试范围,这将排除所有内容。
有没有办法将测试依赖项与其他文件分开,以便我可以复制到不同的文件夹?
答案 0 :(得分:8)
我尝试通过添加测试配置来排除测试范围但是会出错
我偶然发现了这个,可能是出于不同的原因,但我想我找到了答案。例如,尝试这样做。当然,您需要在当前目录中使用pom.xml。
mvn dependency:copy-dependencies \
-DincludeScope=runtime \
-DexcludeScope=provided \
-DoutputDirectory=target/war/WEB-INF/lib
感谢Brian Fox撰写的Maven Dependency Plugin Issue #128:
您不应该同时包含或排除两个范围,因为它们是由彼此组成的。默认设置是包含测试范围,其中包括所有内容。如果您不想要任何测试依赖项或提供的依赖项,那么请包含runtime和exclude provided。
正在解释的范围是maven看到的范围,而不是pom中指定的范围。因此“测试”范围包括所有内容,运行时包括编译但未提供等。
2013年5月,includeScope documentation was updated为:
/**
* 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;
答案 1 :(得分:0)
确实使用includeScope
,测试范围包括每个范围,这就是失败的原因。
<includeScope>runtime</includeScope>