在JavaMaven中正确导入其他模块
我有一个maven项目,有两个模块。它们都有自己的spring应用程序、控制器和mybatis接口,如下所示:在JavaMaven中正确导入其他模块,java,spring,maven,Java,Spring,Maven,我有一个maven项目,有两个模块。它们都有自己的spring应用程序、控制器和mybatis接口,如下所示: project |_ module1 |_ src |_ com.project.module1 |_ Person.java |_ Controller.java |_ Application.java |_ MybatisMapper.java |_ pom.xml //
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>
当我启动模块2的应用程序时,出现错误:
com.project.module2中构造函数的参数1需要找不到类型为“com.project.module1.MybatisMapper”的bean
module2似乎导入了module1的所有组件,可能包括控制器?,但由于我指定了@mappercancom.project.module2,因此未能正确找到module1的映射器。
如何在module2中仅导入Person.java?提前感谢。如果要使用module1中的所有类,请尝试将module2中的应用程序类放在基本父包下,否则,可以使用ComponentScan注释和excludeFilters排除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之间的公共类,并在这两个模块中导入 实际上,模块1和模块2在某种程度上是独立的。我只想重用Person.java,所以您可能需要将它移动到一个单独的模块,并在两个模块中使用,或者更改包并使用带有过滤器的组件扫描注释