Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 03/06/2008, à 09:25

dialloma

Des questions sur Maven !

Salut à tous,

Pour ceux qui n'ont jamais utilisé maven, il s'agit d'un build comme Ant. Alors j'ai plusieurs questions sur ce outil de développement.

1) Sous Ant, on peut lancer une tache qui correspond à exécuter un programme java; c'est à dire quand on écrit un programme Java avec un main, et en lançant cette tache, ant nous exécute la commande "java MaClass". Ma question est existe -il une fonctionnalité similaire sous Maven ?

2) Quand on déclarre des dépendences dans le fichier pom d'un projet maven, il se charge de télécharger toutes ces dépendances et de les installer dans le repository local de notre machine. En général ce sont des fichiers Jar qu'on veut utiliser dans le programme pendant le développement, alors comment ajouter ces JAR dans le classpath du projet ?

3) Si vous avez utiliser le plugin FlexMojo pour créer des projets Flex avec Maven, savez vous comment on lance le fichier SWF crée par le projet à partir d'une commande maven ?

Merci d'avance
dialloma

Hors ligne

#2 Le 06/06/2008, à 10:54

Martopioche

Re : Des questions sur Maven !

Alors déjà

dialloma a écrit :

Pour ceux qui n'ont jamais utilisé maven, il s'agit d'un build comme Ant.

ban non pas tout à fait. Il s'agit en fait d'un automate de construction qui uniformise la structure, l'organisation et la gestion du projet. Après, il se repose sur les outils classiques. Ainsi par exemple, Maven ne compile pas, il lance le compilateur javac.

Du coup :

1) Sous Ant, on peut lancer une tache qui correspond à exécuter un programme java; c'est à dire quand on écrit un programme Java avec un main, et en lançant cette tache, ant nous exécute la commande "java MaClass". Ma question est existe -il une fonctionnalité similaire sous Maven ?

2 réponses : non et ça dépend.
Maven n'est pas une plateforme de remplacement de commandes. Ses taches de base sont de gérer la structure de ton projet, la construction et le déploiement. Lancer l'application est en dehors de son cycle de vie et dans l'absolu n'a que peu de sens : de manière plus Linuxienne, tu n'utilise pas make pour lancer tes programmes.

Après, le "ça dépend", c'est parceque Maven, c'est que du plug-in. Rien n'empêche de développer le plug-in.

Reste que je suis dubitatif sur ce besoin...

2) Quand on déclarre des dépendences dans le fichier pom d'un projet maven, il se charge de télécharger toutes ces dépendances et de les installer dans le repository local de notre machine. En général ce sont des fichiers Jar qu'on veut utiliser dans le programme pendant le développement, alors comment ajouter ces JAR dans le classpath du projet ?

Alors déjà, non. Les dépendances décrites dans le POM sont les dépendances nécessaires pour tout le cycle de vie de ton projet, du développement à l'exploitation. Tu notera la présence de la balise <scope> pour les dépendances. Ainsi, tu peux voir que Junit est en scope test, et ne sera donc pas utilisé lors des déploiements.

Ceci étant dit, je ne comprends pas la question. Pendant ton développement, ni même après d'ailleurs, tu n'a pas à te soucier du classpath, Maven est là pour ça. Tu a besoin d'une dépendance : tu la décrit dans le POM, et lors des commandes "mvn compile", "mvn test" ou "mvn install", maven récupérera la dépendance si tu ne l'a pas, et gèrera le classpath lui même. Si j'ai répondu à coté, précise big_smile

3) Si vous avez utiliser le plugin FlexMojo pour créer des projets Flex avec Maven, savez vous comment on lance le fichier SWF crée par le projet à partir d'une commande maven ?

Sans moi big_smile

Hors ligne

#3 Le 06/06/2008, à 16:08

dialloma

Re : Des questions sur Maven !

merci Martopioche

2 réponses : non et ça dépend.
Maven n'est pas une plateforme de remplacement de commandes. Ses taches de base sont de gérer la structure de ton projet, la construction et le déploiement. Lancer l'application est en dehors de son cycle de vie et dans l'absolu n'a que peu de sens : de manière plus Linuxienne, tu n'utilise pas make pour lancer tes programmes.

Après, le "ça dépend", c'est parceque Maven, c'est que du plug-in. Rien n'empêche de développer le plug-in.

Reste que je suis dubitatif sur ce besoin...

Ok peut être que je comprends autre choses à travers ta réponse. Au fait, pour moi l'idéal est qu'en écrivant du code (ici Java), c'est pour pouvoir l'utiliser, c'est pourquoi je parle de lancer le main du programme. Mais sous Maven, je pense qu'on peut faire les tests unitaires pour tester chaque méthodes de chaque classe qu'on désire. Mais étant donné que Ant lui il lance des tache telles que la commande javac, java etc.....Je pense qu'on peut utiliser ant pour faire ce que je veux, j'ai vu une fois quelque part sur internet, lancer une tache ant à partir de maven, je me demandais à quoi cela allait servir. Je ne savais pas parce que je confondais beaucoup maven avec ant, mais même s'ils ne sont pas complétement différents, ils se completent. Alors si on veut faire des choses que Maven ne peut pas faire, ant est là pour nous aider.

Alors déjà, non. Les dépendances décrites dans le POM sont les dépendances nécessaires pour tout le cycle de vie de ton projet, du développement à l'exploitation. Tu notera la présence de la balise <scope> pour les dépendances. Ainsi, tu peux voir que Junit est en scope test, et ne sera donc pas utilisé lors des déploiements.

Ceci étant dit, je ne comprends pas la question. Pendant ton développement, ni même après d'ailleurs, tu n'a pas à te soucier du classpath, Maven est là pour ça. Tu a besoin d'une dépendance : tu la décrit dans le POM, et lors des commandes "mvn compile", "mvn test" ou "mvn install", maven récupérera la dépendance si tu ne l'a pas, et gèrera le classpath lui même. Si j'ai répondu à coté, précise

Quand je dis que mon projet java dépends de tel ou tel JAR, je pense que c'est parce que je vais surement utiliser ce JAR dans le développement et peut être même au déploiement. Alors si je n'ajoute par ce JAR dans le classPath, je ne vois pas comment je vais pouvoir utiliser les classes de ce JAR. Dans eclipse,je suis obligé de passer par les fenetre de configuration pour ajouter mes jar dans le classpath de mon projet java. Dès que je les supprime du classepath, je vois des erreurs, en plus, si je ne les ajoute pas, je ne peux pas bénéficier de l'autocomplétion eclipse une chose non négligeable dans le développemnt d"un grand projet.

Je confond peut être plusieurs choses ?

Merci
dialloma

Hors ligne

#4 Le 06/06/2008, à 17:04

Martopioche

Re : Des questions sur Maven !

Bonjour,

Ok... Dans l'ordre, sachant que j'ai compris que tu travaille avec Eclipse :

Utilisation des tâches
J'ai moins compris ce coup ci, mais je crois voir une idée. Alors que ce soit avec Maven ou non, les tests unitaires doivent être indépendants et se lancer... unitairement. Réfère toi aux tutos JUnit. Sinon sache qu'avec Maven, tu écrit ton code, tu écrit tes tests, tu fait

mvn compile

Il compile tes sources

mvn test

Il compile ton code et lance les tests. Si il y a du test en échec, regarde les logs dans les rapports Surefire (répertorie target du projet).

mvn install

Il compile, teste, et si les tests passent, il package.

Si tu veux lancer spécifiquement un test sous Eclipse, assure toi que les sources aient été compilées au moins une fois, qu'il n'y ai pas eu de "mvn clean", à la rigueur compile les tests (mvn compiler:testCompile) puis click droit sur la classe de test>run as JUnit Test.

Oui tu peux lancer du Ant à partir de Maven, mais depuis 2 ans, j'ai jamais eu à m'en servir...

Dépendances.
Ok, alors le rôle de Maven est aussi de te décharger de la gestion chaotique des dépendances. Lorsque tu rajoute une dépendance dans le POM, un... disons "mvn compile" permet à Maven de te générer le classpath qui va bien (il va référencer la dépendance dans ton répertorie .m2). Si tu utilise Eclipse, déjà dans l'éditeur lancé dans le bon workspace, va sur les préférences (window>preferences) puis java>build Path>Classpath Variables. Ajoute une variable avec pour nom "M2_REPO" et qui pointe sur ton répertoire .m2/repository.

Maintenant, à la racine de ton projet (là ou tu a ton POM) fait

mvn eclipse:eclipse

Voila. Maven a configuré le classpath d'Eclipse. Tu a acces à la complétion, à la javadoc et aux sources (si l'artefact était dispo).

Pour le déploiement c'est une autre paire de manche... Appli Web ou lourde ?

Hors ligne