| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
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.5.0 :
Crée un simple projet de bibliothèque Flex qui produit un artefact SWC
Crée un simple projet Flex qui produit un artefact SWF
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.
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.5.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 13.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 13.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>sample-library 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.5.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>
<dependency>
<groupId>com.adobe.flexunit</groupId>
<artifactId>flexunit</artifactId>
<version>0.85</version>
<type>swc</type>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>m2e</id>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.maven.ide.eclipse</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>0.9.9-SNAPSHOT</version>
<configuration>
<mappingId>customizable</mappingId>
<configurators>
<configurator
id='org.maven.ide.eclipse.configuration.flex.configurator' />
</configurators>
<mojoExecutions>
<mojoExecution>
org.apache.maven.plugins:maven-resources-plugin::
</mojoExecution>
</mojoExecutions>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</profile>
</profiles>
</project>
L'Exemple 13.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 13.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 13.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 13.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 13.6, « Test unitaire de la classe App pour l'archétype de bibliothèque Flex ».
Exemple 13.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.5.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.5.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.5.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]
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 13.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.