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


    19.3. Création d'un projet FlexMojos à partir d'un archétype

    Flexmojos a un ensemble d'archétypes qui peuvent être utilisés rapidement pour créer un nouveau projet Flex. Les archétypes ci-dessous sont tous dans le groupe org.sonatype.flexmojos avec version 3.3.0 :

    flexmojos-archetypes-library

    Crée un simple projet de bibliothèque Flex qui produit un artefact SWC

    flexmojos-archetypes-application

    Crée un simple projet Flex qui produit un artefact SWF

    flexmojos-archetypes-modular-webapp

    Crée un projet multimodule qui présente un projet qui produit un SWC qui est consommé par un projet pour produire un SWF lequel est affiché dans uen application web produite par un dernier projet.

    19.3.1. Création d'une bibliothèque Flex

    Pour créer un projet de bibliothèque Flex, il suffit d'exécuter la ligne de commande suivante :

    $ mvn archetype:generate \
      -DarchetypeRepository=http://repository.sonatype.org/content/groups/public \
      -DarchetypeGroupId=org.sonatype.flexmojos \
      -DarchetypeArtifactId=flexmojos-archetypes-library \
      -DarchetypeVersion=3.3.0
    [INFO] Scanning for projects...
    [INFO] Searching repository for plugin with prefix: 'archetype'.
    [INFO] com.sonatype.maven.plugins: checking for updates from central
    ...
    [INFO] [archetype:generate]
    [INFO] Generating project in Interactive mode
    [INFO] Archetype defined by properties
    ...
    Define value for groupId: : org.sonatype.test
    Define value for artifactId: : sample-library
    Define value for version:  1.0-SNAPSHOT: : 1.0-SNAPSHOT
    Define value for package:  org.sonatype.test: : org.sonatype.test 
    Confirm properties configuration:
    groupId: org.sonatype.test
    artifactId: sample-library
    version: 1.0-SNAPSHOT
    package: org.sonatype.test
     Y: : Y[INFO] Parameter: groupId, Value: org.sonatype.test
    [INFO] Parameter: packageName, Value: org.sonatype.test
    [INFO] Parameter: basedir, Value: /Users/Tim
    [INFO] Parameter: package, Value: org.sonatype.test
    [INFO] Parameter: version, Value: 1.0-SNAPSHOT
    [INFO] Parameter: artifactId, Value: sample-library
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESSFUL
    

    En regardant dans le répertoire sample-library/, vous verrez que le projet présente une arborescence comme dans la Figure 19.4, « Arborescence de l'archétype de bibliothèque Flexmojo ».

    Arborescence de l'archétype de bibliothèque Flexmojo

    Figure 19.4. Arborescence de l'archétype de bibliothèque Flexmojo


    Le produit du seul archétype de bibliothèque Flex contient trois fichiers : un POM, un fichier source et un fichier de test unitaire. Regardons chacun de ces trois fichiers. Premièrement, le Project Object Model (POM).

    Exemple 19.4. POM d'un archétype pour projet de bibliothèque Flex

    <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>org.sonatype.test</groupId>
      <artifactId>sample-library</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>swc</packaging>
    
      <name>test Flex</name>
    
      <build>
        <sourceDirectory>src/main/flex</sourceDirectory>
        <testSourceDirectory>src/test/flex</testSourceDirectory>
        <plugins>
          <plugin>
            <groupId>org.sonatype.flexmojos</groupId>
            <artifactId>flexmojos-maven-plugin</artifactId>
            <version>3.3.0</version>
            <extensions>true</extensions>
          </plugin>
        </plugins>
      </build>
    
      <dependencies>
        <dependency>
          <groupId>com.adobe.flex.framework</groupId>
          <artifactId>flex-framework</artifactId>
          <version>3.2.0.3958</version>
          <type>pom</type>
        </dependency>
    
        <!-- flexmojos Unit testing support -->
        <dependency>
          <groupId>org.sonatype.flexmojos</groupId>
          <artifactId>flexmojos-unittest-support</artifactId>
          <version>3.3.0</version>
          <type>swc</type>
          <scope>test</scope>
        </dependency>
      </dependencies>
    
    </project>

    L'Exemple 19.4, « POM d'un archétype pour projet de bibliothèque Flex » est très simple, le point clé de ce POM c'est la configuration de flexmojos-maven-plugin qui positionne extensions à true. Cette configuration personnalise le cycle de vie pour le packaging swc qui est défini dans le plugin flexmojos-maven-plugin. L'archétype inclut alors la dépendance flex-framework ainsi que la dépendance de type test flexmojos-unittest-support. La dépendance flex-framework est un POM qui contient les références vers les bibliothèques et les ressources nécessaires à la compilation une application Flex.

    Dans l'Exemple 19.4, « POM d'un archétype pour projet de bibliothèque Flex », le packaging est primordial. Le type de packaging d'un POM contrôle le cycle de vie qui est utilisé pour produire le résultat de build. La valeur swc dans l'élément packaging est l'indice qui indique le cycle de vie spécifique Flex dont les spécificités sont fournies par le plugin flexmojos-maven-plugin. L'autre partie importante de ce POM est l'élément build qui précise l'emplacement du code source Flex ainsi que celui des tests unitaires. Maintenant, jetons un coup d'oeil à l'Exemple 19.5, « App, l'application exemple de l'archétype de bibliothèque Flex » qui contient l'exemple de code d'ActionScript créé par l'archétype.

    Exemple 19.5. App, l'application exemple de l'archétype de bibliothèque Flex

    package org.sonatype.test {
      public class App {
        public static function greeting(name:String):String {
          return "Hello, " + name;
        }
      }
    }
    

    Bien que ce code soit très simple, il apporte un exemple et un repère immédiat : "Ecriver le reste du code ici". Bien qu'il puisse sembler idiot de tester un code aussi simple, un exemple de test nommé TestApp.as est proposé dans le répertoire src/test/flex. Ce test est présenté dans l'Exemple 19.6, « Test unitaire de la classe App pour l'archétype de bibliothèque Flex ».

    Exemple 19.6. Test unitaire de la classe App pour l'archétype de bibliothèque Flex

    package org.sonatype.test {
    
      import flexunit.framework.TestCase;
    
      public class TestApp extends TestCase {
    
        /**
         * Tests our greeting() method
         */
        public function testGreeting():void {
          var name:String = "Buck Rogers";
          var expectedGreeting:String = "Hello, Buck Rogers";
    
          var result:String = App.greeting(name);
          assertEquals("Greeting is incorrect", expectedGreeting, result);
        }
      }
    }
    

    Pour exécuter ce build, allez au répertoire du projet sample-library et lancez la commande : run mvn install.

    $ mvn install 
    [INFO] Scanning for projects...
    [INFO] ------------------------------------------------------------------------
    [INFO] Building sample-library Flex
    [INFO]    task-segment: [install]
    [INFO] ------------------------------------------------------------------------
    [INFO] [resources:resources]
    [INFO] [flexmojos:compile-swc]
    [INFO] flexmojos 3.3.0 - GNU GPL License (NO WARRANTY) - \
    See COPYRIGHT file
    [WARNING] Nothing expecified to include.  Assuming source and resources folders.
    [INFO] Flex compiler configurations:
    -compiler.headless-server=false 
    -compiler.keep-all-type-selectors=false 
    -compiler.keep-generated-actionscript=false 
    -compiler.library-path ~/.m2/repository/com/adobe/flex/framework/flex/\
    3.2.0.3958...
    -compiler.namespaces.namespace http://www.adobe.com/2006/mxml 
            target/classes/configs/mxml-manifest.xml 
    -compiler.optimize=true 
    -compiler.source-path src/main/flex 
    ...
    [INFO] [resources:testResources]
    [WARNING] Using platform encoding (MacRoman actually) to copy filtered \
            resources, i.e.  build is platform dependent!
    [INFO] skip non existing resourceDirectory src/test/resources
    [INFO] [flexmojos:test-compile]
    [INFO] flexmojos 3.3.0 - GNU GPL License (NO WARRANTY) - \
    See COPYRIGHT file
    [INFO] Flex compiler configurations:
    -compiler.include-libraries ~/.m2/repository/org/sonatype/flexmojos/\
            flexmojos-unittest-support...
    -compiler.keep-generated-actionscript=false 
    -compiler.library-path ~/.m2/repository/com/adobe/flex/framework/flex
            3.2.0.3958/flex-3.2.0.... 
    -compiler.optimize=true 
    -compiler.source-path src/main/flex target/test-classes src/test/flex 
    -compiler.strict=true 
    -target-player 9.0.0 
    -use-network=true 
    -verify-digests=true -load-config= 
    [INFO] Already trust on target/test-classes/TestRunner.swf
    [INFO] [flexmojos:test-run]
    [INFO] flexmojos 3.3.0 - GNU GPL License (NO WARRANTY) - \
    See COPYRIGHT file
    [INFO] flexunit setup args: null
    [INFO] ------------------------------------------------------------------------
    [INFO] Tests run: 1, Failures: 0, Errors: 0, Time Elpased: 0 sec
    [INFO] [install:install]
    

    Note

    Pour pouvoir exécuter les tests unitaires Flex il vous faudra configurer votre variable d'environnement PATH afin d'inclure le lecteur Flash Player. Pour plus d'information concernant la configuration de FlexMojos pour les tests unitaires, se référer à la Section 19.2.2, « Configuration de l'environnement pour les tests Flex Unit ».

    Quand vous exécutez la commande mvn install pour ce projet, vous pouvez noter dans l'output que Maven et le plugin Flexmojos prennent en charge la gestion de toutes les bibliothèques et dépendances pour le compilateur Flex. De la même façon que Maven est excellent pour aider les développeurs Java à gérer le contenu d'un classpath Java, Maven peut aider les développeurs Flex à gérer la complexité de génération des paths. Vous avez peut-être été surpris quand votre projet Flexmojos a démarré un navigateur web ou un lecteur Flash Player et l'a utilisé pour exécuter l'application TestApp construite à partir de votre code source.