这是我的applciation.properties for development environment
# thymeleaf
spring.thymeleaf.cache = false
# datasource
spring.datasource.url=jdbc:mysql://localhost:3306/my_db
spring.datasource.username=user_for_development
spring.datasource.password=my_password_for_development
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.hbm2ddl.auto=update
和这个生产环境:
# thymeleaf
spring.thymeleaf.cache = false
# datasource
spring.datasource.url=jdbc:mysql://localhost:3306/my_db
spring.datasource.username=user_for_production
spring.datasource.password=my_password_for_production
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.hbm2ddl.auto=update
如果我运行' mvn package'我的jar项目,使用application.properties进行开发,运行良好但是这个jar在服务器生产中不起作用,因为与mysql的字符串连接不同。
答案 0 :(得分:0)
我没有在我的jar中打包属性文件。部署的一部分是将正确的属性文件复制到类路径中。
答案 1 :(得分:0)
您可以为Maven forf开发,质量保证,生产等定义多个不同的配置文件。请参阅here
答案 2 :(得分:0)
如果您想将属性文件保存在jar文件中,我建议您使用maven资源插件进行maven过滤,您可以根据您选择的配置文件将所需值放入占位符:例如开发或生产。它看起来如下:
<resources>
<resource>
<directory>path/to/resource/folder</directory>
<includes>
<include>yourfile.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
如果maven属性存在,所有占位符都将被替换。
实际上即使你有jar / war文件之外的属性文件,你也可以使用它。
答案 3 :(得分:0)
根据环境,您可以拥有包含属性的特定文件夹: src / main / resources和src / main / resources-prod。然后使用Maven resources plugin 和Maven profiles,您可以在war / jar等中包含正确的资源。