gpt4 book ai didi

java - Gradle 将构建环境注入(inject) WebApplicationInitializer

转载 作者:太空宇宙 更新时间:2023-11-04 13:50:35 25 4
gpt4 key购买 nike

我正在尝试使用构建配置文件(开发、测试或生产)构建我的项目。我有一个 Spring Web 应用程序,我正在使用 WebApplicationInitializer 的实现来初始化它。

public class WebMvcInitializer implements WebApplicationInitializer {

public void onStartup(ServletContext servletContext) {
configureSpringDispacher(servletContext);
configureLogging(servletContext);
}

public void configureSpringDispacher(ServletContext container) {
AnnotationConfigWebApplicationContext context = AnnotationConfigWebApplicationContext();
context.register(WebMvcConfigurer.class);
ServletRegistration.Dynamic dispacher = container.addServlet("dispatcher", new DispatcherServlet(context));
dispacher.setLoadOnStartup(1);
dispacher.addMapping("/");
}

private void configureLogging(ServletContext servletContext) {
servletContext.setInitParameter( "log4jConfigLocation" , "file:/${env}-log4j.properties" );
Log4jConfigListener log4jListener = new Log4jConfigListener();
servletContext.addListener( log4jListener );
}
}

在那里,我尝试使用 ${env} 配置记录器 (log4j),我想将其替换为 dev-log4j.properties 或 prod-log4j.properties,具体取决于我构建项目的方式。

在我的 build.gradle 中,我有:

processResources {
from('src/main/java') {
filter ReplaceTokens, tokens:[
"env": project.getProperty('env')
]
}
}

最后,我使用以下方法构建项目:

gradle clean build -Penv=prod

我的占位符 ${env} 没有被替换。如果我尝试在 xml 或属性文件中进行过滤,它工作得很好。我知道日志记录可能不是最重要的配置属性,但我可能还想使用类似的方法来注册特定于环境的 Spring 配置器。

对此的任何帮助表示感谢。

谢谢。

最佳答案

我最终过滤了 spring.properties 文件,然后从我的 WebApplicationInitializer 中读取该文件以激活 Spring Profile。

这似乎是比尝试过滤源更好的解决方案。

关于java - Gradle 将构建环境注入(inject) WebApplicationInitializer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com