V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
singerll
V2EX  ›  Java

关于 spring boot 打包的疑惑

  •  
  •   singerll · Mar 20, 2020 via Android · 3592 views
    This topic created in 2234 days ago, the information mentioned may be changed or developed.

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

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

    6 replies    2020-03-23 10:24:23 +08:00
    akin
        1
    akin  
       Mar 20, 2020
    你是解压 jar 包,添加,然后再压缩成 jar 包吗?
    akin
        2
    akin  
       Mar 20, 2020   ❤️ 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
       Mar 20, 2020 via Android
    @akin 没有解压,就直接用压缩软件打开,然后拖进去新增的配置文件
    akin
        4
    akin  
       Mar 20, 2020   ❤️ 1
    不能这么直接拖进去,要解压后重新打包 jar 包,重新生成 manifest.mf
    其实不建议这改 jar 包,如果你要搞一个自己的 yml。正确的做法是我发的,在 jar 包同级别目录放一个配置文件,这是 spring boot 的配置文件读取优先级决定的。
    cpc0wxj
        5
    cpc0wxj  
       Mar 20, 2020
    直接把 yml 放在和 jar 包同级目录,启动参数什么的也不用加,默认就会读取同级目录的 yml,如果要修改 jar 包内部的建议还是重新打包吧
    Aresxue
        6
    Aresxue  
       Mar 23, 2020
    可以在原有基础上修改文件内容, 但直接删除或添加文件可能会导致意外的情况发生,因为打包的时候文件的结构信息也会被 maven 固定
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   780 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 20:20 · PVG 04:20 · LAX 13:20 · JFK 16:20
    ♥ Do have faith in what you're doing.