mvn 多模块项目通过命令mvn spring-boot:run 提示打包找不到其他模块包,报错如以下:
-----------------------------------------------------------------------
[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包而报错,无法编译。
解决办法
- 在bobospringboot目录下面执行 mvn install
2.然后进入bobo-service目录执行mvn spring-boot:runG:\boboJavaProjects\boboJavaBlog\bobospringboot>mvn install
G:\boboJavaProjects\boboJavaBlog\bobospringboot\bobo-service>mvn spring-boot:run
拓展
spring-boot-maven-plugin不能放在父pom里面,需要放到子模块的pom里面,参考文章:https://my.oschina.net/tridays/blog/825245
出现找不到mainClass的情况,错误如下:
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
le main class, please add a 'mainClass' property
解决办法
加入代码<mainClass>com.bowen.service.BoboServiceApplication</mainClass>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration><mainClass>com.bowen.service.BoboServiceApplication</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>