Я хотел сделать то же самое, но меня не удовлетворило ни одно из существующих решений, в том числе использование подхода фильтрации Maven, что нормально, но я пытаюсь отойти от изменения существующих файлов кода в процессе сборки поэтому я исключил этот подход, хотя это разумный подход.
Способ получения версии проекта Maven в JSP-файл основан на подходе, аналогичном приведенному в здесь , за исключением того, что я не создаю файл Version.java, вместо этого у меня просто Maven. запишите версию в файл свойств, такой как «version.properties», например:
version.properties:
app.version = 0.1
, и пусть Maven поместит ее в путь к классам, например, в src / main / resources вот так:
org.apache.maven.plugins
maven-antrun-plugin
1.7
run
generate-sources
Также, если вы используете Spring Framework 3.x +, вы можете добавить следующую конфигурацию для загрузки свойств в version.properties, если она существует, в противном случае просто показать «v0.0» или что-то еще:
@Configuration
@EnableWebMvc
@EnableAspectJAutoProxy(proxyTargetClass = true)
public class WebHomeConfig extends WebMvcConfigurerAdapter implements
ApplicationContextAware {
private ApplicationContext _appContext;
/*
* (non-Javadoc)
*
* @see
* org.springframework.context.ApplicationContextAware#setApplicationContext
* (org.springframework.context.ApplicationContext)
*/
@Override
public void setApplicationContext(ApplicationContext appContext)
throws BeansException {
_appContext = appContext;
}
@Bean
public ViewResolver getViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.getAttributesMap().put("appVersion", appVersion);
return resolver;
}
/**
* Since we don't have any controller logic, simpler to just define
* controller for page using View Controller. Note: had to extend
* WebMvcConfigurerAdapter to get this functionality
*
* @param registry
*/
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("home");
}
/**
* The application version.
*/
@Value("${app.version:0.0}")
protected String appVersion;
@Bean
public static PropertySourcesPlaceholderConfigurer configurer() {
PropertySourcesPlaceholderConfigurer configurer = new PropertySourcesPlaceholderConfigurer();
configurer.setIgnoreResourceNotFound(true);
configurer.setLocations(new Resource[] {
new ClassPathResource("version.properties")});
return configurer;
}
}
И, наконец, в вашем /WEB-INF/views/home.jsp вы можете получить что-то вроде:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
Service Status
Service API
The service is up and running! (v${appVersion})
И это будет конечно, отобразить как:
Служба запущена и работает! (v0.1)
ПРИМЕЧАНИЕ. Если вы не используете классы JavaConfig для настройки Spring Framework, то вы можете сделать то же самое с конфигурацией Spring XML.
Попробуйте сначала добавить файлы в каталоги. Вы можете добавить какой-нибудь фиктивный файл в каталог и удалить этот файл, когда добавите фактическое содержимое для каталога.
Git не отслеживает пустые каталоги, он отслеживает файлы и их содержимое.
git init
mkdir foo
touch foo/dummy_empty_file
git add foo
git add foo/dummy_empty_file
git commit -m "adding files"
Git не фиксирует пустые каталоги. Сначала в каталогах должны быть файлы.