多模块项目的模块是否可以使用另一个的存储库文件夹?

Is it possible for a module of a multi module project to use the repository folder of another?

我正在按照教程学习 maven 中的多模块,但是所呈现的内容引发了一个问题:

是否有可能创建一个多模块项目,其中只有一个模块访问数据库,而其他模块为各自的控制器使用此连接?

基本上我想要的是使用相同的存储库文件夹来扫描所有模块中的每个数据源配置。

我想象并开始实现的结构是:

|--main
|  |--moduleOne
|  |--|--Java
|  |-----|-DataSource
|  |-----|-models
|  |-----|-repositories
|  |--|--Resources
|  |-----|-application.properties
|  |--moduleN
|  |--|--Java
|  |-----|-controller
|  |-----|-service
|  |--|--Resources
|  |-----|-application.properties

第一个模块 运行 完美,另一个需要一个连接,我做到了,但是当我 运行,这个模块使用 h2 数据库或不连接,因为 moduleOne 正在使用存储库文件夹。 我该如何解决该服务访问这些存储库的问题?

POM 模块一

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>com.example</groupId>
        <artifactId>sig</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../</relativePath> <!-- lookup parent from repository -->
    </parent>

    <artifactId>moduleOne</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>moduleOne</name>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <!-- SQL DEPENDENCIES -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>

    <build>
        <finalName>moduleOne</finalName>
    </build>
</project>

POM 模块 N

<project>
    <modelVersion>4.0.0</modelVersion>
    <parent>
    <groupId>com.example</groupId>
        <artifactId>sig</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <relativePath>../</relativePath> <!-- lookup parent from repository -->
    </parent>

    <artifactId>moduleN</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>moduleN</name>

    <properties>
        <java.version>11</java.version>
    </properties>

    <dependencies>
        <!-- MODULE ON WHICH IT DEPENDS -->
        <dependency>
            <groupId>com.example.sig</groupId>
            <artifactId>moduleOne</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>moduleN</finalName>
    </build>
</project>

"The bean 'RepositoryX', defined in br.example.sig.moduleone.repositories.RepositoryX defined in EnableJpaRepositories declared on ServiceX, could not be registered. A bean with that name has already been defined in br.example.sig.moduleone.repositories.RepositoryX defined in EnableJpaRepositories declared on DatasourceConfig and overriding is disabled.

Consider renaming one of the beans or enabling overriding by setting spring.main.allow-bean-definition-overriding=true"

我有一个带有注释“@EntityScan”和“@EnableJpaRepositories”的服务指向与我的模块之一中的数据源相同的目录,我把它放在那里然后忘记了。 我删除了注释,这是产生冲突的原因,而不是对不同模块的使用。