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

多模块Maven项目-在jar中包含测试bean

颛孙品
2023-03-14

如何在导入到另一个模块的jar中包括测试目录(src/test/)下的Spring bean?

我有几个Maven项目: ms1、ms2、ms3和通用共享。通用共享是一个多模块的Maven项目。它包含几个模块:通用共享utills、通用共享fs等...

在每个子模块中,我都有一个专用的pom。xml以及所需的所有依赖项,在通用共享pom中,我有关于构建和模块的详细信息:

  <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <modules>
        <module>general-shared-utills</module>
        <module>general-shared-fs</module>
    </modules>

似乎我为子模块中的测试(位于src/test中)创建的所有bean都没有导入到Maven模块(例如ms1)。

一个例子:

在子模块general shared utills中,我有以下课程:

在/src/main下:

@Component
public class Shop
    @Autowired
    private AWSService awsService

@Component
@Profile("prod")
public class AWSService 
...

/src/test:

@Component
@Profile("test")
public class AWSServiceMock extends AWSService 

在ms1的pom中导入general shared utills模块时,我希望它包括AWSServiceMock类。目前,ms1的测试找不到任何AWSService类型的bean,因为它没有一个带有测试概要文件的AWSService类型的bean:

 Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'a.x.y.aws.AWSService ' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

共有1个答案

魏彦
2023-03-14

我将相关bean(mock)从src/test目录移动到src/main。

我也在maven的网站上找到了这个解决方案。

如果有人有另一个实用的答案,我会很高兴听到并更新帖子的答案。

 类似资料:
  • 我有一个多模块maven项目,包含三个模块、和 Core具有以下依赖项定义 我已经为所有三个模块添加了Java9定义,的如下所示: 但是,我不知道如何让的测试类能够在测试执行期间看到类。当尝试测试运行时,找不到类。 如果向的添加需要My.Project.TestUtils;的: 然后在编译时,我得到一个错误,即找不到模块(大概是因为它只是作为测试依赖项引入的)。 在Java9模块化的世界中,如何处

  • 问题内容: 我有两个项目,并且属于该小组。取决于。 为了能够在不依赖外部服务的情况下开发应用程序的UI部分,在其中实现了虚拟DAO (它们返回静态数据,因此我们不必连接到数据库等)。 我们被要求将虚拟类移至。这意味着他们不会被部署到从Web项目构建的战争中。我在maven网站上找到了 这些说明 ,但它们似乎对我不起作用。 在中,我有: 在上运行时,在目标中,我会得到两个jar:和。它们都可以很好地

  • 我有一个Maven项目,包含几个模块,其结构类似于: 我已经在parent在

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

  • 问题内容: 我有一个多模块的Maven项目。父POM和单个模块的pom运行正常(因为每个模块中的代码运行正常,没有任何依赖关系问题,目标运行没有任何警告/错误)。现在,我需要为每个模块创建一个jar。 项目结构及其依赖关系大致如下 我遵循了这个 Maven多模块项目-将所有“包”JARS从子模块复制到父级/目标/ 而且,能够将我的所有子模块的jar放入一个文件夹,但是我无法运行任何jar,因为模块

  • 我们的项目结构如下: 相关的JUnit测试位于A-A中。在使用Maven之前,我们必须调整Eclipse中的运行配置(将arguments选项卡中的工作目录设置为A-B,启动应用程序),以便在没有错误的情况下启动所有测试。 现在,当我们尝试运行测试时,无论我们是否在Eclipse中运行测试,我们都会从a-a中的类中得到一个 我的猜测是我们有一个错误的配置的POM和Surefire不能找到所有的类文