springboot项目使用maven进行多模块打jar包,pom文件的设置

springboot项目使用maven进行多模块打jar包,pom文件的设置(打包成功,依赖引入成功,maven下的libiaries也能看到自己的jar包,但就是在java文件中导入不成功)

在做多模块打包时候,思路是创建一个父类模块,将其他模块引入到父类模块中,这样只打包父类就可以实现多模块打包,另外,各个子模块之间也有相互依赖,首次打包,我将所有的子模块单个打包,但我发现第一个模块打包成功后的jar包,可以被其他模块依赖,但其他模块引入该模块后,再进行打包,却不能使用(import报错,java找不到符号),尝试多次,发现去掉被引用模块pom设置中的build,就可以了,我们在打包的时候,springboot会在打包过程中,扫描pom文件,当扫描到build时,会进行一次打包,因此在扫描到被引用模块的build时候会将被引用模块打包,在扫描到引用模块pom时,又发现了被引用模块,会对被引用模块进行再一次打包,包结构变成了包里面又包了一个包,所以其他模块根本引不到。

解决方法:被引用模块的build去掉

下面是这次的pom配置

  1. 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>
  1. 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版权协议,转载请附上原文出处链接和本声明。