前言:项目分模块,新建主工程,主工程pom.xml自定义属性,并配置一些jar包的版本信息,在主工程下新建子模块,子模块为真正的业务实现,子模块pom.xml继承自主工程,添加依赖时可以不用写版本号,现在要解决的问题是子模块中的application.properties或application.yml(yaml)
配置文件来读取主工程的pom.xml文件中的自定义属性
1.主工程自定义属性:主工程为springcloud-main
- 这里拿数据库连接url作为自定义属性
<properties>
<!-- 设置<![CDATA[]]防止链接转义错误-->
<mysql.url><![CDATA[jdbc:mysql://localhost:3306/test]]></mysql.url>
</properties>
2.新建子模块mysql-demo
image.png
- 项目检查,这一步很重要!!!
- 查看子模块的pom.xml的parent标签是否为主工程(这里我更新idea后,在主工程下new Module但是不会继承主工程,所以我自己改一下)
<parent>
<groupId>com.elitetyc</groupId>
<artifactId>springcloud-main</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
2.检查主工程中是否添加了modules标签(还是因为更新idea后,虽然我是在主工程下新建的模块,但是没有像以前一样自动添加module到主工程,自己添加一下,否则子工程读取不到主pom的属性)
<modules>
<module>mysql-demo</module>
</modules>
3.子模块配置文件获取主pom配置
- 相同操作,无论使用.properties还是.yml都需要在子工程pom配置如下
<resources>
<resource>
<directory>src/main/resources/</directory>
<filtering>true</filtering>
</resource>
</resources>
- 使用application.properties,直接使用
${属性名}
spring.datasource.url=${mysql.url}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=12345
- 使用application.yml
- 方式1,直接使用
${属性名}
- 方式1,直接使用
spring:
datasource:
url: ${mysql.url}
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 12345
- 方式2,使用
'@属性名获取@'
,注意有单引号或者双引号,不加引号的话,可能会出现错误:
Exception in thread "main" while scanning for the next token
found character '@' that cannot start any token. (Do not use @ for indentation)
in 'reader', line 4, column 11:
spring:
datasource:
url: '@mysql.url@'
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
网友评论