当前位置: 首页 > 知识库问答 >
问题:

Maven建议不要使用测试jar,但我最终会得到一个循环依赖

郑安晏
2023-03-14

我有两个模块,结构如下

  • 解放党
  • MyMockObject实现MyInterface
  • MyTest1-使用MyMockObject
  • src/test/java
    • MyTest2-使用MyMockObject

    目前这还不错,因为我的主模块将添加一个对lib的test jar模块的依赖,但是如图所示https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html建议创建一个测试模块并公开它,而不是使用测试jar。

    然而,在我的例子中,这将导致循环依赖,如下所示:

      测试依赖库
      • src/main/java
        • MyMockObject实现MyInterface
        • src/main/java
          • 我的界面
          • MyTest1使用MyMockObject
          • src/test/java
            • MyTest2-使用MyMockObject

            在这种情况下,我如何为maven保持一个有组织的结构?

共有1个答案

郑博
2023-03-14

Mavens重新编译不使用测试jar依赖项的原因是

这种解决方案的缺点是,您不会自动获得可传递的测试范围依赖项。Maven只解析编译时依赖项,因此您必须手动添加所有其他必需的测试范围依赖项。

来源

因此,如果这不是问题,只需使用测试jar依赖项。您还可以只将那些真正想要共享的测试类和资源打包到测试jar中:

            <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>test-jar</goal>
                    </goals>
                    <configuration>
                        <includes>
                        <!-- include only test resources from that package-->                               <include>**/com/prefabwarek/web/ui/page/include/*</include>
                        </includes>
                    </configuration>
                </execution>
            </executions>
        </plugin>
 类似资料:
  • java.lang.IllegalStateException:未能加载ApplicationContext 原因:org . spring framework . beans . factory . unsatisfieddependencyexception:创建在URL[jar:file:/C:/Users/MDI vya/. m2/repository/io/spring fox/spri

  • 问题内容: 我有一个模块化的maven项目,其中两个模块“ BIZ”和“ EJB”包含如下内容: 如您所见, “ EJB”依赖于“ BIZ”, 因为它使用 MyClassX (实际上,它使用了BIZ的几种类别)。这就是 ImplFactory 使用反射实例化 InterfaceImpl 的原因。问题是 cl.newInstance() 将抛出 ClassCastException, 因为这两个模块

  • hasNext()的定义是“如果此扫描仪的输入中有另一个标记,则返回true。此方法可能会在等待输入扫描时阻塞。扫描仪不会前进超过任何输入。” 当我把 standardInput.hasNext() 放在 for 循环中时,程序会向无穷大运行。但是如果我把它放在 while-loop 中,它不会运行到无穷大。这两个程序之间的区别在哪里,为什么其中一个有效而另一个无效? for循环: while-l

  • 我们面临着与这里所述相同的问题:使用src/test/meta-inf/beans.xml中的替代生产者进行焊接。

  • 我使用maven在eclipse上开发了spring boot selenium web驱动程序项目。我在中运行测试,并将所有元素、页面和配置放入。 现在我想创建可执行jar。怎么做?可能吗?我想让它从cmd运行,比如 到目前为止,我尝试使用mvn clean安装,mvn clean包来生成。jar文件。但当我试图运行它时,它不起作用。它在中运行main。我想在 这是我的测试类: 这是我在 当我运

  • 我想用jQuery DataTable进行多列筛选,但我得到一个错误,不知道如何解决。 错误:$(...)DataTable不是函数类型错误:$(...)。DataTable不是函数未捕获的类型错误:无法读取未定义的属性“column” 你能帮我解决这个错误吗? 我的HTML代码,