Как может, я на jsp странице получаю номер версии проекта знатока?

Вы можете сделать это свойство анимированным в +[UIView animateWithDuration:], реализовав -[actionForLayer:forKey] в вашем классе вида. См. этот вопрос для примера того, как.

29
задан Rich Seller 6 October 2009 в 10:46
поделиться

5 ответов

Возможно, это глупо, но я бы использовал файл .properties , как в этом примере , вместо прямой фильтрации JSP.

11
ответ дан 28 November 2019 в 01:35
поделиться

Я хотел сделать то же самое, но меня не удовлетворило ни одно из существующих решений, в том числе использование подхода фильтрации Maven, что нормально, но я пытаюсь отойти от изменения существующих файлов кода в процессе сборки поэтому я исключил этот подход, хотя это разумный подход.

Способ получения версии проекта Maven в JSP-файл основан на подходе, аналогичном приведенному в здесь , за исключением того, что я не создаю файл Version.java, вместо этого у меня просто Maven. запишите версию в файл свойств, такой как «version.properties», например:

version.properties:

app.version = 0.1

, и пусть Maven поместит ее в путь к классам, например, в src / main / resources вот так:

    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
          <execution>
            <goals>
              <goal>run</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
            <!-- Idea from link: http://stackoverflow.com/questions/2469922/generate-a-version-java-file-in-maven -->
              <target>
                <property name="resources.dir" value="${project.build.sourceDirectory}/../resources" />
                <property name="version.filename" value="version.properties" />
                <property name="buildtime" value="${maven.build.timestamp}" />
                <echo message="Writing project version string to ${resources.dir}/${version.filename} ..." />
                <echo file="${resources.dir}/${version.filename}" message="app.version = ${project.version}${line.separator}" />
              </target>
            </configuration>
          </execution>
        </executions>
  </plugin>

Также, если вы используете 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"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Service Status</title>
    </head>
    <body>
        <h1>Service API</h1>
        <p>The service is up and running! (v${appVersion})</p>
    </body>
</html>

И это будет конечно, отобразить как:

Служба запущена и работает! (v0.1)

ПРИМЕЧАНИЕ. Если вы не используете классы JavaConfig для настройки Spring Framework, то вы можете сделать то же самое с конфигурацией Spring XML.

2
ответ дан whitestryder 14 October 2019 в 08:15
поделиться

Вы можете использовать это в своем JSP-файле (в моем примере - template.jsp)

<head>
<meta name="Historia Social Unica version:${version}" />

Затем в вашем pom.xml вашего проекта вы должны активировать фильтрацию:

<resources>
  <resource>
    <includes>
       <include>template.jsp</include>
    </includes>
    <directory>src/main/webapp/jsp/template</directory>
    <targetPath>jsp/template/</targetPath>
    <filtering>true</filtering>
  </resource>
 </resources>
</build>

И вы получите свой JSP с замененной версией переменной.

0
ответ дан Nico Van Belle 14 October 2019 в 08:15
поделиться

Вы можете использовать фильтрацию проекта для обработки JSP по мере его копирования в целевое расположение. Если JSP указан с помощью $ {project.version} , а содержащая папка указана в качестве местоположения фильтра, значение должно быть подставлено в JSP по мере его упаковки.

Например, добавление этого в ваш POM включает фильтрацию для src / main / resources:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

Обновление: для упаковки войны вам может потребоваться настроить подключаемый модуль war для выполнения его фильтрации. См. Раздел Фильтрация документации war-plugin] для получения более подробной информации и примеров.

По сути, процесс такой же, но он определен ниже war plugin, так что вы ' d имеет что-то вроде этого:

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.0</version>
    <configuration>
      <webResources>
        <resource>
          <directory>src/main/resources</directory>
          <filtering>true</filtering>
        </resource>
      </webResources>
    </configuration>
  </plugin>
</plugins>
31
ответ дан 28 November 2019 в 01:35
поделиться

Я использую этот плагин,

http://code.google.com/p/maven-substitute-plugin/

Вы можете сделать что-то вроде этого в Java,

   public final static String projectVersion = "@PROJECT_VERSION@";

, и это значение просто передать в JSP.

1
ответ дан 28 November 2019 в 01:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: