springboot项目使用maven进行多模块打jar包,pom文件的设置(打包成功,依赖引入成功,maven下的libiaries也能看到自己的jar包,但就是在java文件中导入不成功)
在做多模块打包时候,思路是创建一个父类模块,将其他模块引入到父类模块中,这样只打包父类就可以实现多模块打包,另外,各个子模块之间也有相互依赖,首次打包,我将所有的子模块单个打包,但我发现第一个模块打包成功后的jar包,可以被其他模块依赖,但其他模块引入该模块后,再进行打包,却不能使用(import报错,java找不到符号),尝试多次,发现去掉被引用模块pom设置中的build,就可以了,我们在打包的时候,springboot会在打包过程中,扫描pom文件,当扫描到build时,会进行一次打包,因此在扫描到被引用模块的build时候会将被引用模块打包,在扫描到引用模块pom时,又发现了被引用模块,会对被引用模块进行再一次打包,包结构变成了包里面又包了一个包,所以其他模块根本引不到。
解决方法:被引用模块的build去掉
下面是这次的pom配置
- pom.xml 父类模块
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<modules>
<module>../mango-admin</module>
<module>../mango-common</module>
<module>../mango-core</module>
</modules>
- pom.xml 子模块
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.1</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.refresh</groupId>
<artifactId>mango-common</artifactId>
<version>1.0.0</version>
<name>mango-common</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
版权声明:本文为m0_50488756原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。