文章目录
- 1.打开终端,进入项目路径
- 2.启动springboot项目
- 3.启动失败
-
- 第一步:先理解这三个名称的区别
- [第二步:找到真正的 Maven 模块名](#第二步:找到真正的 Maven 模块名)
- [第三步:启动 Spring Boot](#第三步:启动 Spring Boot)
- 第四步:别忘了之前设置的环境变量
Mac 上开发 Spring Boot + Maven 项目,怎么在终端中启动springboot项目?
1.打开终端,进入项目路径
powershell
cd ~/devcodesNew/internet-cafe-billing-system
2.启动springboot项目
如果你的 Spring Boot 启动类位于 Maven 子模块 server 中,可以在项目根目录执行:
powershell
./mvnw -pl server spring-boot:run
如果项目没有 Maven Wrapper(即没有 mvnw 文件),可以使用已安装的 Maven:
powershell
mvn -pl server spring-boot:run
这里的 server 是模块名示例。如果你的模块名称不同,需要替换成实际的模块名。
3.启动失败
powershell
lishuang@lishuangs-MacBook-Pro \~ % mvn -pl CafeServerApplication spring-boot:run
[**INFO**] Scanning for projects...
[**ERROR**] [ERROR] Could not find the selected project in the reactor: CafeServerApplication @
[**ERROR**] Could not find the selected project in the reactor: CafeServerApplication -> **[Help 1]**
[**ERROR**]
[**ERROR**] To see the full stack trace of the errors, re-run Maven with the **-e** switch.
[**ERROR**] Re-run Maven using the **-X** switch to enable full debug logging.
[**ERROR**]
[**ERROR**] For more information about the errors and possible solutions, please read the following articles:
[**ERROR**] **[Help 1]** [http://cwiki.apache.org/confluence/display/MAVEN/MavenExecutionException](http://cwiki.apache.org/confluence/display/MAVEN/MavenExecutionException)
这个报错的原因是:你把 Spring Boot 启动类的名称 CafeServerApplication 当成了 Maven 模块名。
Maven 的 -pl 参数用于指定项目中的模块(Project List),不是指定 Java 启动类。名字放错位置了,Maven 就找不到它要构建的项目。
第一步:先理解这三个名称的区别
| 名称 | 作用 | 示例 |
|---|---|---|
| Maven 模块名 | 指定要运行哪个子项目 | server 或 cafe-server |
| Spring Boot 启动类 | Java 程序的入口 | CafeServerApplication |
| Maven 命令 | 启动指定模块 | mvn -pl 模块名 spring-boot:run |
第二步:找到真正的 Maven 模块名
你现在的终端显示:
lishuang@lishuangs-MacBook-Pro ~ %
其中 ~ 表示你当前位于用户主目录,还没有进入项目目录。
先进入你的项目根目录。假设项目仍然在之前使用的路径:
cd ~/devcodesNew/internet-cafe-billing-system
然后执行:
mvn -q -N help:evaluate -Dexpression=project.artifactId -DforceStdout
这条命令会查看当前根项目的 artifactId,但它不一定就是你要启动的子模块名。
接下来执行:
grep -n '<module>' pom.xml
它会列出根 pom.xml 中声明的子模块,例如:
<module>cafe-server</module>
<module>cafe-common</module>
这里的 cafe-server 才是可以传给 -pl 的模块路径示例。
第三步:启动 Spring Boot
假设查到模块名是 cafe-server,执行:
mvn -pl cafe-server spring-boot:run
如果该模块依赖同一个多模块项目里的其他模块,可以尝试:
mvn -pl cafe-server -am spring-boot:run
-am 表示同时构建所选模块依赖的其他项目。
注意:以上 cafe-server 只是示例,请使用你实际查到的模块名。
第四步:别忘了之前设置的环境变量
如果你之前已经在当前终端执行了:
export DB_URL='jdbc:mysql://localhost:3306/cafe'
export DB_USERNAME='你的MySQL用户名'
export DB_PASSWORD='你的MySQL密码'
那么继续在这个终端中执行启动命令即可,不需要重新设置。
你现在先执行下面两条命令,把输出贴给我:
cd ~/devcodesNew/internet-cafe-billing-system
grep -n '<module>' pom.xml
我就能根据你项目里实际声明的模块名,告诉你下一条准确的启动命令,不用再猜名字。