我们最近遇到了一些代码导致的错误,假设可以像打开常规文件一样打开类路径资源。这个代码由传递的单元测试覆盖,因为这个假设碰巧同时存在于Maven和Eclipse中。但在生产中,该代码在服务的WAR中位于JAR中,显然不起作用。
我们修复了这个错误,但我不太满意,因为我看不出如何确保它不再发生。
答案 0 :(得分:3)
使用Surefire运行单元测试。这种情况发生在mvn test
期间,“测试”发生在包装之前。但是,如果您想在mvn package
之后运行测试,则应使用Failsafe。
这里有一些关于配置类路径的very relevant documentation。默认情况下,它会将${project.build.outputDirectory}
放在类路径中,但您应该可以通过将classesDirectory设置为其他目录来阻止它。然后,您可以将自己的jar添加为additionalClasspathElements或dependenciesToScan