我想在database
模块中的内存测试中重用pizza
模块的测试资源中的sql脚本,但我无法从中获取脚本classpath。
我的目录结构如下所示:
(为简洁起见,我离开了大部分文件/目录)
| pom.xml
|
|
+---database
| | pom.xml
| |
| \---src
| \---test
| \---resources
| \---db
| \---migration
| \---hsqldb
| V1__create_schema.sql
| V2__config_data.sql
| V3__user_data.sql
|
+---pizza
| | pom.xml
| |
| \---src
| +---main
| | +---java
| | | \---com
| | | \---example
| | | +---domain
| | | | DoStuff.java
| | |
| | \---resources
| | | applicationContext.xml
| |
| \---test
| +---java
| | \---com
| | \---example
| | DoStuffTest.java
| |
| \---resources
| insert-test-data.sql
| test-applicationContext.xml
| test-in-memory-database.xml
|
\---poms
| pom.xml
|
\---parent
pom.xml
现在,我想在pizza
模块中使用test-applicationContext从V1__create_schema.sql
模块中的database
脚本创建内存数据库,这样我就可以对它运行测试。我把它放到我的测试中 - applicationContext.xml
:
<jdbc:embedded-database id="dataSource" type="HSQL">
<jdbc:script location="classpath:V1__create_schema.sql"/>
<jdbc:script location="insert-test-data.sql"/>
</jdbc:embedded-database>
...但它在我的类路径上找不到V1__create_schema.sql
。我尝试了许多不同的方法,包括maven-remote-resources-plugin
,但没有运气。
我如何获取该资源?
......或者我可能使用了错误的方法?
编辑:非常感谢所有建议,我正在寻找的答案是来自Java1337的答案。但是,似乎这个问题已在SO上得到解答。我无法相信我错过了它!很抱歉给您带来不便!
答案 0 :(得分:6)
如果你想获得“test-resources”,你需要在database / pom.xml中生成一个“test-jar”,如下所示:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
然后在pizza / pom.xml中,引用测试jar如下:
<dependencies>
<dependency>
<groupId>groupId</groupId>
<artifactId>database</artifactId>
<type>test-jar</type>
<version>version</version>
<scope>test</scope>
</dependency>
</dependencies>
干杯!