Pie*_*nry 10 dependencies unit-testing maven multi-module
我有一个多模块Maven + Spring项目.一些模块依赖于其他模块.
假设我们有一个名为services依赖于命名模块的模块persistence.
服务模块:
persistence上下文persistence模块该persistence模块定义了一些与...持久性相关的配置:数据源,JPA,事务......
它有一些依赖性来测试限于测试范围的DB(JDBC驱动程序,DBCP,H2),因为在部署应用程序时,DataSource将在容器(Tomcat)中定义并通过JNDI访问.
现在,我想在services模块的Maven测试阶段访问模块的测试范围(传递)依赖关系persistence.
所述的Maven手册(表3.1)说,通常,测试范围依赖是不可传递地.
是否有可能在多模块项目的背景下以某种方式获取它们?
如果没有什么是好的选择?(在父pom中定义测试依赖项?...)
Pie*_*nry 23
我确切地知道它应该如何工作,即在模块中生成测试JAR,这是一种工件,在另一个模块中用作依赖,在我们的例子中是持久性模块:
<build>
<plugins>
<!-- Generate test jar too -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Run Code Online (Sandbox Code Playgroud)
然后通过将此测试jar声明为另一个模块的测试范围依赖项,在我们的示例中为services模块:
<!-- Services module -->
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>services</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>services</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)
注意第二个依赖项与第一个相同,除了type设置为test-jar和scope设置为test 的那个.
现在,你可以想像的是,写在测试中的service模块将有机会获得的测试类persistence模块(这工作),而且在测试范围的维持模块的依赖关系.
但是,它是一个已知的问题(https://issues.apache.org/jira/browse/MNG-1378),它不会那样工作.它自2005年开放以来,所以我不认为它在不久的将来会被修复......但谁知道呢.
我只需要在两个模块上复制测试范围的依赖项,或者只在父pom中定义它们...
| 归档时间: |
|
| 查看次数: |
9116 次 |
| 最近记录: |