[英]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 下,否则,您可以使用带有excludeFilters
的ComponentScan
注释来排除 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.