Отображение времени сборки в конечной точке spring boot/info

У меня есть следующие свойства, настроенные в моем весеннем загрузочном приложении.yml

info:
  app:
    name: @project.artifactId@
    description: @project.description@
    version: @project.version@
    timestamp: @timestamp@

После добавления зависимости Spring Boot Actuator я могу получить доступ к конечной точке /info и просмотреть информацию.

Чтобы отобразить информацию timestamp, я добавляю свойство ниже в pom.xml проекта maven, как показано ниже:

<properties>
   <timestamp>${maven.build.timestamp}</timestamp>
    <maven.build.timestamp.format>yyyy-MM-dd'T'HH:mm:ss'Z'</maven.build.timestamp.format>
</properties>

Временная метка отображается в правильном формате, но не в правильном. Я имею в виду, что я нахожусь в часовом поясе IST, и значение отображается как метка времени: «2017-10-03T16:24:02Z», что неверно, возможно, оно отображается в формате времени по Гринвичу. Но я хочу формат IST.

Может ли кто-нибудь помочь мне в этом?


person all4u    schedule 03.10.2017    source источник
comment
ответил здесь stackoverflow.com/questions/38983934/ вам не требуется, чтобы оно извлекалось из application.properties/yml Spring достаточно умен, чтобы позаботиться об этом .   -  person Milan Desai    schedule 28.03.2019


Ответы (1)


По умолчанию Maven выдает maven.build.timestamp в формате UTC.

Вы можете использовать timestamp-property цель вспомогательного модуля Maven Build Helper. чтобы выдать временную метку в другом часовом поясе.

Вот пример:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>build-helper-maven-plugin</artifactId>
    <version>3.0.0</version>
    <executions>
        <execution>
            <id>timestamp-property</id>
            <goals>
                <goal>timestamp-property</goal>
            </goals>
            <configuration>
                <name>build.timestamp.with.offset</name>
                <pattern>yyyy-MM-dd'T'HH:mm:ss'Z'</pattern>
                <timeZone>IST</timeZone>
            </configuration>
        </execution>
    </executions>
</plugin>

Я только что запустил сборку с этим плагином и со свойствами, определенными в вашем вопросе, и я повторяю значения как свойства timestamp, так и свойства build.timestamp.with.offset:

[INFO] Executing tasks
     [echo] [timestamp]: 2017-10-04T08:14:58Z
     [echo] [build.timestamp.with.offset]: 2017-10-04T12:44:59Z

Это ясно показывает, что временная метка по умолчанию находится в формате UTC, а build.timestamp.with.offset — в IST.

Таким образом, вы можете использовать этот плагин, а затем обновить свой application.yaml, чтобы использовать свойство build.timestamp.with.offset.

person glytching    schedule 03.10.2017
comment
Спасибо. Есть ли способ автоматического определения часового пояса и генерации данных в текущем формате часового пояса. - person all4u; 11.10.2017
comment
@all4u: не то чтобы я в курсе. Глядя на code кажется, по умолчанию используется GMT, если вы не укажете значение. Вы можете разветвить плагин и изменить поведение timestamp-property в соответствии с вашими требованиями. . - person glytching; 11.10.2017