【发布时间】:2014-09-12 18:55:39
【问题描述】:
我有一个多模块项目,如下图:
Module
|_________sub-module1
| |___pom.xml
|_________sub-module2
| |___pom.xml
|_________sub-module3
| |___pom.xml
|_________sub-module4
| |___pom.xml
|_________pom.xml
我在子模块 2 中添加了一些用于创建和删除集成测试数据的 sql 脚本。在父 pom 中,我有以下代码来设置数据库以进行集成测试。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<dependencies>
<dependency>
<groupId>net.sourceforge.jtds</groupId>
<artifactId>jtds</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
<configuration>
<driver>net.sourceforge.jtds.jdbc.Driver</driver>
<url>jdbc:jtds:sqlserver:blah</url>
<settingsKey>sqlsrv-integration-test-creds</settingsKey>
<skip>false</skip>
</configuration>
<executions>
<execution>
<id>create-integration-test-data</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<orderFile>ascending</orderFile>
<fileset>
<basedir>${basedir}/src/test/resources</basedir>
<includes>
<include>create-integration-test-data.sql</include>
</includes>
</fileset>
</configuration>
</execution>
<execution>
<id>drop-db-after-test</id>
<phase>post-integration-test</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<fileset>
<basedir>${basedir}/src/test/resources</basedir>
<includes>
<include>drop-integration-test-data.sql</include>
</includes>
</fileset>
</configuration>
</execution>
</executions>
</plugin>
现在,当我运行 mvn clean install 时,我收到错误消息,即 sub-module1 中不存在该文件。所以我尝试将脚本添加到 sub-module1。现在,它在 sub-module1、sub-module2 和 sub-module3 中执行,由于脚本是子模块3中没有。
如何让脚本只执行一次?
【问题讨论】:
-
将 sql-maven-plugin 添加到您需要它的确切位置(子模块 2)而不是父级中,因为它将被继承,当然会在每个子级中执行。跨度>