当前位置:   article > 正文

springboot工程打包打包与运行_springboot打包命令

springboot打包命令

程序为什么要打包

编辑

程序打包与运行(Windows版)

  • 对SpringBoot项目打包(执行Maven构建指令package)。

打包好后,会在target中看到打包好的jar包。右击点击open in -- > Explorer打开jar包路径,在地址路径输入cmd进行执行启动指令。
  • 运行项目(执行启动指令)。

java –jar jar包名称
  • 注意:jar支持命令行启动需要依赖maven插件,确认打包是有SpringBoot对应的maven插件。


<code class="language-plaintext hljs"><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></code>
  • 总结:

SpringBoot工程可以基于java环境下独立运行jar文件启动服务。

SpringBoot项目快速启动(Linux版)

项目上传到linux系统运行

1.上传项目的jar包到linux系统中(usr的local目录下创建一个项目)。
2. 执行jar命令:java –jar 工程名.jar,
后台启动:nohup java -jar 项目jar包 > server.log 2>&1 &
3. 服务器断开:①查询对应的pid 命令:ps ef|grep 'java -jar'
②结束进程 命令:kill -9 pid

前提条件

1. 基于Linux(CenterOS7)。
2. 安装JDK,且版本不低于打包时使用的JDK版本。
3. 安装mysql数据库。
在linux系统安装jdk
  • 在usr下的local目录, 创建一个目录jdk,下载linux版本jdk,把jdk拖进去。

  • 安装java环境。

①检测当前系统是否存在java环境 命令:java -version,
如果有的话就需要卸载,检测jdk版本 命令:rpm -qa|grep jdk,
卸载 命令: rpm -e --nodeps 版本。
②安装jdk 命令:rpm -ivk rpm包。
  • 配置环境变量。

①所有的环境配置都在cd / etc/profile。
③命令:vim /etc/profile进入这个文件后面进行编辑环境配置,跟windows大致。
JAVA_HOME=/usr/java/jdk...名称
:CLASSPATH=%JAVA_HOME%/lib
PATH=$JAVA_HOME/bin
export PATH CLASSPATH JAVA_HOME
④让配置文件生效 命令:source /etc/profile
  • 开启防火墙端口。

①查看防火墙 命令:firewall-cmd --list-ports
②开启某个防火墙端口 命令:firewall-cmd --zone=public --add-port=80/tcp --permanent
③重启防火墙 命令:systemctl restart firewalld.serive

安装mysql数据库(rpm方式)
  • 在usr下的local目录, 创建一个目录mysql,下载linux版本mysql,把mysql拖进虚拟机去。

  • 解压mysql 命令:tar -xvf mysql....版本。

  • 检查CenterOS7里面可能有mariadb库,需要卸载,因为跟mysql有冲突。

①查询mariadb 命令:rpm -qa|grep mariadb
②卸载 命令:rpm -e --nodeps mariadb-libs
  • 依次安装所需要的mysql的rpm。

①rpm -ivh mysql-community-common......
②rpm -ivh mysql-community-client-plugins-......
③rpm -ivh mysql-community-libs-.....
④rpm -ivh mysql-community-client-.........
⑤rpm -ivh mysql-community-icu-data-files-.....
⑥rpm -ivh mysql-community-server-.......
注意:包与包有依赖关系,按照顺序安装。
  • 初始化 命令:mysqld --initalize --console。

  • 修改安装目录的所有者,以便有权限使用。

①命令:chown -R mysql:mysql /var/lib/mysql/
②启动服务,systemctl start mysqld
③初始化的时候,程序自动设置临时密码,查询密码 命令:cat /var/log/mysqld.log|grep localhost
  • 使用临时密码登录mysql账号进行修改密码。

①登录mysql 命令:mysql -uroot -p
②修改密码 命令:alter user 'root'@'localhost' identifiend by '123456';
③exit退出
  • 开放mysql端口3306。

firewall-cmd --zone=public --add-port=3306/tcp --permanent
windows的Navicat连接linux的mysql可能会出现的一些错误
  • 原因:

考虑是不是连接数据库的这个用户权限不足导致,因为在新建一个 MySQL连接时,会有一个默认的mysql数据库,此数据库中有一个 user用户表,此表就是用来设置所有用户的权限。
于是查询了user表中的user字段和host字段,发现想要进行数据库连接的root用户的host字段只有localhost地址,也就是只允许root用户从localhost或者127.0.0.1地址连接数据库,此时就需要将root用户的host字段改为'%',因为如果使用通配符%作为主机,则允许指定用户从任意主机连接。
  • 错误解决

①重启防火墙,firewall-cmd --reload
②登录mysql
③进入mysql数据库,查看mysql数据库的user表,
此时看到root用户的host字段是localhost也就是只允许本机地址连接数据库。
④修改root用户的host字段 命令:update user set host='%' where user='root';
如果使用通配符%作为主机,则允许指定用户从任意主机连接
刷新特权命令:flush privileges;

临时属性

带属性数启动SpringBoot

  • 临时修改项目的端口号

java -jar 项目jar包 --server.port=临时端口号
注意:后面添加临时属性,来覆盖原来的属性。
  • 临时修改项目连接数据库的密码

java -jar 项目jar包 --server.port=临时端口号 --spring.datasource.druid.password=123
注意:携带多个属性启动SpringBoot,属性间使用空格分隔。
  • 问题:发现加了指令参数不生效,应该在idea下帮助运维人员把命令测通,

这样才能交给运维使用,问题是在idea怎么测试临时属性是否生效呢?

  • 总结:

1. 临时属性添加方式:java –jar 工程名.jar –-属性名=值
2. 多个临时属性之间使用空格分隔。
3. 临时属性必须是当前boot工程支持的属性,否则设置无效。

在idea中解决属性添加

方式一:在idea配置

  1. 点击修改配置

2 . 看到配置属性的位置,Program arguments程序参数,在里面配置自己需求。

Program arguments和args的关系

在Program arguments填属性--server.port=8081 --a=b,会进入到args命令里面,
那么现在这个属性值通过这个参数传递到这里面。

方式二:通过编程形式带参数启动SpringBoot程序,为程序添加运行参数

  1. @SpringBootApplication
  2. public class SpringbootCrudApplication {
  3. public static void main(String[] args) {
  4. // //可以自己编写参数
  5. // String [] arg=new String[1];
  6. // arg[0]="--server.port=8082";
  7. // SpringApplication.run(SpringbootCrudApplication.class, arg);
  8. //也可以在启动boot程序断开读取外部临时配置对应的入口,也就是去掉读取外部参数的形参。
  9. SpringApplication.run(SpringbootCrudApplication.class);
  10. }
  11. }

配置文件

级别分类

  • springboot提供了一种机制,在现有的配置之上在做一套配置,

这套配置可以覆盖当前的配置,这样就不用在命令行上输入那么多临时属性。

  • SpringBoot中4级配置文件

1级: file :config/application.yml 【最高】
2级: file :application.yml
3级:classpath:config/application.yml
4级:classpath:application.yml 【最低】
  • 作用:

① 1和2级留做系统打包后在同一个目录下设置通用属性,
1级常用于运维经理进行线上整体项目部署方案调控。
② 3级与4级用于系统开发阶段设置通用属性,3级常用于项目经理进行整体项目属性调控。
  • 总结

1. 配置文件分为4种:
① 项目类路径配置文件:服务于开发人员本机开发与测试。
② 项目类路径config目录中配置文件:服务于项目经理整体调控
③ 工程路径配置文件:服务于运维人员配置涉密线上环境
④ 工程路径config目录中配置文件:服务于运维经理整体调控
2. 多层级配置文件间的属性采用叠加并覆盖的形式作用于程序。

自定义配置文件

  • 例定义一个yml文件,就要通过启动参数加载配置文件(无需书写配置文件扩展名)

  • 注意:

1. 单服务器项目:使用自定义配置文件需求较低。
2. 基于SpringCloud技术,所有的服务器将不再设置配置文件,
而是通过配置中心进行设定,动态加载配置信息。
  • 总结

1. 配置文件可以修改名称或者路径,通过启动参数设定。
2. 微服务开发中配置文件通过配置中心进行设置。

多环境开发

  • 什么是多环境?

开发项目的时候,在自己机器上的开发环境,而到了测试那边,环境却不一样,不是自己本机的了,
每一种不同环境对应配置是不同的。
所以所谓的环境根据不同环境配置不同的值。

多环境开发统一一个文件

  1. # 应用环境
  2. #公共配置都写在这里,例如
  3. spring:
  4. profiles:
  5. active: pro #使用pro这个环境
  6. --- #区分多个环境 ---
  7. # 设置环境
  8. #生产环境配置
  9. server:
  10. port: 80
  11. spring:
  12. profiles:pro
  13. ---
  14. #开发环境
  15. server:
  16. port: 81
  17. spring:
  18. profiles:dev
  19. ---
  20. #测试环境
  21. server:
  22. port: 82
  23. spring:
  24. config:
  25. activate:
  26. on-profile: test #推荐方式
  • 总结:

1. 多环境开发需要设置若干种常用环境,例如开发、生产、测试环境。
2. yaml格式中设置多环境使用---区分环境设置边界。
3. 每种环境的区别在于加载的配置属性不同。
4. 启用某种环境时需要指定启动时使用该环境。

多环境开发多文件版

  • 多环境开发,各种各样环境集中以前容易暴露信息的,并且维护起来不方便。

  • 就需要多个配置多文件格式。

主启动配置文件application.properties
spring.profiles.active=pro
1.环境分类配置文件application -pro.properties
server.port=80
2. 环境分类配置文件application -dev.properties
server.port=81
3. 环境分类配置文件application -test.properties
server.port=82
  • 注意:properties文件多环境配置仅支持多文件格式。

多环境开发分组管理

  • 根据功能对配置文件中的信息进行拆分,并制作成独立的配置文件,命名规则如下

① application-devDB.yml
② application-devRedis.yml
③ application-devMVC.yml
  • 使用group属性定义多种主环境与子环境的包含关系

  1. spring:
  2. profiles:
  3. active: dev
  4. group:
  5. "dev": devDB,devRedis,devMVC
  6. "pro": proDB,proRedis,proMVC
  7. "test": testDB,testRedis,testMVC
  • 注意:

当主环境dev与其他环境有相同属性时,主环境属性生效;
其他环境中有相同属性时,最后加载的环境属性生效。

多环境开发控制

  • 如何用maven控制springboot环境?

当maven与springboot多环境产生冲突的时候,应该让springboot使用maven的环境。

1 . Maven中设置多环境属性

  1. <!-- 设置多环境-->
  2. <profiles>
  3. <!-- 第一个环境-->
  4. <profile>
  5. <id>env_dev</id>
  6. <properties>
  7. <profile.active>dev</profile.active>
  8. </properties>
  9. <!-- 默认使用这个环境-->
  10. <activation>
  11. <activeByDefault>true</activeByDefault>
  12. </activation>
  13. </profile>
  14. <!-- 第二个环境-->
  15. <profile>
  16. <id>env_pro</id>
  17. <properties>
  18. <profile.active>pro</profile.active>
  19. </properties>
  20. </profile>
  21. </profiles>

2. SpringBoot中引用Maven属性

3. 执行Maven打包指令,并在生成的boot打包文件.jar文件中查看对应信息。

  • 总结:

1. 当Maven与SpringBoot同时对多环境进行控制时,以Mavn为主,
SpringBoot使用@..@占位符读取Maven对应的配置属性值。
2. 基于SpringBoot读取Maven配置属性的前提下,
如果在Idea下测试工程时pom.xml每次更新需要手动compile方可生效。

日记操作

  • 日志(log)作用

1. 编程期调试代码
2. 运营期记录信息
①记录日常运营重要信息(峰值流量、平均响应时长……)
②记录应用报错信息(错误堆栈)
③记录运维过程数据(扩容、宕机、报警……)

代码中使用日志工具记录日志

日记对象声明方式

1. 添加日志记录操作(创建一个工具类)
  1. import org.slf4j.Logger;
  2. import org.slf4j.LoggerFactory;
  3. public class BaseClass {
  4. private Class clazz; //声明一个当前类对象
  5. public static Logger log; //声明一个log对象
  6. public BaseClass(){
  7. //初始化当前类对象
  8. clazz=this.getClass(); //通过反射的方式动态获取不同类需要操作的slf4j日记
  9. log= LoggerFactory.getLogger(clazz); //初始化log对象
  10. }
  11. }
  1. @RestController
  2. @RequestMapping("/books")
  3. public class BookController extends BaseClass {
  4. //创建记录日记对象
  5. @GetMapping
  6. public String getById(){
  7. System.out.println("fjdlfgjl");
  8. // 记录日记
  9. log.debug("debug....");//日记级别,默认用的info级别,目前看到是info以上级别,所以debug是看不到的,可以调级别
  10. log.info("info.....");
  11. log.warn("warn.....");
  12. log.error("error.....");
  13. return "springboot log";
  14. }
  15. }
2. 设置日志输出级别,使用配置文件方式
① DEBUG:程序员调试代码使用
② INFO:记录运维过程数据
③ WARN:记录运维过程报警数据
④ ERROR:记录错误堆栈信息
  1. # ②设置分组级别方式,对某个组设置日记级别
  2. logging:
  3. group:
  4. ebank: com.atguigu.controller,com.atguigu.service #代表设置一个组
  5. iservice: com.aliyun
  6. level:
  7. root: info
  8. ebank: warn # 使用分组,对某个组设置日记级别
  9. ##①设置包级别方式
  10. #logging:
  11. # level:
  12. # root: info
  13. # # #①设置某个包的日记级别
  14. # com.atguigu.controller: debug

使用lombok提供的注解@Slf4j方式

1. 导入lombok依赖
  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. </dependency>
2. 添加注解
  1. @Slf4j
  2. @RestController
  3. @RequestMapping("/books")
  4. public class BookController{
  5. @GetMapping
  6. public String getById(){
  7. System.out.println("fjdlfgjl");
  8. log.debug("debug....");
  9. log.info("info.....");
  10. log.warn("warn.....");
  11. log.error("error....");
  12. return "springboot logger";
  13. }
  14. }

日志输出格式控制

PID:进程ID,用于表明当前操作所处的进程,当多服务同时记录日志时,
该值可用于协助程序员调试程序。
所属类/接口名:当前显示信息为SpringBoot重写后的信息,
名称过长时,简化包名书写为首字母,甚至直接删除。
  • 设置日志输出格式,看自己需求设置

  1. logging:
  2. pattern:
  3. console: "%d - %m%n"
  4. #%d:日期 %m:消息 %n:换行

通过文件记录日记

.....

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/364561
推荐阅读
相关标签
  

闽ICP备14008679号