You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven多模块项目依赖缺失问题:无法引用common包

Maven多模块项目构建问题解决方案

问题核心原因

  1. 版本不一致:父POM版本为0.0.1-SNAPSHOT,但子模块(common、image-gen、module2)手动指定1.0-SNAPSHOT,导致依赖引用版本不匹配
  2. common模块POM配置缺失:未正确继承父POM,也未指定打包方式,无法生成可被依赖的JAR包
  3. Spring Boot插件配置错误:父POM为pom打包类型,无需配置spring-boot-maven-plugin,该插件应仅在需要生成可执行JAR的业务模块中配置
  4. 子模块重复配置编译版本:父POM已指定java.version=17,子模块无需重复定义maven.compiler.source/target

具体修复步骤

1. 修正父POM(pom.xml)

移除父POM中的spring-boot-maven-plugin,改用pluginManagement统一管理插件版本:

<?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>3.3.1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>testapp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>pom</packaging>
    <modules>
        <module>common</module>
        <module>image-gen</module>
        <module>module2</module>
    </modules>
    <name>testapp</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>3.3.1</version>
                    <configuration>
                        <excludes>
                            <exclude>
                                <groupId>org.projectlombok</groupId>
                                <artifactId>lombok</artifactId>
                            </exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
</project>

2. 修正common模块POM(common/pom.xml)

添加父POM继承,指定打包方式为jar:

<?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 http://www.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>testapp</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>common</artifactId>
    <packaging>jar</packaging>

    <name>common</name>
    <description>Common utilities and entities</description>
</project>

3. 修正image-gen和module2模块POM

移除手动指定的版本和编译配置,启用Spring Boot插件生成可执行JAR:

<?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 http://www.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.example</groupId>
        <artifactId>testapp</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <artifactId>image-gen</artifactId> <!-- 或module2 -->
    <packaging>jar</packaging>

    <dependencies>
        <dependency>
            <groupId>com.example</groupId>
            <artifactId>common</artifactId>
            <version>${project.version}</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

4. 验证包结构

确保common模块代码路径与引用一致:

  • common模块代码路径:src/main/java/com/example/common/entity/
  • image-gen引用路径:import com.example.common.entity.XXX;

验证构建命令

  1. 构建所有模块:
./mvnw clean package
  1. 单独构建image-gen模块(自动构建依赖的common模块):
./mvnw clean package -pl image-gen -am

内容的提问来源于stack exchange,提问作者Muneer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:40:10