mvn 多模块项目通过命令mvn spring-boot:run 提示打包找不到其他模块包,报错如以下:

  1. -----------------------------------------------------------------------
  2. [ERROR] Failed to execute goal on project bobo-service: Could not resolve dependencies for project com.bowen:bobo-service:jar:1.0.0: The following artifacts could not be resolved: com.bowen:bobo-dao:jar:1.0.0, com.bowen:bobo-common:jar:1.0.0: Could not find artifact com.bowen:bobo-dao:jar:1.0.0 in nexus-aliyun (http://maven.aliyun.com/nexus/content/groups/public/) -> [Help 1]

多模块的结构

  • bobospringboot (父工程)
    • bobo-api
    • bobo-common
    • bobo-dao
    • bobo-service (运行的api项目)
    • bobo-service-api

如图:

原因

由报错可以看出来,主要是maven把我自己定义的模块当成远端的jar包,然后去阿里云的仓库下载jar包,但是这个com.bowen:bobo-dao:jar只是我本地的一个模块,当然阿里云仓库无法找到了,这样的话无法编译成功。
这样的话,最终原因了解了,找不到包,因为包没有发布阿里云,但这个包是我私有的本地包,不需要发布,那么我们需要项目里执行 mvn install 将其发布到本地仓库,否则bobo-service项目将会因为无法找到bobo-dao包而报错,无法编译。

解决办法

  1. 在bobospringboot目录下面执行 mvn install
    1. G:\boboJavaProjects\boboJavaBlog\bobospringboot>mvn install
    2.然后进入bobo-service目录执行mvn spring-boot:run
    1. G:\boboJavaProjects\boboJavaBlog\bobospringboot\bobo-service>mvn spring-boot:run

拓展

  1. spring-boot-maven-plugin不能放在父pom里面,需要放到子模块的pom里面,参考文章:https://my.oschina.net/tridays/blog/825245

  2. 出现找不到mainClass的情况,错误如下:

    1. Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:2.1.9.RELEASE:run (default-cli) on project bobospringboot: Unable to find a suitab
    2. le main class, please add a 'mainClass' property

    解决办法
    加入代码<mainClass>com.bowen.service.BoboServiceApplication</mainClass>

    1. <plugins>
    2. <plugin>
    3. <groupId>org.springframework.boot</groupId>
    4. <artifactId>spring-boot-maven-plugin</artifactId>
    5. <configuration><mainClass>com.bowen.service.BoboServiceApplication</mainClass>
    6. </configuration>
    7. </plugin>
    8. <plugin>
    9. <groupId>org.apache.maven.plugins</groupId>
    10. <artifactId>maven-compiler-plugin</artifactId>
    11. <configuration>
    12. <source>11</source>
    13. <target>11</target>
    14. </configuration>
    15. </plugin>
    16. </plugins>