J'ai compris que le modèle Maven 2 aspire à ce que tout projet ne produise qu'un artefact. En tout cas, d'après la lecture de néophyte que je me fais du pom.xml.
Cependant, certaines productions, comme la réalisation d'un EJB pour un serveur d'application, me posent problème.
Il me faut préparer un fichier ejb.jar contenant le Bean, son interface de service et sa home.
Mais aussi, ces deux derniers fichiers doivent se trouver dans un client.jar à destination de toute application cliente qui voudrait invoquer cet EJB.
Que dois-je faire?
1) Si je patouille afin que deux artefacts soient produits de force lors du packaging de mon projet, ces deux artefacts seront certainement repris conjointement par les autres projets. Et alors, une application cliente ne parviendra jamais à obtenir le client.jar seul.
2) Si je divise mon projet en deux, une partie serveur et une partie cliente, la situation est assez délicate pour passer l'ordre de compilation qui convient. Sélectionner ou exclure des sources de la compilation n'est pas aisé. Choisir de générer les home et les service dans un répertoire à part, par un xdoclet ou équivalent, peut m'aider. Mais c'est une solution de contournement, qui ne m'explique rien sur la stratégie que j'aurais du adopter.
Je suis souvent confronté à un problème d'oeuf et de poule. Les EJB voudraient connaitre leurs interfaces ; les interfaces ne peuvent être produites sans connaître leurs EJBs.
Ce n'est pas simple...
De plus, si j'y parviens au prix de manipulations hasardeuses, ces deux projets seront indépendants alors qu'ils ne devraient pas foncièrement l'être. Un jour je verrai peut-être produits client-1.2.jar et ejb-1.1.jar. Pourtant, ces deux projets devraient avoir la même version même s'ils sont distincts.
Comme vous le lisez, l'ensemble me pose des problèmes de compréhension générale. Pouvez-vous m'éclairer?
Partager