当基于 springnboot 的模块打包成 Jar 包时,项目的 yml 怎么样才能被读取?

2022-01-20 15:15:40 +08:00
 coderstory

现在有个 spring boot 项目

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

使用如上配置打包成一个普通的 jar 包

D:.
├─cn
│  └─bobmao
│      └─pro
│          └─runtime
│              └─testweb10
│                  └─dddd2
│                      ├─controller
│                      │  └─data
│                      │      └─testweb10
│                      │          └─fora
│                      ├─data
│                      │  └─entity
│                      │      └─testweb10
│                      │          └─fora
│                      ├─jpaService
│                      │  └─testweb10
│                      │      └─fora
│                      ├─repository
│                      │  └─testweb10
│                      │      └─fora
│                      └─service
└─META-INF
    └─maven
        └─cn.bobmao.pro.runtime.testweb10
            └─dddd2

目录结构如上 application.yaml 在 jar 包的根目录内

现在 jar 本地安装后,在一个新建的 spring boot 项目内使用,并修改 scanbasepackage 之类的注解扫描这个包中的 bean ,但是这个项目的 application.yaml 不清楚这么加载。因为打包后这个配置文件就在新项目 jar 包中的 lib 中的依赖 jar 内。

一句话解释问题就是 springboot 项目如何依赖一个 springboot 打包出来的 jar ,且这个项目里的配置,bean 还能初始化。

注意这个被依赖的项目是打包成 jar 后使用的,而不是塞源码到项目里。 这是一个低代码平台里的一个业务,用户开个 spring boot 项目(自定义模块)后上传,能被用户创建的模块(图形化设计的模块)使用。所以这种依赖关系不在仓库里。

2488 次点击
所在节点    Java
8 条回复
pierswu
2022-01-20 15:45:07 +08:00
springboot 项目如何依赖一个 springboot 打包出来的 jar ,且这个项目里的配置,bean 还能初始化。

你可以看一下 spring boot starter ,是专门做这个事情的。

那个 jar 模块的 application.yaml 是无效的,所以你在定义自己的属性时,要加上一些默认值。这点有没有更好的办法解决我没去研究,你可以自己再深入研究看看
TyCoding
2022-01-20 16:40:10 +08:00
把 yml 配置文件放到 jar 包外部,当前目录的 ./config/application.yml ,jar 启动后会优先读取 config 目录下的配置
jorneyr
2022-01-20 16:40:32 +08:00
SpringBoot 外部配置、优先级及配置详解: https://zhuanlan.zhihu.com/p/71555677
hb0730
2022-01-20 16:46:26 +08:00
hb0730
2022-01-20 16:48:36 +08:00
dallaslu
2022-01-20 16:59:39 +08:00
要不要试一下 appassembler-maven-plugin
dallaslu
2022-01-20 17:01:19 +08:00
啊,刚才没有读完。忽略 #6 吧
xuanbg
2022-01-21 02:40:59 +08:00
很简单,你想一下你依赖的第三方包,譬如 redis 所需要的 ip/port 等参数是怎么配置的就明白了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/829488

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX