Я пытаюсь построить свой проект с использованием профилей сборки (dev, test или prod). У меня есть весеннее веб-приложение, которое я инициализирую, используя мою реализацию WebApplicationInitializer.Gradle Inject Build Environment в 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);
}
}
Там, я пытаюсь настроить регистратор (log4j), используя $ {окр}, который я хочу заменить dev-log4j.properties или prod-log4j.properties, в зависимости от того, как я строю свой проект.
В моей build.gradle, у меня есть:
processResources {
from('src/main/java') {
filter ReplaceTokens, tokens:[
"env": project.getProperty('env')
]
}
}
Наконец, я строить proeject с помощью:
Gradle чистой сборки -Penv = Prod
Мой заполнитель $ {ENV} не заменяется. Если я пытаюсь выполнить фильтрацию в файлах xml или properties, это отлично работает. Я понимаю, что регистрация не может быть самым важным свойством для настройки, но я могу также использовать аналогичный подход для регистрации настройки Spring Spring.
Любая помощь на это оценивается.
Спасибо.
Возможно, это не ответ на ваш вопрос, но посмотрите на [Весенние профили] (http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html). Использование Gradle для обработки и замены не очень хорошо. – alexvetter
Фильтрующие источники - определенно не очень хорошая идея. Поскольку @alexvetter предложил использовать пружинные профили или ресурсы фильтра. – Opal
Спасибо за одобрение. Я отбросил идею фильтрации источников. Я никогда не использовал Spring Profiles, но кажется, что это аккуратная функция. – RadoTonev