多层级 Maven 工程互相依赖,打包时找不到本地依赖、找不到符号的解决方案

本贴最后更新于 1428 天前,其中的信息可能已经时移世易

场景

设有 A、B 两个 module,B 依赖于 A,项目结构大致如下:

image.png

问题分类

打包 B 时无法找到 A 的 jar 包

  • 原因:maven 仓库中没有 A 的 jar 包。
  • 解决方法:在 maven 管理页面中,运行 mavn 的 install 命令,将工程下所有模块都加入到 maven 仓库。

image.png

  • 踩坑点:可能你会觉得,B 依赖于 A,只需要保证 maven 仓库里有 A 的 jar 包,只 install 模块 A 不就行了,完全没必要 install 整个父工程。对于单 module 工程来说,这样没错。但是本例是一个多层级的 maven 工程。B 依赖于 A, B、A 都依赖于父工程。因为所以,B 在依赖于 A 时,同样的也依赖了父工程。如果只 install A 模块,打包 B 模块时则会爆出找不到父工程 jar 包的错误。

已经 install 所有相关模块,打包 B 时报错找不到 A 模块中的类

  • 原因:打包模块 A 时需要添加 maven-plugin 脚本
  • 解决方案:在模块 A 的 pom.xml 中加入以下内容:
  <project>
    <!-- 其他内容 -->
    .......
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <classifier>exec</classifier>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    186 引用 • 318 回帖 • 302 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...