| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
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.