2011-08-26 79 views
2

在行家项目我有几个模块,其仅具有在Maven为什么在生产版本中使用测试资源?

src/test/resources/META-INF/persistence.xml 

用于单元测试一个persitence.xml如果我建立与“包”的(单元测试)的persistence.xml项目被拷贝到jar文件。

创建的工件(jar)不应该有任何persistence.xml,因为它已包含在包含多个模块的war文件中。

该poms非常小,没有配置插件,一切都应该是默认行为。

  • 我在做什么错?
  • 是否有任何文件可以解释这种影响?
+5

你碰巧在使用IDE吗?我有Eclipse做类似的事情。 src/test/resources的Eclipse输出文件夹被设置为默认(target/classes),所以无论何时Eclipse编译项目,它都会将文件从src/test/resources复制到目标/类。在'mvn package'上,Maven会很高兴地将所有的东西从目标/类复制到jar中。 – ig0774

+0

@ ig0774谢谢我会在星期一检查这个,你应该发布这个答案;-) – stacker

+0

@ ig0774你说得对,Eclipse编译目标目录是问题。 – stacker

回答

1

当您使用调试标志运行Maven时,即mvn -X ...您是否看到任何指示正在复制src/test的文件的消息?如果是这样,您可能需要检查执行此活动的Maven目标。

另外,您可能想要在Maven构建之后检查项目/模块的target/classestarget/test-classes目录的内容。假设模块具有罐子的包装,maven-jar-plugin仅拾取项目输出目录的内容,即target/classes${project.build.outputDirectory},同时小心避免项目的测试输出目录,即target/test-classes${project.build.testOutputDirectory}。这也应该从mvn -X ...的输出中显而易见。

最后,您可能需要检查本地Maven存储库中用于创建的jar文件的内容。可能发生这样的情况,您的maven-war-plugin用于创建WAR文件, 可能会从本地存储库中选取包含测试持久性的JAR的较旧和不正确的版本。

+0

谢谢我会在星期一进行检查 – stacker

相关问题