我正在使用Maven 3.0.3,MySQL 5.5和Maven SQL插件(v 1.5)为我的JUnit测试创建一个测试数据库......
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.18</version>
</dependency>
</dependencies>
<!-- common configuration shared by all executions -->
<configuration>
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}/${test.mysql.db.sid}</url>
<username>${test.mysql.db.user}</username>
<password>${test.mysql.db.password}</password>
<!--all executions are ignored if -Dmaven.test.skip=true -->
<skip>${maven.test.skip}</skip>
</configuration>
<executions>
<execution>
<id>create-test-db</id>
<phase>compile</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<url>jdbc:mysql://${test.mysql.db.host}:${test.mysql.db.port}</url>
<username>${test.mysql.db.user}</username>
<password>${test.mysql.db.password}</password>
<autocommit>true</autocommit>
<sqlCommand>create database if not exists ${test.mysql.db.sid}</sqlCommand>
</configuration>
</execution>
</executions>
如果无法建立连接(因为用户尚未创建或具有错误的权限),我想显示一条更友好的错误消息,而不是在事情消失时默认打印出来的错误消息。有谁知道这是怎么做到的吗?除了Maven SQL插件之外,我还可以使用其他插件。
谢谢, - 戴夫
答案 0 :(得分:0)
由于错误消息特定于每个数据库(您将在Oracle上获得与MySQL不同的错误消息),并且每个数据库以不同的方式处理这些错误,因此可能不存在通用方法。 Spring框架将数据库错误封装到一个丰富的异常层次结构中,您可能需要查看它以了解它们如何以通用方式处理这些错误。
一个选项是扩展Maven SQL插件并在其中添加该功能。如果你可以跨数据库以通用的方式做到这一点,甚至更好,但我想如果你能让它只适用于MySQL,那对你来说已经有所帮助了。
您想提供更友好的错误消息的任何具体原因?