IV. NMaven: concepts et commandes de base▲
IV-1. Le cycle de vie du projet▲
Les cycles de vie des projets sont un concept central de NMaven. La plupart des développeurs sont familiers avec les notions de phases du build comme compile, test et deploy. NAnt a des cibles (targets) avec des noms semblables. Dans NMaven cette notion est standardisée dans un groupe de phases de cycle de vie bien définies (voir Figure 2). Dans NMaven le développeur lance l'action liée à une phase du cycle de vie.
Dans la figure 2 les principales phases du cycle de vie de NMaven sont:
- generate-sources: Génère le code source supplémentaire nécessité par l'application, ce qui est généralement accompli par les plugins appropriés.
- compile: Compile le code source du projet.
- test-compile: Compile les tests unitaires du projet.
- test: Exécute les tests unitaires (typiquement avec Nunit).
- integration-test: Réalise et déploie le package si nécessaire dans un environnement dans lequel les tests d'intégration peuvent être effectués.
- install: Installe les artefact (dll, etc.) dans l'entrepôt local. Ils pourront être utilisés comme dépendance des autres projets sur votre machine locale.
- deploy: Réalisé dans un environnement d'intégration ou de production, copie l'artefact final dans un entrepôt distant pour être partagé avec d'autres développeurs ou projets.
Ces phases illustrent le bénéfice des pratiques recommandées et encouragées par NMaven: une fois que le développeur est familiarisé avec les phases principales, il devrait se sentir à l'aise avec les phases du cycle de vie de n'importe quel projet .NET géré par NMaven.
Appeler une phase du cycle de vie appelle automatiquement les phases précédentes du cycle de vie. C'est à dire que si on invoque la phase install, alors les phases suivantes seront appelées dans l'ordre : generate-sources, compile, test-compile, test, integration-test, et enfin install
Comme les phases du cycle de vie sont en nombre limité, faciles à comprendre et bien organisées, se familiariser avec le cycle de vie d'un nouveau projet NMaven est très simple.
IV-2. Les repository▲
Les repository sont des répertoires où sont stockées les différentes librairies (dll, etc) nécessaires ou produites lors des développements. Pour ce qui est de NMaven, il existe 3 repository qu'on peut utiliser:
- Repository Local : : il s'agit du repository qui se trouve sur le poste du développeur. Toute dépendance sera recherchée automatiquement dans ce repository.
- Repository Central ou distant : Lorsqu'un développeur réalise par exemple une compilation et que les dépendances nécessaires ne sont pas trouvées dans le repository local, NMaven va les chercher dans un repository distant qui aura au préalable été configuré (dans le fichier setting.xml). NMaven met le repository local à jour après avoir téléchargé les dépendances à partir du repository distant. Il faut noter que toute l'opération de téléchargement et d'installation des dépendances en question se fait automatiquement par NMaven.
- Repository Proxy : Dans le contexte d'une entreprise, il est nécessaire d'avoir en interne un repository proxy qui sert à faire les téléchargements une seule fois pour tous les développeurs. En effet en passant par le Repository Proxy, les téléchargements sur les Repository distants (téléchargements qui peuvent être très longs) sont faits seulement par ce dernier. Tout autre téléchargement de dépendance du Repository Local à partir du Repository Proxy est plus rapide car dans un Intranet.
IV-3. Organisation du repository▲
Ici nous devons bien comprendre comment est ce que NMaven range les artefact dans le repository. Chaque artefact a une adresse unique qui de la forme:
<
groupId>
.<
artefactId>
.<
version>
.[<
classifier>
]
Exemple:
<
groupId>
dotnet.nunit</
groupId>
<
artifactId>
nunit.framework</
artifactId>
<
version>
2.4.5.0
</
version>
Donne l'adresse : dotnet.nunit.nunit.framework.2.4.5.0
Au niveau du repository, voici ce que cela donne comme résultat (figure 4):
En somme tout projet qui donne lieu à un artéfact doit avoir un GroupId, un ArtefactId et une version. Le Classifier étant optionnel.
IV-4. Commandes de bases▲
Dans la gestion de projet on va partir de la création d'un projet jusqu'à son déploiement sur les plateformes de recettes en passant par les Build, les tests ou encore la génération de la documentation.
IV-4-1. Création de la solution▲
Mvn archetype:create -
DgroupId=
com.koossery.tuto
-
DartifactId=
tutointro
-
Dversion=
1.0
-
DarchetypeGroupId=
org.apache.maven.dotnet.csharp
-
DarchetypeArtifactId=
maven-
archetype-
class
-
library
Dans l'exemple ci-dessus on créé un projet de type "library" (Ceci est précisé par l'option -DarchetypeArtifactId).
Bien entendu on pourrait créer d'autre type de projet:
- Console: dans ce cas archetypeArtifactId = maven-archetype-console-application
- Winexe : dans ce cas archetypeArtifactId = maven-archetype-windows-application
- Controle : dans ce cas archetypeArtifactId = maven-archetype-windows-control
IV-4-2. Compilation de la solution▲
mvn compile
IV-4-3. Exécution des tests▲
mvn test
IV-4-4. Installation dans votre Repo Local▲
mvn install
IV-4-5. Empaquetage▲
mvn package
IV-4-6. Déploiement dans le Repo de l'entreprise▲
mvn deploy
IV-4-7. Exécution de plusieurs phases ▲
mvn clean compile test