Structuration de votre dossier de projet - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Structuration de votre dossier de projet

Pour fonctionner lorsqu'ils sont déployés sur un serveur Tomcat, les fichiers WAR (web application archives) Java EE (Java Platform Enterprise Edition) compilés doivent être structurés selon certaines directives. Votre répertoire de projet n'a pas besoin de respecter les mêmes normes, mais nous vous recommandons de le structurer de la même façon afin de simplifier la compilation et l'empaquetage. De plus, si vous structurez votre dossier de projet comme le contenu du fichier WAR, vous comprendrez mieux comment les fichiers sont liés et comment ils se comportent sur un serveur web.

Dans la hiérarchie recommandée ci-dessous, le code source de l'application web est placé dans un répertoire src afin de l'isoler du script de génération et du fichier WAR qu'il génère.

~/workspace/my-app/ |-- build.sh - Build script that compiles classes and creates a WAR |-- README.MD - Readme file with information about your project, notes |-- ROOT.war - Source bundle artifact created by build.sh `-- src - Source code folder |-- WEB-INF - Folder for private supporting files | |-- classes - Compiled classes | |-- lib - JAR libraries | |-- tags - Tag files | |-- tlds - Tag Library Descriptor files | `-- web.xml - Deployment Descriptor |-- com - Uncompiled classes |-- css - Style sheets |-- images - Image files |-- js - JavaScript files `-- default.jsp - JSP (JavaServer Pages) webpage

Le contenu du dossier src correspond à ce que vous allez empaqueter et déployer sur le serveur, à l'exception du dossier com. Le dossier com contient vos classes non compilées (fichiers .java). Ils doivent être compilés et placés dans le répertoire WEB-INF/classes afin d'être accessibles à partir du code de votre application.

Le répertoire WEB-INF contient le code et les configurations qui ne sont pas publiquement traités sur le serveur web. Les autres dossiers situés à la racine du répertoire source (css, images et js) sont publiquement disponibles à l'emplacement correspondant sur le serveur web.

L'exemple suivant est identique au répertoire de projet précédent, sauf qu'il contient davantage de fichiers et de sous-répertoires. Cet exemple de projet inclut des balises simples, des classes de modèle et de support, et un fichier Java Server Pages (JSP) pour une ressource record. Il inclut également une feuille de style et JavaScript pour Bootstrap, un fichier JSP par défaut et une page d'erreur pour les erreurs 404.

WEB-INF/lib inclut un fichier JAR (Java Archive) contenant le pilote JDBC (Java Database Connectivity) pour PostgreSQL. WEB-INF/classes est vide, car les fichiers de classe n'ont pas encore été compilés.

~/workspace/my-app/ |-- build.sh |-- README.MD |-- ROOT.war `-- src |-- WEB-INF | |-- classes | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- com | `-- myapp | |-- model | | `-- Record.java | `-- web | `-- ListRecords.java |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

Création d'un fichier WAR avec un script Shell

build.sh est un script shell très simple qui compile les classes Java, crée un fichier WAR et le copie dans le répertoire webapps de Tomcat pour les tests en local.

cd src javac -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/model/Record.java javac -classpath WEB-INF/lib/*:WEB-INF/classes -d WEB-INF/classes com/myapp/web/ListRecords.java jar -cvf ROOT.war *.jsp images css js WEB-INF cp ROOT.war /Library/Tomcat/webapps mv ROOT.war ../

Dans le fichier WAR, vous trouvez la même structure que celle du répertoire src figurant dans l'exemple précédent, à l'exception du dossier src/com. La commande jar crée automatiquement le fichier META-INF/MANIFEST.MF.

~/workspace/my-app/ROOT.war |-- META-INF | `-- MANIFEST.MF |-- WEB-INF | |-- classes | | `-- com | | `-- myapp | | |-- model | | | `-- Records.class | | `-- web | | `-- ListRecords.class | |-- lib | | `-- postgresql-9.4-1201.jdbc4.jar | |-- tags | | `-- header.tag | |-- tlds | | `-- records.tld | `-- web.xml |-- css | |-- bootstrap.min.css | `-- myapp.css |-- images | `-- myapp.png |-- js | `-- bootstrap.min.js |-- 404.jsp |-- default.jsp `-- records.jsp

Utiliser .gitignore

Pour éviter de valider les fichiers de classe compilés et les fichiers WAR dans votre référentiel Git, ou de voir des messages les concernant lorsque vous exécutez les commandes Git, ajoutez les types de fichiers appropriés à un fichier nommé .gitignore dans votre dossier de projet.

~/workspace/myapp/.gitignore

*.zip *.class