• maven编译后启动jar包读取不了启动时的配置文件


    maven编译后启动jar包读取不了启动时的配置文件
      在周一的时候,我给大家介绍过,有个项目是前后端分离的,前端是npm编译后的nginx静态目录,后端是maven编译后的jar包。
      话说线上有个客户体验环境,但是由于一些原因,不能再在这个线上客户体验环境进行测试、动里面的数据了,鉴于线上服务器也不太充足,所以这几天临时需要在公司内网部署一个客户体验环境。
      昨天我经理叫我快速部署好这个环境(我当时给他说如果不急的话,天翼云近期会给测试服务器我们,在上面部署,但他说比较急,我只能从了),因为明天要去做演示。然后本来内网是有一个内测环境(架构一摸一样,有nginx也有配好的配置文件,也有java环境),跟线上测试环境一样的,弄了jenkins发布。
      昨天在公司内网部署这个环境,我是怎么快速完成的呢?
      一开始,我想直接克隆该机器的,新建一个新的虚拟机,但想想这样也慢了,因为内网内测环境也分配了100G的硬盘,vmx、vmdk后缀文件大小都不小。可以参考我之前的【同一台服务器虚拟机之间克隆参考:https://blog.csdn.net/zhangmingcai/article/details/87859339】
      于是这种方案被我摒弃,果断在这台原内测环境的机器部署。nginx静态目录指向另一个位置,而jar包运行改成另一个端口。
     
    (1)同步线上客户体验环境的数据库数据到公司内网数据库
       mysqldump线上mysql数据库数据下来,导入到内网mysql
    (2)对于前端nginx
      jenkins 配置发布流程:npm编译之后(npm install;npm run build:xxx),会生成一个dist目录,然后我会将它压缩打包成 dist.tar.gz,再远程发布到nginx入口机器,解压。
      可以直接从浏览器jenkins的工作区拿到,双击下载,然后在内网服务器 rz 上传即可:
     
    (3)对于后端 jar 包  
      jenkins 配置发布流程:maven编译后(clean install  -e -DskipTests=true -Pxxx),会在某个项目目录下生成jar包,然后发布到远程机器,java -jar xxx.jar。
           同理也是从浏览器下载拿到。
      由于maven编译的时候,连的是线上体验环境的数据库,所以启动的时候,我特意指定了修改过的配置文件(连接公司内网数据库)去运行:
    nohup /usr/local/java/jdk1.8/bin/java -jar  {系统后台jar包名}.jar --spring.config.location=application-xxx.properties --server.port={指定一个服务器上没有监听过的端口,尤其不要跟测试环境的jar包端口一样} >> /home/{服务器某普通用户}/app/{项目名}/logs/out_{项目名}.log 2>&1 

        这个application-xxx.properties 是我从浏览器下载的jar包解压出来的目录:BOOT-INF/classes/    拿到的。

      然后在里面我修改成内网数据库连接:

       今天很悲催的发现,即使我强制指定改过的数据库配置连接文件,还是连的线上,只能感叹这个jar包很顽固。也推翻我之前测的 启动jar包指定数据库连接  的实验,如果今天不是前端叫我停内网数据库,去验证这个问题,我还真的以为很正常的连接到了内网的数据库。

      至于为啥这样,我都觉得是个谜~~~我那个实验确实可以的,但今天这个环境又不可以。

      另外一个事,前端直接拷贝dist目录来还原线上体验环境也是不行的!!

            npm有个编译:npm run build:xxx,里面已经写死了后台api地址,如下图:

       需要改成内网服务器:ip+端口形式的后台地址

          所以最终我认为的快速部署环境,实则上是不可行的,都需要重新编译,发布。本来以为走的捷径,实则劳心劳力还解决不了问题,而且以前做的测试也被推翻(原因未知),只能洗洗睡~

      

  • 相关阅读:
    HashMap源码解读(转)
    使用javascript开发2048
    程序猿接私活经验总结,来自csdn论坛语录
    Cocos2d-x实例:设置背景音乐与音效- AppDelegate实现
    Jenkins(二)
    SVN高速新手教程
    Visio Premium 2010密钥+破解激活方法
    oracle中LAG()和LEAD()等分析统计函数的使用方法(统计月增长率)
    shell语法简单介绍
    memset函数具体说明
  • 原文地址:https://www.cnblogs.com/windysai/p/16456396.html
Copyright © 2020-2023  润新知