2012-03-31

Automatizar las fechas del archivo sitemap.xml con maven

Es posible automatizar la fechas del archivo sitemap.xml usando maven.

Para esto debemos crear una nueva carpeta de recursos web (por ejemplo "src/main/webresources") donde dejaremos una versión modificada de nuestro fichero sitemap.xml.

Este fichero sitemap.xml ya no contendra las fechas explícitamente, sino que tendrá la variable ${timestamp}:

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
    <url>
        <loc>http://nioos.com</loc>
        <lastmod>${timestamp}</lastmod>
    </url>
    <url>
        <loc>http://nioos.com/login.html</loc>
        <lastmod>${timestamp}</lastmod>
    </url>
    <url>
        <loc>http://nioos.com/sitemap.html</loc>
        <lastmod>${timestamp}</lastmod>
    </url>
    <url>
        <loc>http://nioos.com/politica-privacidad.html</loc>
        <lastmod>${timestamp}</lastmod>
    </url>
    <url>
        <loc>http://nioos.com/condiciones-servicio.html</loc>
        <lastmod>${timestamp}</lastmod>
    </url>
    <url>
        <loc>http://nioos.com/politica-contenido.html</loc>
        <lastmod>${timestamp}</lastmod>
    </url>
</urlset>

La variable ${timestamp} la definiremos en el fichero de configuración de nuestro de maven, al igual que nuestra nueva carpeta de recursos:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>ui.nioos.com</groupId>
  <artifactId>NioosUI</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  <name>NioosUI Webapp</name>
  <url>http://www.nioos.com</url>
  <!--  -->
  <properties>
      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
      <timestamp>${maven.build.timestamp}</timestamp>
      <maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
  </properties>
  <!--  -->
  <build>
    <finalName>NioosUI</finalName>
    <!--  -->
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <webResources>
                    <resource>
                        <filtering>true</filtering>
                        <directory>src/main/webresources</directory>
                    </resource>
                </webResources>
            </configuration>
        </plugin>
    </plugins>
    <!--  -->
  </build>
  <dependencies>
      <dependency>
          <groupId>net.sf.ehcache</groupId>
          <artifactId>ehcache-web</artifactId>
          <version>2.0.4</version>
          <scope>runtime</scope>
      </dependency>
  </dependencies>
</project>

Aquí hemos definido las propiedades:
<properties>
  <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  <timestamp>${maven.build.timestamp}</timestamp>
  <maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
</properties>

que posteriormente serán usadas en el nuevo fichero sitemap.xml, y también hemos configurado el plugin war de maven para que actualize los ficheros de la nueva carpeta con la fecha de la última compilación:
<plugins>
  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <webResources>
        <resource>
          <filtering>true</filtering>
          <directory>src/main/webresources</directory>
        </resource>
      </webResources>
    </configuration>
  </plugin>
</plugins>

De esta forma cada vez que compilemos el proyecto web usando maven el fichero sitemap.xml estará actualizado con la fecha de la última compilación de nuestro proyecto y los buscadores podrán actualizar sus índices de búsqueda de una forma más sencilla.

No hay comentarios:

Publicar un comentario