Maven应用与工程构建(二)

本文详细介绍SpringBoot应用的打包过程及多种运行方式,包括使用Maven命令打包、在Eclipse中配置Maven进行项目管理和运行,以及如何解决常见错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 打包应用程序并用java命令运行该程序
    输入以下命令进行打包
    mvn package
    打包后的jar包会在工程的target文件加中,运行如下类似命令会启动spring boot程序,
    java -jar target\maven-Spring-1.0.0SANPSHOT.jar
    【注意】:当使用mvn命令出现错误时,可使用-e参数查看错误原因,并修正,比如
    java -jar target\maven-Spring-1.0.0SANPSHOT.jar -e
    运行此命令时,出现"…jar中没有主清单属性"
    通过查资料发现,是该jar中META-INF文件夹的MANIFEST.MF文件缺少Main-Class属性
    通过添加“Main-Class: xxxxxx”后问题解决,其中冒号后必须要空一格,xxxxxx是要运行程序的相对路径,从src/main/java后开始的路径填完整,如:maven.demo.App

(4)、在Eclipse中使用Maven进行Spring Boot程序的使用
1、在Eclipse中配置Maven
较新的Eclipse JEE版已经具有maven插件m2e,可以配置Eclipse内嵌的maven,也可以配置成外部独立安装的maven插件
为防止连接国外maven中心服务器出现下载不全情况,需要修改settings.xml。内嵌的Maven并不具有settings.xml,需要自己建立一个,同样针对先前配置,添加aliyun的后OSChina的maven镜像服务器,提高Maven仓库的访问速度
通过菜单"Windows -> Preference" 打开配置窗口,并定位到"Maven -> User Settings",在右侧"User Settings"中指定已经包含国内Maven镜像的settings.xml文件即可,并update相关设定
2、Eclipse中更新POM依赖库

  • 添加SpringBoot DevTools 依赖
    Spring Boot 包括一组额外的工具,可以使应用程序开发体验更加愉快。 spring-boot-devtools 模块可以包含在任何项目中,它可以节省大量的时间。 DevTools主要包含两个主要功能,第一个功能在于当改变后端代码时,服务器会重启以便载入更新并编译后的相关类,并重启"restart"服务器;第二个功能在于当视图类资源文件如css、img等改变时会重载"reload"文件资源。
    想要使用devtools支持,只需将模块依赖关系添加到pom.xml中
<dependency>
 	<groupId>org.springframework.boot</groupId>
 	<artifactId>spring-boot-devtools</artifactId>
 	<optional>true</optional>
</dependency>
  • 注意:当添加Devtools工具后,程序运行后自动重启,会出现运行两遍的情况
    添加前,下面显示的为[     main]:
    在这里插入图片描述
    添加前,下面显示的为[ restartedmain],即为工具调用成功:
    在这里插入图片描述

想要更新了工程中的pom.xml文件时,需要对Maven依赖库进行手动更新,在目标工程上右键弹出
菜单,选"Mavne-> Update Projects…"
3、运行Spring Boot应用程序
Eclipse中有两种方法可以运行Spring Boot应用程序,第一种方法是使用Maven插件,第二种方法是使用Eclipse直接运行

  • 使用Maven插件运行应用程序
    定位目标工程,点击菜单"Run->Run As->Maven Build"会弹出运行配置窗口,在配置窗口中填上maven的插件和goal:“spring-boot:run”,点击确定即可运行,以后运行不必再行配置
    当出现如下信息,表示启动失败,请认真阅读控制台信息排除错误
 Description:
 
 The Tomcat connector configured to listen on port 8080 failed to start.

【注意】如果已经通过其它方法运行了程序,默认端口8080将被占用,会提示Tomcat服务器启动
失败,请先停止先前的应用:

打开cmd窗口 — 输入netstat -ano查看所有端口和PID — 找到对应的端口对应的PID,输入tasklist | findstr "11676"找到对应的进程(后面的数字不尽相同) — 输入taskkill /f /t /im java.exe关闭进程,空出端口 — 重新启动程序

  • 直接运行注解了"@SpringBootApplication"的主程序

由于Spring Boot已经对工程做了很好包装,包括内嵌了以后将会用到的Servlet容器Tomcat,只需
简单执行工程的主程序,即可启动Spirng Boot工程,定位目标工程,点击菜单"Run->Run As->JavaApplication"会弹出具备main入口函数的类,选择先前的主程序即可

思考题

1、当使用"Mvn Clean Package"命令进行项目打包,请问该命令执行了哪些动作来完成该任务?

  • 在这个命令中我们调用了maven的clean周期的clean阶段绑定的插任务,以及default周期的package阶段绑定的插件任务默认执行的任务有:
    maven-clean-plugin:clean->
    maven-resources-plugin:resources->
    maven-compile-plugin:compile->
    mavne-resources-plugin:testResources->
    maven-compile-plugin:testCompile->
    maven-jar-plugin:jar

2、如何使用mvn命令查询一个maven插件有哪些目标?比如查询spring-boot插件?
使用maven的help插件的describ目标查看:
mvn help:describe -Dplugin=<plugin_name> -Dgoal=<goal> -Ddetail
以compiler为例:
mvn help:describe -Dplugin=compiler -Dgoal=compile -Ddetail=true
可以查看到compiler插件中有哪些配置项可以配置

help插件可以认为是一个帮助文档。help本身也有一个文档。通过mvn help:help可以看到。
mvn help:help -Ddetail=true

Spring Boot Maven plugin的5个Goals

  • spring-boot:repackage,默认goal。在mvn package之后,再次打包可执行的jar/war,同时保留mvn package生成的jar/war为.origin
  • spring-boot:run,运行Spring Boot应用
  • spring-boot:start,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
  • spring-boot:stop,在mvn integration-test阶段,进行Spring Boot应用生命周期的管理
  • spring-boot:build-info,生成Actuator使用的构建信息文件build-info.properties
    3、可以用mvn命令关闭Spring Boot应用程序吗,该如何做?
    不行,Spring Boot应用关闭的前提条件是POM.xml添加以下内容:
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

application.properties中添加:

#启用shutdown
endpoints.shutdown.enabled=true
#禁用密码验证
endpoints.shutdown.sensitive=false

关闭命令为:

curl -X POST host:port/shutdown
 
 
# Demo
 
$ curl -X POST http://localhost:8080/shutdown
{"message":"Shutting down, bye..."}
 
 
$ curl -X POST http://localhost:8080/manage/shutdown
{"message":"Shutting down, bye..."}

如果要配置路径,需要在application.properties中添加management.context-path=/manage,则关闭命令变为curl -X POST host:port/manage/shutdown
或使用ctrl+c快捷键后y结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值