Maven未引入内嵌依赖:如何无需修改A的pom.xml加载B的依赖?
问题根源
你遇到的NoClassDefFoundError是因为项目A里的maven-install-plugin安装的是lib目录下的b-1.0.0.jar,且通过generatePom=true生成的是一个空的默认POM,完全没包含项目B自身依赖jsoup的配置。Maven根本不知道项目B需要jsoup,自然不会把jsoup引入项目A的运行环境。
解决步骤(不用改项目A的POM)
直接把项目B正确安装到本地Maven仓库即可,步骤如下:
- 切换到项目B的根目录(即它自身
pom.xml所在的文件夹) - 执行Maven命令完成安装:
mvn clean install
这个命令会把项目B的jar包和带有jsoup依赖的真实POM文件一起存入本地Maven仓库(默认路径为~/.m2/repository)。
- 之后再运行项目A:
mvn clean spring-boot:run
此时Maven会自动通过项目B的POM识别到jsoup的依赖,将其加入项目A的classpath,NoClassDefFoundError错误即可解决。
可选清理操作
如果之前已经通过项目A的插件安装过旧版本的项目B包,建议先删除本地仓库里的旧文件:
删除~/.m2/repository/com/myproject/b/1.0.0整个目录,再重新执行项目B的mvn install,避免缓存干扰。
内容的提问来源于stack exchange,提问作者Rurien
相关产品推荐
相关产品推荐

