Pregunta

Estoy tratando de averiguar si tiene alguna Maven integrado plug-in que se puede utilizar para artefactos de sello de tiempo. He creado un archivo de ensamblaje y estoy usando el plugin de maven-ensamblaje para crear una distribución final (tarros, documentos, guiones, etc.). Quiero el nombre de este archivo de distribución como domain_year_month_day.zip. ¿Cómo puedo añadir la parte correspondiente al día de una marca de tiempo al final del archivo zip final que se está produciendo. Gracias.

¿Fue útil?

Solución

Se podría utilizar el experto en marcas de tiempo-plugin a un conjunto propiedad (por ejemplo timestamp) y utilizarlo más adelante en el nombre final de su montaje.

<plugin>
   <artifactId>maven-assembly-plugin</artifactId>
   <executions>
       <execution>
           <id>create-assembly</id>
           <phase>package</phase>
           <goals>
               <goal>single</goal>
           </goals>
           <configuration>
               <appendAssemblyId>false</appendAssemblyId>
               <finalName>domain_${timestamp}</finalName>
               <descriptors>
                   <descriptor>src/main/assembly/my-descriptor.xml</descriptor>
               </descriptors>
               <attach>true</attach>
           </configuration>
       </execution>
   </executions>
</plugin>

Como alternativa, se puede poner un poco de código en su maravilloso POM usando el GMaven complemento :

<plugin>
  <groupId>org.codehaus.gmaven</groupId>
  <artifactId>gmaven-plugin</artifactId>
  <version>1.3</version>
  <executions>
    <execution>
      <id>set-custom-property</id>
      <phase>initialize</phase>
      <goals>
        <goal>execute</goal>
      </goals>
      <configuration>
        <source>
          def timestamp = new Date().format('MM_dd_yy')
          project.properties.setProperty('timestamp', timestamp)
        </source>
      </configuration>
    </execution>
    <execution><!-- for demonstration purpose -->
      <id>show-custom-property</id>
      <phase>generate-resources</phase>
      <goals>
        <goal>execute</goal>
      </goals>
      <configuration>
        <source>
          println project.properties['timestamp']
        </source>
      </configuration>
    </execution>
  </executions>
</plugin>

Un ejemplo que muestra la propiedad:

$ mvn generate-resources 
[INFO] Scanning for projects...
[INFO]                                                                         
...
[INFO] --- gmaven-plugin:1.3:execute (set-custom-property) @ Q4081274 ---
[INFO] 
[INFO] --- gmaven-plugin:1.3:execute (show-custom-property) @ Q4081274 ---
11_02_10
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...

Y de nuevo, utilizar esta propiedad adelante en el nombre compilación de su montaje.

Otros consejos

no es necesario el experto en marcas de tiempo-plugin con las nuevas versiones de experto. Desde 2.1'ish, Maven tiene proporcionar al maven.build.timestamp propiedad especial.

Se ajusta el formato de las propiedades del pom con algo como esto:

<maven.build.timestamp.format>yyyy-MM-dd'T'HH.mm.ss</maven.build.timestamp.format>

Y a continuación, utilizar $ {} maven.build.timestamp siempre que se necesite una propiedad de marca de tiempo. Ver http://maven.apache.org/guides/introduction/introduction-to-the -pom.html para más detalles.

Como ${maven.build.timestamp} parece buggy experto, la solución es la siguiente:

Crea una nueva variable (elegí "build.timestamp", aquí) - y, opcionalmente, especificar el formato:

pom.xml

<project>
    ...
    <properties>
        ...
        <build.timestamp>${maven.build.timestamp}</build.timestamp>
        <maven.build.timestamp.format>yyyyMMdd</maven.build.timestamp.format> 
                     <!-- default is: yyyyMMdd-HHmm -->
    </properties>
    <build>
    ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <configuration>
                <descriptors>
                    <descriptor>some-assembly.xml</descriptor>
                </descriptors>
            </configuration>
            <executions>
                <execution>
                    <id>make</id>
                    <phase>package</phase>
                    <goals>
                        <goal>assembly</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

...

Utilice la variable personalizada desde cualquier lugar:

algunos-assembly.xml

<?xml version="1.0"?>
<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
    <id>release-${build.timestamp}</id>
    <baseDirectory>/</baseDirectory>
    <includeBaseDirectory>false</includeBaseDirectory>
    <formats>
      <format>zip</format>
    </formats>
    <fileSets>
      <fileSet>
        <directory>${project.build.directory}/${project.artifactId}-${project.version}</directory>
      </fileSet>
    </fileSets>
</assembly>

si utiliza Hudson / Jenkins que sólo puede utilizar la variable $ {} ID_creación para conseguir una especie de marca de tiempo a cualquier archivo de propiedades u desea editar.

información a las otras variables de entorno soportes Hudson / Jenkins, miren aquí: http://wiki.hudson-ci.org/display/HUDSON / Edificio + a + software + proyecto

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top