当前位置: 首页 > 面试题库 >

在多模块Maven项目中的模块之间共享src / test类

逑何平
2023-03-14
问题内容

我有一个多模块的Maven项目。为了这个示例,请考虑两个模块:

  • data
  • consumer

模块consumer将模块data作为依赖项。

模块data声明了一堆核心类。有src/test使用它们的测试。这些测试需要创建一些冗长的对象,因此我有一个带有一些实用程序方法的类来创建这些对象。实用程序类(SampleDataHelper)在src/test层次结构中。

我在consumer模块中也进行了一些测试,这些测试需要创建一些冗长的对象。我想在我的树中的测试中使用我的SampleDataHelper类(在data src/test中定义)consumer src/test。不幸的是,即使data是的依赖项consumerconsumer也无法看到存在于下的类data src/test

为了解决这个问题,我想我可能会创造 另一个 模块(data-test),并移动SampleDataHelper下它 src/main
。然后,我将data-test作为的 测试范围 依赖项包括在内data。不幸的是,这引入了循环依赖:datauses data- test,而且data-testrequires data

我想出了唯一的解决办法是把SampleDataHelperdata src/main一个下test包,并希望没有真正的应用程序代码以往任何时候都调用它。

我如何SampleDataHelper在模块之间共享我的课程 而不 放在下面src/main


问题答案:

您的消费者项目取决于您的数据项目,因此我们很高兴必须在消费者之前构建数据。结果,使用[注释中](http://codingdict.com/questions/109626建议的技术,我将确保您的Data项目包含您希望共享的所有测试代码,并配置POM以生成测试JAR:

<plugin>
  <groupId>org.html" target="_blank">apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <version>2.2</version>
  <executions>
    <execution>
      <goals>
        <goal>test-jar</goal>
      </goals>
    </execution>
  </executions>
</plugin>

然后,您的Consumer项目将同时依赖于正常的Data JAR工件以及其他test-jar工件,当然还有测试范围:

<dependency>
  <groupId>com.foo</groupId>
  <artifactId>data</artifactId>
  <version>1.0</version>
  <type>test-jar</type>
  <scope>test</scope>
</dependency>

我已经在很多场合使用过这种方法,并且效果很好。



 类似资料:
  • 我有一个多模块Maven项目。在本例中,考虑两个模块: 模块具有模块作为依赖项。 为了解决这个问题,我想我可以创建另一个模块(),并将移到下。那么我将包含作为的测试范围依赖项。不幸的是,这引入了循环依赖关系:使用,但还需要。 我想出的唯一解决方案是将放在下,放在包下,希望真正的应用程序代码不会调用它。 如何在模块之间共享我的类,而不将其放在下?

  • 问题内容: 假设我有一个要注入到config中的模块: 有两个子模块: 这是第一个: 第二个是相同的,以简化示例: 您会注意到,您可以将它们作为提供者来访问以配置选项: 如果我们在控制器中,则可以覆盖每个范围,例如: 但是,如果他们总是共享相同的财产怎么办?如何在提供商之间共享某些东西? 我可以同时为和注入和配置共享属性吗? 如何同时访问和作为单个模块的扩展? 问题答案: 将模块插入两个共享这些属

  • 我有一个Maven项目,其中有一个parent-pom项目和3个maven-module项目。其中2个模块是编译成WAR文件的Java-EE web应用程序。其中1个模块包含公共JAVA代码,这些代码在其他2个项目之间共享。共享JAVA代码很容易。 我的问题是如何共享常见的静态资源,如JavaScript、CSS和图像文件,而不在每个web模块中重复它们?我还希望这样做:我可以继续从Eclipse

  • 我曾广泛使用过Maven 目前有5个不同的maven项目,每个项目都有一个不同的pom.xml。到目前为止,它们之间存在依赖关系,如果需要,每一个都指向 中的另一个。 现在我们不喜欢的是 当我们发布子projectA时,我们需要手动修改所有将projectA作为依赖项的项目以使用新版本。Saw Maven有一个版本插件,不知道这会有什么帮助。 作为解决方案,我希望在POM之间有一个更干净的组织,并

  • 我有以下Maven项目结构: i、 e.Project1、Project2和Project3在目录结构上是对等的,它们都是Spring Boot应用程序(JAR)。我想将Project2和Project3视为Project1的子项,而不改变目录结构。当我在父项目上执行相同的maven命令时,我需要在子项目上过渡地执行所有maven命令。而且最重要的是,我应该能够将它们打包到一个JAR文件中。我在谷

  • 我正在尝试弄清楚如何在单个IntelliJ项目中的两个模块之间共享包,但我似乎找不到正确的方法。我知道它可以在Eclipse中完成,但我不太精通它。简而言之,我正在尝试重现由AppEngine连接的Android项目创建的相同类型的项目环境。 这是我能说的最好的“问题” 项目A。 模块1;AppEngine GWT其他任何内容 模块2;Android 每个模块在项目的主目录中都有自己的源目录: /