update machine change argentina java maven timezone

machine - timezone java



¿Cómo hacer que Maven muestre la zona horaria local en maven.build.timestamp? (4)

En Maven 3.2.2+, maven.build.timestamp se ha redefinido para mostrar la hora en UTC, según MNG-5452 .

¿Hay alguna manera de especificar que quiero la información de la zona horaria en mi zona horaria local y no en UTC? Busqué brevemente las fuentes de Maven, pero no veo de todos modos para especificar que quiero que el TZ sea TZ local y no basado en UTC.


Como ya se mencionó, en las versiones actuales de Maven (al menos hasta la versión 3.3. +), maven.build.timestamp propiedad maven.build.timestamp no permite anulaciones de zona horaria.

Sin embargo, si está de acuerdo con utilizar un nombre de propiedad diferente para sus propósitos, build-helper-maven-plugin le permite configurar marcas de tiempo personalizadas para una variedad de propósitos. Aquí hay un ejemplo para configurar la marca de tiempo actual en EST durante una compilación.

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.10</version> <executions> <execution> <id>timestamp-property</id> <goals> <goal>timestamp-property</goal> </goals> <configuration> <name>build.time</name> <pattern>MM/dd/yyyy hh:mm aa</pattern> <locale>en_US</locale> <timeZone>EST</timeZone> </configuration> </execution> </executions> </plugin>

Luego puede utilizar la propiedad ${build.time} lugar de ${maven.build.timestamp} donde necesita una marca de tiempo de la compilación en su zona horaria preferida.


Creo que no hay una solución pura de Maven, pero puedes usar una tarea Ant.

Siguiendo las instrucciones dadas en el libro de cocina de los desarrolladores de complementos Maven , puede generar un archivo filter.properties con la <tstamp> ant. En este elemento, puede personalizar su marca de tiempo con el mismo patrón de fecha / hora que la clase SimpleDateFormat y también usar la clase Timezone . Luego puede usar ${build.time} , de manera predeterminada usará su zona horaria local.

1) Usa el plugin maven-antrun

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>generate-resources</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <!-- Safety --> <mkdir dir="${project.build.directory}"/> <tstamp> <format property="last.updated" pattern="yyyy-MM-dd HH:mm:ss"/> </tstamp> <echo file="${basedir}/target/filter.properties" message="build.time=${last.updated}"/> </tasks> </configuration> </execution> </executions> </plugin>

2) Activar el filtrado

<resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <filters> <filter>${basedir}/target/filter.properties</filter> </filters>


No hay solución, sino solución alternativa. ¿ Usaste el plugin maven buildnumber-maven- plugin? Si es así, puede usarlo para generar una revisión para usted y crear la marca de tiempo. Esta marca de tiempo se basará en la configuración local de la zona horaria de Java.

Editar: Sin embargo, la pregunta es acerca de la timestamp de timestamp , como señaló Dean Schulze , solo la primera execution romperá ${buildNumber} . Para solucionarlo, deberá agregar otra execution a su configuración que creará buildRevision . Ejemplo actualizado, a continuación. Por ejemplo: `

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>buildnumber-maven-plugin</artifactId> <version>1.3</version> <inherited>true</inherited> <executions> <execution> <id>generate-timestamp</id> <phase>validate</phase> <goals> <goal>create</goal> </goals> <configuration> <format>{0,date,yyyy-MM-dd HH:mm:ss Z}</format> <items> <item>timestamp</item> </items> <buildNumberPropertyName>buildDateTime</buildNumberPropertyName> <getRevisionOnlyOnce>true</getRevisionOnlyOnce> </configuration> </execution> <execution> <id>generate-buildnumber</id> <phase>validate</phase> <goals> <goal>create</goal> </goals> <configuration> <revisionOnScmFailure>0</revisionOnScmFailure> <useLastCommittedRevision>true</useLastCommittedRevision> <buildNumberPropertyName>buildRevision</buildNumberPropertyName> </configuration> </execution> </executions>

${buildDateTime} puedes usar ${buildDateTime} donde quieras inyectar tu variable de marca de tiempo. Otra ejecución con el mismo objetivo también almacenará su revisión.


No se necesita ninguna solución.

La información de META-INF sobre la compilación de jar o war , especialmente Build-Date estará siempre en UTC , es hora del sistema.

Si muestra información al usuario en la interfaz de usuario, use sus preferencias / configuraciones de configuración Locale y transforme la hora UTC en su zona horaria.