我在文件夹src下有main和test子文件夹的maven项目。 但是,当我构建maven jar时,我在jar文件中看不到测试文件(我确实看到src / main中的文件;我没有看到来自src / test的测试文件)
[xx@localhost target]$ jar tvf cbm.jar | grep *Test*
[xx@localhost target]$
这是我的pom.xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<!-- https://maven.apache.org/plugins/maven-assembly-plugin/examples/index.html -->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>Main</mainClass>
</manifest>
</archive>
<finalName>afloat</finalName>
<appendAssemblyId>false</appendAssemblyId>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</pluginManagement>
</build>
修改 @azurefrog:我在生产中遇到问题,需要在生产机器上运行测试用例。
答案 0 :(得分:0)
这是正常行为。来自src的Maven crate jar(仅限生产代码)。 如果你想将测试.class添加到jar,你必须创建自己的maven插件。 检查一下 Guide for maven plugin development
答案 1 :(得分:0)
Maven不打包测试类。您需要做的是将maven项目复制到生产计算机并从该计算机运行mvn test
。
Maven的行为是因为src/test
下的所有内容都不应该用于生产。它的测试代码,资源等。一个常见的用途是将配置文件放在src/test/resources
下,例如Spring上下文文件。如果这些文件成为官方jar文件,那么在许多情况下会非常糟糕。
那就是说,如果你想运行测试代码你可以做的就是遵循这个过程: