在复制依赖关系的目标中,有没有一种方法可以使用maven依赖插件在测试和编译之间划分工件



我有以下配置:

<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-dependence-plugin:2.6:在项目pcgen上复制依赖项(复制依赖项):无法排除测试范围,这将排除所有内容。

是否有方法将测试依赖项与其他依赖项分离,以便我可以复制到不同的文件夹?

我试图通过添加测试配置来排除测试范围,但给出了一个错误

我只是偶然发现了这个,可能是因为非常不同的原因,但我想我找到了我们两个的答案。例如,试试这个。当然,当前目录中需要pom.xml。

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

非常感谢Brian Fox,他在Maven依赖插件问题#128:上撰文

您不应该同时包含或排除两个作用域,因为它们是由彼此组成的。默认情况是包括测试范围,其中包括所有内容。如果您不想要任何测试依赖项或提供的依赖项,则包括运行时并排除提供的。

被解释的作用域是maven看到的作用域,而不是pom中指定的作用域。因此;测试";范围包括所有内容,运行时包括编译但不提供等。

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;

确实使用includeScope,测试范围包括每个范围,这就是失败的原因。

<includeScope>runtime</includeScope>

最新更新