我看到maven-dependency-plugin
这样做了;但是,它似乎将所有内容(包括测试jar)复制到目标目录。任何人都知道如何配置此插件以排除测试罐?
答案 0 :(得分:26)
实现这一目标的答案是:
<includeScope>compile</includeScope>
该指令进入maven-dependency插件的pom.xml部分。例如:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<includeScope>compile</includeScope>
</configuration>
</execution>
</executions>
</plugin>
excludeScope不起作用,因为排除测试会中止构建并排除所有可能的范围。相反,需要调整所包含的范围。
答案 1 :(得分:19)
目前尚不清楚是否要排除test
范围的jar或测试相关的jar(test
分类器)。在任何一种情况下,dependency:copy-dependencies都有两个属性可以帮助您。
答案 2 :(得分:2)
文档说:被解释的范围是 Maven看到了它们,而不是pom中指定的那样。
In summary:
* runtime scope gives runtime and compile dependencies
* compile scope gives compile, provided, and system dependencies
* test (default) scope gives all dependencies
* provided scope just gives provided dependencies
* system scope just gives system dependencies
根据我的经验,如果您只想使用在项目pom.xml文件中指定的具有编译范围的依赖项来运行类,则必须添加-DincludeScope=runtime
Java系统设置,如下所示:
mvn compile dependency:copy-dependencies -DincludeScope=runtime
java -cp "target/dependecy/*:target/classes" com.example.Main args...
致谢