我们最近遇到了一个错误,该错误是由一些代码假设可以像打开常规文件一样打开类路径资源的。这段代码被通过的单元测试覆盖,因为这个假设恰好在 Maven 和 Eclipse 中都成立。但在生产中,该代码位于服务 WAR 的 JAR 中,显然不起作用。
我们修复了这个错误,但我不太满意,因为我看不出如何确保它不会再次发生。
我们最近遇到了一个错误,该错误是由一些代码假设可以像打开常规文件一样打开类路径资源的。这段代码被通过的单元测试覆盖,因为这个假设恰好在 Maven 和 Eclipse 中都成立。但在生产中,该代码位于服务 WAR 的 JAR 中,显然不起作用。
我们修复了这个错误,但我不太满意,因为我看不出如何确保它不会再次发生。
单元测试使用Surefire运行。这发生在包装期间mvn test
,“测试”发生在包装之前。但是如果你想在之后运行测试mvn package
,你应该使用Failsafe。
这是一些关于配置类路径的非常相关的文档。默认情况下,它将放在${project.build.outputDirectory}
类路径中,但您应该能够通过将classesDirectory设置为其他目录来防止这种情况。然后您可以将自己的 jar 添加为additionalClasspathElements或dependenciesToScan