从Maven运行测试失败并停止构建jar

时间:2010-07-29 16:41:36

标签: java testing maven-2 build

我正在尝试使用maven构建一个jar,这个jar是使用ant构建的。

当我从maven运行测试时,我得到了:

ERROR org.hibernate.tool.hbm2ddl.SchemaValidator could not complete schema validation 
org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class 'net.sourceforge.jtds.jdbc.Driver'

来自:

Caused by: java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)

当我构建jar而不运行测试时,它是构建的,但它缺少一些.class和.properties文件,所以这个jar没有按预期运行。

为了更简洁,我的jar中缺少应该来自/ test文件夹的编译文件。

可能是我的pom.xml中添加了一些错误的依赖项?

2 个答案:

答案 0 :(得分:1)

  

我得到了一个(...)java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver

您很可能错过了jTDS依赖项。你在pom.xml中声明了它吗?

<dependency>
  <groupId>net.sourceforge.jtds</groupId>
  <artifactId>jtds</artifactId>
  <version>1.2.4</version>
</dependency>

使用适合您的任何版本(也可能调整范围)。

  

为了更简洁,我的jar中缺少应该来自/ test folder

的编译文件

这不会发生,也不应该发生,测试源和资源不会被Maven包装在最终的jar中,这是一件好事。如果这些文件应该打包在最终的jar中,请将它们的源移动到源树(而不是测试树)。

答案 1 :(得分:0)

  

可能是我的pom.xml中添加了一些错误的依赖项?

可以。你肯定应该在那里声明一个JTDS依赖项,如果你还没有。

至于缺少的课程,您是否期望{J}中有net.sourceforge.jtds.jdbc.Driver?如果是这样,你就错了,这应该是你单独获得的JTDS JAR。

在任何情况下,您都可以将测试步骤排除在等式之外。从干净的目录开始,然后运行mvn compile。然后查看target/classes目录以查看在那里编译了哪些类。如果在此步骤中缺少类,则Maven不会找到它们。它们是否在src/main/java文件夹中(或target/generated-sources用于生成的类)?你的pom是否覆盖了编译阶段的默认模式匹配?

你还没有真正提供太多信息,所以我不能只说一步一步完成这个过程,看看每一步的结果。通常人们最初会关注错误的区域,并且只需要简单的注意力转移就可以找到回想起来的问题。