在一个 Maven 项目中,我有几个模块,其中只有一个用于单元测试的 persitence.xml
src/test/resources/META-INF/persistence.xml
如果我使用“包”构建项目,(单元测试)persistence.xml 将被复制到 jar 文件中。
创建的工件 (jar) 不应包含任何 persistence.xml,因为它已包含在包含多个模块的 war 文件中。
poms 非常小并且没有配置插件,一切都应该是默认行为。
- 我做错了什么?
- 是否有任何文档可以解释这种影响?
最佳答案
当您使用调试标志运行 Maven 时,即 mvn -X ...
您是否看到任何消息表明来自 src/test
的文件正在被复制?如果是这样,您可能需要检查执行此 Activity 的 Maven 目标。
此外,您可能希望在 Maven 构建之后检查项目/模块的 target/classes
和 target/test-classes
目录的内容。假设模块有一个jar包,maven-jar-plugin
仅获取项目输出目录的内容,即 target/classes
或 ${project.build.outputDirectory}
,同时小心避开项目的测试输出目录,即 target/test-classes
或 ${project.build.testOutputDirectory}
。从 mvn -X ...
的输出中也可以看出这一点。
最后,您可能想要检查本地 Maven 存储库的内容以查找创建的 jar 文件。您的 maven-war-plugin
可能会用于创建 WAR 文件,
可能会从本地存储库中选择一个较旧且不正确的 JAR 版本,其中捆绑了测试持久性。
关于java - 为什么 Maven 在生产构建中使用测试资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7207178/