2013-05-03 79 views
0

我想并填写两个不同的数据库与Maven项目集成测试。我用的是sql-maven-plugin,但我不能让它处理不同的数据库(我只能有一个插件声明的sql-maven-pluginconfiguration是其executions之间共享)。sql-maven-plugin:清理多个数据库?

你们如何解决?有没有解决这个问题的解决方法?

在此先感谢!

回答

3

你可以简单地定义所有configuration的每一个人execution部分中,并根据需要配置。而不是共享配置。

所以这里有一个例子来连接两个不同的HSQLDB数据库:

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>sql-maven-plugin</artifactId> 
    <version>1.5</version> 

    <dependencies> 
     <dependency> 
     <groupId>org.hsqldb</groupId> 
     <artifactId>hsqldb</artifactId> 
     <version>2.2.9</version> 
     </dependency> 
     <!-- you could add dependencies to other database drivers here --> 
    </dependencies> 

    <executions> 
     <!-- execution against database 1 --> 
     <execution> 
     <id>database1</id> 
     <phase>process-test-resources</phase> 
     <goals> 
      <goal>execute</goal> 
     </goals> 
     <!-- specific configuration for execution against database1 --> 
     <configuration> 
      <driver>org.hsqldb.jdbcDriver</driver> 
      <url>jdbc:hsqldb:hsql://localhost:9999/database1</url> 
      <username>sa</username> 
      <password></password> 
      <sqlCommand>select count(TYPE_NAME) from INFORMATION_SCHEMA.SYSTEM_TABLES</sqlCommand> 
     </configuration> 
     </execution> 
     <!-- execution against database 2 --> 
     <execution> 
     <id>database2</id> 
     <phase>process-test-resources</phase> 
     <goals> 
      <goal>execute</goal> 
     </goals> 
     <!-- specific configuration for execution against database2 --> 
     <configuration> 
      <driver>org.hsqldb.jdbcDriver</driver> 
      <url>jdbc:hsqldb:hsql://localhost:8888/database2</url> 
      <username>sa</username> 
      <password></password> 
      <sqlCommand>select count(TYPE_NAME) from INFORMATION_SCHEMA.SYSTEM_TABLES</sqlCommand> 
     </configuration> 
     </execution> 
    </executions> 
    </plugin> 
+0

我尝试这样的事情,却引起了我,我没有看到任何的sql-Maven的插件执行的,奇怪的。可能我犯了一些错误(尽管我也有一个外层配置)。要检查它,谢谢! – rlegendi 2013-05-03 11:31:47

+0

你需要确保你给每个执行部分的唯一'id'标签,否则我认为他们可能互相覆盖。我使用了本地给出的例子,它没有任何问题。 – DB5 2013-05-03 11:33:56

+0

是的,他们的ID是不同的,让我检查一下我是否可以应用这个解决方案。 – rlegendi 2013-05-03 11:36:40