| Ce site met a disposition le build journalier de la traduction francaise du Maven: The Definitive Guide Consultez : | ![]() |
La ligne de commande suivante crée un projet multimodule contenant un projet de bibliothèque Flex référencée par une application Flex qui elle-même est référencée par une application web :
$ mvn archetype:generate \ -DarchetypeRepository=http://repository.sonatype.org/content/groups/public \ -DarchetypeGroupId=org.sonatype.flexmojos \ -DarchetypeArtifactId=flexmojos-archetypes-modular-webapp \ -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-multimodule 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-multimodule [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESSFUL
Si vous regardez dans le répertoire sample-multimodule/,
vous verrez une arborescence qui contient trois projets swc, swf et war.
Le POM parent du projet multimodule est simple comme vous pouvez le voir ci-dessous. Il est constitué de références aux modules swc, swf et war.
Exemple 19.10. POM parent produit par l'archétype multimodule 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-multimodule</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>swc</module>
<module>swf</module>
<module>war</module>
</modules>
</project>
Le projet swc a un POM simple qui ressemble au POM illustré dans
l'Exemple 19.4, « POM d'un archétype pour projet de bibliothèque Flex ». Notez que
l'artifactId de ce POM ne reflète pas le nom du
module mais est swc-swc.
Exemple 19.11. POM du module swc
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonatype.test</groupId>
<artifactId>sample-multimodule</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>org.sonatype.test</groupId>
<artifactId>swc-swc</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>swc</packaging>
<name>swc Library</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>
<configuration>
<locales>
<locale>en_US</locale>
</locales>
</configuration>
</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>
Le POM du module swf est semblable au POM de l'Exemple 19.7, « POM généré par l'archétype Application Flex » avec une dépendance vers l'artefact
swc-swc en plus. Notez que
l'artifactId de ce POM ne reflète pas le nom du répertoire qui contient le
module ; l'artifactId dans le POM ci-dessous est swf-swf.
Exemple 19.12. POM du module swf
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.sonatype.test</groupId>
<artifactId>sample-multimodule</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>org.sonatype.test</groupId>
<artifactId>swf-swf</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>swf</packaging>
<name>swf Application</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>
<configuration>
<locales>
<locale>en_US</locale>
</locales>
</configuration>
</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>
<dependency>
<groupId>org.sonatype.test</groupId>
<artifactId>swf-swc</artifactId>
<version>1.0-SNAPSHOT</version>
<type>swc</type>
</dependency>
</dependencies>
</project>
Dans l'Exemple 19.12, « POM du module swf », la dépendance vers "swf-swc" doit être changée en "swc-swc". C'est un bug de l'archétype multimodule Flex qui est présent dans la version 3.3.0 de FlexMojos. Il sera corrigé dans la version FlexMojos 3.2.0.
Quand vous déclarez une dépendance vers un SWC, vous devez préciser le type de
dépendance afin que Maven puisse localiser les artefacts adéquats dans le dépôt distant ou local.
Dans ce cas, le projet
swf-swf dépend du SWC produit par le projet swc-swc.
Quand vous ajoutez la dépendance au projet swf-swf, le plugin FlexMojos
ajoutera le fichier SWC approprié dans le chemin des bibliothèques de compilation Flex.
Maintenant, jetez un coup d'oeil dans le POM simple du module war.
Exemple 19.13. POM du module war
<project>
<modelVersion>4.0.0</modelVersion>
<parent>
<artifactId>sample-multimodule</artifactId>
<groupId>org.sonatype.test</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>org.sonatype.test</groupId>
<artifactId>war-war</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<build>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>3.3.0</version>
<executions>
<execution>
<goals>
<goal>copy-flex-resources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.sonatype.test</groupId>
<artifactId>war-swf</artifactId>
<version>1.0-SNAPSHOT</version>
<type>swf</type>
</dependency>
</dependencies>
</project>
Dans l'Exemple 19.13, « POM du module war », la dépendance vers "war-swf" doit être remplacée par "swf-swf". C'est un bug dans l'archétype multimodule Flex qui est présent dans la version 3.3.0 de FlexMojos. Il sera corrigé dans la version FlexMojos 3.2.0.
Le POM illustré dans l'Exemple 19.13, « POM du module war »
configure le plugin FlexMojos pour exécuter le goal
copy-flex-resources pour ce projet. Le goal
copy-flex-resources copiera l'application SWF
à la racine de l'application web. Dans ce projet, l'exécution du build
et la production du WAR copieront le fichier
swf-swf-1.0-SNAPSHOT.swf dans le répertoire racine de l'application web
target/war-war-1.0-SNAPSHOT.
Pour construire l'application web multimodule, exécutez mvn
install depuis le répertoire racine. Ceci doit générer les artefacts
swc-swc, swf-swf et
war-war et produire le fichier WAR
/target/war-war-1.0-SNAPSHOT.war qui contient
le swf-swf-1.0-SNAPSHOT.swf à la racine de
l'application web.
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 ».