繁体   English   中英

在 java-maven 中正确导入其他模块

[英]Import other module properly in java-maven

我有一个带有两个模块的 maven 项目。 两者都有自己的spring应用,controller和mybatis接口如下:

project
 |_ module1
    |_ src
       |_ com.project.module1
          |_ Person.java
          |_ Controller.java
          |_ Application.java
          |_ MybatisMapper.java
    |_ pom.xml // pom of module1
 |_ module2
    |_ src
       |_ com.project.module2
          |_ Student.java // import Person.java
          |_ Controller.java
          |_ Application.java
          |_ MybatisMapper.java
    |_ pom.xml // pom of module2
|_ pom.xml // pom of project

由于module2依赖于module1,所以我在module2的pom.xml中添加依赖为:

<dependency>
    <groupId>com.project</groupId>
    <artifactId>module1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <scope>compile</scope>
</dependency>

当我启动 module2 的应用程序时,出现错误:

com.project.module2 中构造函数的参数 1 需要一个无法找到的 'com.project.module1.MybatisMapper' 类型的 bean。

似乎 module2 导入了 module1 的所有组件(可能包括 controller?),并且由于我指定@MapperScan("com.project.module2") ,所以无法正确找到 module1 的映射器。 如何在 module2 中只导入Person.java 提前致谢。

如果要使用 module1 中的所有类,请尝试将 module2 中的Application class 放在基父 package 下,否则,您可以使用带有excludeFiltersComponentScan注释来排除 module1 中不需要的类:

package com.project;


@SpringBootApplication
@ComponentScan(basePackages = "com.project",
        excludeFilters = {
                @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com\\.project\\.module1\\.Controller\\..*"),
                @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com\\.project\\.module1\\.MybatisMapper\\..*")
        })
public class Application  {


    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

另一种选择是让第三个模块只包含模块 1 和 2 之间的公共类,并在两个模块中导入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM