【发布时间】:2014-12-31 20:51:54
【问题描述】:
我正在使用 Spring Boot 开发一个 Web 应用程序,并且想要生成 war 而不是 jar。
使用此处描述的从 jar 到 war 的转换可以很好地工作:http://spring.io/guides/gs/convert-jar-to-war/
但我想将 application.properties 从战争中排除,因为我使用@PropertySource(value = "file:${OPENSHIFT_DATA_DIR}/application.properties") 来获取生产环境的文件路径。
-
此方法在生成我的战争时有效,但在 eclipse 中我无法运行我的应用程序,因为 application.properties 根本没有复制到目标/类:
<build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>application.properties</exclude> </excludes> </resource> </resources> </build> -
这个方法根本不行,我觉得spring-boot-maven-plugin不支持packagingExcludes:
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <packagingExcludes>WEB-INF/classes/application.properties</packagingExcludes> </configuration> </plugin> </plugins> </build>
您还有其他建议吗?
谢谢
【问题讨论】:
-
我解决这个问题的方法是使用
spring.config.location参数覆盖打包的配置。例如,我在 Tomcat 的上下文文件中将其设置为指向我在生产环境中使用的配置文件。您是否尝试过这样做,或者这个解决方案不适合您?或者您也许可以通过使用不同的 Maven 构建配置文件进行开发和生产来实现您想要做的事情?我的意思是只有当您使用生产 Maven 配置文件打包您的应用程序时才会排除 application.properties ... -
当我使用 maven 打包我的战争时,我只想排除 application.properties,其他一切正常。我不想在生成战争后删除 application.properties。
标签: java eclipse spring maven spring-boot