V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
singerll
V2EX  ›  Java

关于 spring boot 打包的疑惑

  •  
  •   singerll · 2020-03-20 17:21:11 +08:00 via Android · 2834 次点击
    这是一个创建于 1707 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大概懂一点 java (非研发),发现一个现象,为什么用压缩软件在 jar 包里面新增一个 application-dev. yml 文件(原来没有),并在 app. yml

    中指定它,jar 包无法正常运行。maven 打包时具体都做了什么呢

    6 条回复    2020-03-23 10:24:23 +08:00
    akin
        1
    akin  
       2020-03-20 17:25:43 +08:00
    你是解压 jar 包,添加,然后再压缩成 jar 包吗?
    akin
        2
    akin  
       2020-03-20 17:43:03 +08:00   ❤️ 1
    Springboot 读取核心配置文件( application.properties )的优先级为

    Jar 包同级目录的 config 目录

    Jar 包同级目录

    classPath(即 resources 目录)的 config 目录

    classpath 目录

    上面是 springboot 默认去拿自己的核心配置文件的优先级,还有一种最高优先级的方式是项目启动时通过命令的方式指定项目加载核心配置文件,命令如下

    java –jar -Dspring.config.location=xxx/xxx/xxxx.properties xxxx.jar
    singerll
        3
    singerll  
    OP
       2020-03-20 18:06:54 +08:00 via Android
    @akin 没有解压,就直接用压缩软件打开,然后拖进去新增的配置文件
    akin
        4
    akin  
       2020-03-20 21:08:32 +08:00   ❤️ 1
    不能这么直接拖进去,要解压后重新打包 jar 包,重新生成 manifest.mf
    其实不建议这改 jar 包,如果你要搞一个自己的 yml。正确的做法是我发的,在 jar 包同级别目录放一个配置文件,这是 spring boot 的配置文件读取优先级决定的。
    cpc0wxj
        5
    cpc0wxj  
       2020-03-20 22:49:11 +08:00
    直接把 yml 放在和 jar 包同级目录,启动参数什么的也不用加,默认就会读取同级目录的 yml,如果要修改 jar 包内部的建议还是重新打包吧
    Aresxue
        6
    Aresxue  
       2020-03-23 10:24:23 +08:00
    可以在原有基础上修改文件内容, 但直接删除或添加文件可能会导致意外的情况发生,因为打包的时候文件的结构信息也会被 maven 固定
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3786 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 05:12 · PVG 13:12 · LAX 21:12 · JFK 00:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.