Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide
Consultez :
  • Les documents de reference sur le projet original
  • Les sources de la traduction fr sur GitHub
  • maven


    6.3. Le module simple-weather

    Commençons par regarder le sous-module simple-weather. Ce module contient toutes les classes qui s'occupent des interactions et du parsing du flux RSS de Yahoo! Météo.

    Exemple 6.2. POM du module simple-weather

    <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>
      <parent>
        <groupId>org.sonatype.mavenbook.multi</groupId>
        <artifactId>simple-parent</artifactId>
        <version>1.0</version>
      </parent>
      <artifactId>simple-weather</artifactId>
      <packaging>jar</packaging>
    
      <name>Multi Chapter Simple Weather API</name>
    
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-surefire-plugin</artifactId>
              <configuration>
                <testFailureIgnore>true</testFailureIgnore>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement> 
      </build>
    
      <dependencies>
        <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.14</version>
        </dependency>
        <dependency>
          <groupId>dom4j</groupId>
          <artifactId>dom4j</artifactId>
          <version>1.6.1</version>
        </dependency>
        <dependency>
          <groupId>jaxen</groupId>
          <artifactId>jaxen</artifactId>
          <version>1.1.1</version>
        </dependency>
        <dependency>
          <groupId>velocity</groupId>
          <artifactId>velocity</artifactId>
          <version>1.5</version>
        </dependency>
        <dependency>
          <groupId>org.apache.commons</groupId>
          <artifactId>commons-io</artifactId>
          <version>1.3.2</version>
          <scope>test</scope>
        </dependency>
      </dependencies>
    </project>
    

    Le fichier pom.xml du module simple-weather fait référence à un POM parent via un triplet de coordonnées Maven. Le POM parent du module simple-weather est identifié par son groupId avec pour valeur org.sonatype.mavenbook.multi, par l'artifactId simple-parent et par la version 1.0. Consultez l'Exemple 6.3, « La classe WeatherService ».

    Exemple 6.3. La classe WeatherService

    package org.sonatype.mavenbook.weather;
    
    import java.io.InputStream;
    
    public class WeatherService {
    
        public WeatherService() {}
    
        public String retrieveForecast( String zip ) throws Exception {
            // Retrieve Data
            InputStream dataIn = new YahooRetriever().retrieve( zip );
    
            // Parse Data
            Weather weather = new YahooParser().parse( dataIn );
    
            // Format (Print) Data
            return new WeatherFormatter().format( weather );
        }
    }
    

    Dans le dossier src/main/java/org/sonatype/mavenbook/weather se trouve la classe WeatherService. Celle-ci fait référence à trois objets définis dans le Chapitre 4, Personnalisation d'un projet Maven. Dans l'exemple de ce chapitre, nous créons un projet séparé qui contient les services utilisés par le projet de l'application web. C'est un modèle commun dans le développement d'entreprise Java, une application complexe se compose souvent de plusieurs applications web. Vous pourriez donc avoir une application d'entreprise composée de plusieurs applications web et de plusieurs applications en ligne de commande. Souvent, vous voudrez extraire certains éléments communs dans un service externalisé pour pouvoir les réutiliser sur plusieurs projets. C'est donc dans cette optique que nous créons la classe WeatherService. Ainsi, nous verrons comment le projet simple-webapp fait référence à un service défini dans module séparé : simple-weather.

    La méthode retrieveForecast() prend en paramètre une chaîne de caractères contenant un code postal. Celle-ci est passé à la méthode retrieve() de la classe YahooRetriever qui retournera un flux XML provenant de Yahoo! Météo. Ce même XML est ensuite passé à la méthode parse() de la classe YahooParser qui analyse ce flux et le retourne sous la forme d'un objet Weather. Ce dernier est ensuite formaté par la classe WeatherFormatter en une chaîne de caractères présentable.