Maven SQL-Plugin在多模块项目中运行多次

时间:2014-07-22 04:52:37

标签: java maven

我有一个多模块项目,如下所示:

            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时,我收到错误,该文件在子模块1 中不存在。所以我尝试将脚本添加到子模块1。现在,它已在子模块1 中执行,但也在子模块2 子模块3 中执行,因为脚本是不在子模块3中。

如何让脚本只执行一次?

1 个答案:

答案 0 :(得分:1)

在评论中回答:

  

将sql-maven-plugin准确添加到您需要的位置(子模块-2)和   不在父母,因为它将被继承,当然会   在每个孩子中执行。 - khmarbaise 7月22日和14日9:25

相关问题