IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Maven Java Discussion :

[MAVEN] Compilation itérative


Sujet :

Maven Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut [MAVEN] Compilation itérative
    Bonjour,

    Étant sur un projet oû de nombreux jar doivent être créés en fonction de nombreux clients, je voudrai savoir si il est possible d'effectuer une "compilation itérative".
    Je m'explique : Le projet sur lequel je travail est un projet WebServices et jusqu'à présent j'utilisais un script Ant afin de pouvoir builder chaque fichier EAR préconfiguré (Connexion de base de données, génération d'un fichier .wsdd différent pour chaque, compilation de mes interfaces webservices différentes aussi...)
    Sur Maven à priori on ne peut pas le faire (sauf existance d'un plugin dont je n'ai pas la connaissance ...)

    Quelqu'un aurait-il une idée ?
    Merci d'avance !


    ps : Je pensais pouvoir passer par le antrun mais à priori je ne peux pas utiliser le plugin de compilation à l'interieur de Ant ... Sauf si j'indique explicitement le javac qui va compiler mes classes et cette configuration ne sera pas forcément partagée par tous les membres du projet.
    Donc je perds le bénéfice du contrôle de type de compilation dans Ant ce qui est dommage après avoir mavénisé un projet !

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 197
    Par défaut
    Je comprends mal ton problème. J'imagine deux choses :
    - ne recompiler que les classes modifiées. C'est géré nativement par le compilateur java et donc maven
    - dans un multiprojet ne recompiler que les modules necessaires à un projet ou les modules impactés par un changement. C'est le plugin reactor qu'il faut regarder : http://maven.apache.org/plugins/maven-reactor-plugin/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Merci pour la réponse !

    J'ai regardé ta seconde solution mais je ne pense pas que ça puisse m'aider.

    Pour être plus explicite j'ai ce type de projet :

    Un projet basique qui me génère tout d'abord un fichier JAR, sur lequel j'attache un fichier server-config.wsdd pour configurer les accès à la classe du service et aux méthodes du service.
    Les interfaces utilisées dans chaque services ne sont pas les mêmes car configurées différemment en fonction du client pour lequel je travaille. Le contexte du service non plus d'ailleurs

    Cependant, vu que je dois déployer une bonne 20ene de services pour chaque client différents (le service ne sera pas configuré de la même façon), dans chaque service, j'inclus une classe spécifique qui va permettre de le configurer de la bonne façon.
    Je dois donc en gros effectuer un build pour chaque client.

    Jusqu'à présent j'utilisais directement Ant qui, pour chaque client me générait un fichier EAR différents. (le fichier Ant faisait tout de même 1000 lignes ...)
    Le problème c'est qu'avec Maven, je suis obligé d'invoquer manuellement un build avec une configuration de build différents pour tous ces clients... Et faire ça 20 fois je trouve ça un peu lourd !

    L'idée qui me plairait serait de :

    --Pouvoir parcourir un fichier .properties déclaré dans le projet (ou directement des properties injectées dans le pom)
    --Pour chaque propriétés déclarées dans ce fichier, effectuer un build en utilisant une classe générique qui sera filtré au moment du build (tous comme mes fichiers de contexte) ce qui me permettra de générer des WebServices différents lorsque je lance le mvn build ...

    Peut être que j'en demande trop à Maven là dessus, je sais pas trop ...

    Une idée ?

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 197
    Par défaut
    Ok je comprend. Tu veux lancer un même build mais plusieurs fois avec des profiles différents.
    Malheureusement Maven ne le gère pas. Le seul moyen est d'utiliser un script (windows, shell, whatever) ou un serveur d'integration continue qui sache gérer les build paramétré (le mécanisme de grilles dans hudson par exemple)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Oui c'est exactement cela !
    Par contre jusqu'ici, j'utilise le plugin M2Eclipse pour compiler... Et si je commence à passer par des script pour lancer Maven ça va déstabiliser l'équipe qui possède son environnement Maven préconfiguré dans Eclipse.

    L'autre solution serait que je puisse réutiliser le fichier Ant que j'ai écris à la base, mais je perdrai le bénéfice du contrôle de compilation par maven lui même...

    Pas évident à Mavéniser ce projet !

  6. #6
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 197
    Par défaut
    Mais est ce qu'il est nécessaire dans eclipse de générer les 20 versions du même projet ?
    Ne pouvez vous pas séparer les parties spécifiques ? Ne pouvez vous pas créer 20 modules spécifiques et un module générique ?

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Donc l'idéal serait de créer un projet par module dans éclipse, avec une compilation spécifique pour chaque module ?
    Pourquoi pas ! Mais je me ferme ici toute possibilité de pouvoir générer dynamiquement un nombre de livrable dépendant d'un nombre de paramètres que j'aurai passé dans un fichier properties...

    Donc ta proposition serait un truc du type :

    pom-parent
    |
    +------Jar communs
    | |
    |-------------+pom.xml
    |
    +----Projet POM WebService
    | |
    |-------------+pom.xml
    | |
    +------------+Module Client 1
    +------------+Module Client 2
    +------------+Module Client 3
    ...

    Avec à la sortie, autant d'EAR que de Module client

    C'est pas trop lourd à gérer au niveau de la configuration des pom ?
    Car à chaque fois que je vais ajouter un service, je vais devoir recréer un module ! et configurer les pom père-fils pour qu'ils soient pris en compte à la compilation

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    En tout cas, ça m'air d'être la meilleure solution pour outrepasser mon problème de "mavénisation"

    Je vais tenter de partager mon projet en modules et reviens sur ce post dés que j'ai un peu mieux avancé

    Merci beaucoup !

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2008
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations forums :
    Inscription : Février 2008
    Messages : 197
    Par défaut
    Des collegues qui ont un probleme similaire au tien vont essayer de coder un goal pour lancer differents builds en fork du proces principal avec des parametres differents. Je te tiens au courant si ca aboutie.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    85
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Mars 2007
    Messages : 85
    Par défaut
    Impeccable !

    En attendant, j'ai réussi à intégrer mon script Ant dans mon projet Maven.
    Ce qui me permet tout de même de lancer le build à partir de Maven mais toute la compilation ainsi que la création de l'archive est effectué par Ant.

    C'est toujours mieux que rien !

    Au passage pour ceux qui veulent faire de même, j'ai eu beaucoup de mal à déléguer la compilation à Ant via Maven...
    Ne pas oublier de renseigner le paramètre fork = true lors de l'appel de javac dans Ant sinon vous risquez d'avoir des problèmes de classpath du compilateur lors de la compilation via Ant ...

Discussions similaires

  1. Maven compiler juste une seule classe
    Par synhedionn dans le forum Maven
    Réponses: 0
    Dernier message: 24/04/2010, 12h47
  2. Réponses: 8
    Dernier message: 12/05/2009, 11h31
  3. Réponses: 10
    Dernier message: 16/05/2008, 22h36
  4. [MAVEN]Compilation en JDK 1.5 ?
    Par elitost dans le forum Maven
    Réponses: 12
    Dernier message: 16/04/2007, 11h51
  5. [Maven] Compilation avec des librairies
    Par pamic dans le forum Maven
    Réponses: 3
    Dernier message: 03/07/2006, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo