web-dev-qa-db-fra.com

Structure pour plusieurs projets JSF avec code partagé

J'ai deux projets JSF qui partagent beaucoup de code - Java, fichiers xhtml, bibliothèques de balises, fichiers css et javascript, etc. Mon environnement/plateforme de développement se compose principalement d'Eclipse, Ant, Perforce et Matou.

Quelqu'un a-t-il trouvé un moyen de créer et d'organiser le code partagé de sorte que le code commun puisse rester dans un ensemble de dossiers?

Eclipse facilite l'ajout de dossiers externes pour Java sources, mais n'atteint pas les autres types de fichiers. J'apprécierais toutes les idées.

35
Heizenberg

Créez un nouveau "Projet Java" dans Eclipse. Ajoutez-le comme un autre projet à la propriété Deployment Assembly du projet Web dynamique principal. De cette façon, il se terminera automatiquement en tant que JAR dans /WEB-INF/lib de la construction du projet Web. Depuis les nouvelles versions d'Eclipse, vous pouvez également créer le projet en tant que "Projet de fragment Web". De cette façon, l'étape Deployment Assembly sera effectuée automatiquement.

Placez tous ces fichiers de ressources JSF2/Facelets partagés dans /META-INF/resources dossier du projet Java. Traitez-le simplement comme WebContent/resources du projet Web principal. Les Tagfiles peuvent simplement être conservés dans leur propre /META-INF/tags dossier.

Par exemple.

CommonWebProject
 |-- META-INF
 |    |-- resources
 |    |    `-- common
 |    |         |-- css
 |    |         |    `-- some.css
 |    |         |-- js
 |    |         |    `-- some.js
 |    |         |-- images
 |    |         |    `-- some.png
 |    |         |-- components
 |    |         |    `-- somecomposite.xhtml
 |    |         `-- sometemplate.xhtml
 |    |-- tags
 |    |    `-- sometag.xhtml
 |    |-- faces-config.xml
 |    |-- some.taglib.xml
 |    |-- web-fragment.xml
 |    `-- MANIFEST.MF
 :

avec

<h:outputStylesheet library="common" name="css/some.css" />
<h:outputScript library="common" name="js/some.js" />
<h:graphicImage library="common" name="images/some.png" />
<common:somecomposite />
<common:sometag />
<ui:include src="/common/sometemplate.xhtml" />
...

Si vous souhaitez également déclencher le scanner d'annotations JSF2 afin de pouvoir mettre @ManagedBean, @FacesValidator, @FacesConverter et consorts dans ce projet également, créez un /META-INF/faces-config.xml également (il peut même rester vide).

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://Java.Sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://Java.Sun.com/xml/ns/javaee http://Java.Sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
</faces-config>

C'est tout.

Voir également:

63
BalusC