Quelles sont les meilleures pratiques pour créer des fichiers war (à l'aide d'eclipse) à exécuter sur tomcat ? Les tutoriels, les liens, les exemples sont très appréciés.
Réponses
Trop de publicités?Vous pouvez utiliser Fourmi à mettre en place, à compiler, WAR et déployer votre solution.
<target name="default" depends="setup,compile,buildwar,deploy"></target>
Vous pouvez ensuite exécuter en un clic dans Eclipse cette cible Ant. Voici des exemples de chacune de ces étapes :
Conditions préalables
Nous supposerons que votre code est organisé comme suit :
-
${basedir}/src
: Fichiers Java, propriétés, fichiers de configuration XML -
${basedir}/web
: Vos fichiers JSP -
${basedir}/web/lib
: Tout JAR requis au moment de l'exécution -
${basedir}/web/META-INF
: Votre manifeste -
${basedir}/web/WEB-INF
: Vos fichiers web.xml
Mettre en place
Définir un setup
qui crée le répertoire de distribution et copie directement tous les artefacts qui doivent être WARred :
<target name="setup">
<mkdir dir="dist" />
<echo>Copying web into dist</echo>
<copydir dest="dist/web" src="web" />
<copydir dest="dist/web/WEB-INF/lib" src="${basedir}/../web/WEB-INF/lib" />
</target>
Compiler
Construisez vos fichiers Java en classes et copiez tous les artefacts non-Java qui résident sous le nom de src
mais qui doivent être disponibles au moment de l'exécution (par exemple, les propriétés, les fichiers XML, etc.) :
<target name="compile">
<delete dir="${dist.dir}/web/WEB-INF/classes" />
<mkdir dir="${dist.dir}/web/WEB-INF/classes" />
<javac destdir="${dist.dir}/web/WEB-INF/classes" srcdir="src">
<classpath>
<fileset dir="${basedir}/../web/WEB-INF/lib">
<include name="*" />
</fileset>
</classpath>
</javac>
<copy todir="${dist.dir}/web/WEB-INF/classes">
<fileset dir="src">
<include name="**/*.properties" />
<include name="**/*.xml" />
</fileset>
</copy>
</target>
Construire le WAR
Créez le WAR lui-même :
<target name="buildwar">
<war basedir="${basedir}/dist/web" destfile="My.war"
webxml="${basedir}/dist/web/WEB-INF/web.xml">
<exclude name="WEB-INF/**" />
<webinf dir="${basedir}/dist/web/WEB-INF/">
<include name="**/*.jar" />
</webinf>
</war>
</target>
Déployer
Enfin, vous pouvez configurer une tâche pour déployer le WAR directement dans votre emplacement de déploiement Tomcat :
<target name="deploy">
<copy file="My.war" todir="${tomcat.deploydir}" />
</target>
Cliquez et partez !
Une fois que tout cela est mis en place, il suffit de lancer l'application default
d'Eclipse compilera, WAR et déploiera votre solution.
L'avantage de cette approche est qu'elle fonctionne aussi bien en dehors d'Eclipse qu'à l'intérieur d'Eclipse et qu'elle peut être utilisée pour partager facilement votre stratégie de déploiement (par exemple via le contrôle de la source) avec d'autres développeurs qui travaillent également sur votre projet.
Nous utilisons Maven (le grand frère de Ant) pour tous nos projets java, et il possède un plugin WAR très pratique. Les tutoriels et l'utilisation peuvent être trouvés ici.
C'est beaucoup plus facile que Ant, entièrement compatible avec Eclipse (utiliser maven eclipse:eclipse pour créer des projets Eclipse) et facile à configurer.
Exemple de configuration :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.1-alpha-2</version>
<configuration>
<outputDirectory>${project.build.directory}/tmp/</outputDirectory>
<workDirectory>${project.build.directory}/tmp/war/work</workDirectory>
<webappDirectory>${project.build.webappDirectory}</webappDirectory>
<cacheFile>${project.build.directory}/tmp/war/work/webapp-cache.xml</cacheFile>
<nonFilteredFileExtensions>
<nonFilteredFileExtension>pdf</nonFilteredFileExtension>
<nonFilteredFileExtension>png</nonFilteredFileExtension>
<nonFilteredFileExtension>gif</nonFilteredFileExtension>
<nonFilteredFileExtension>jsp</nonFilteredFileExtension>
</nonFilteredFileExtensions>
<webResources>
<resource>
<directory>src/main/webapp/</directory>
<targetPath>WEB-INF</targetPath>
<filtering>true</filtering>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</webResources>
<warName>Application</warName>
</configuration>
</plugin>
Un fichier war est simplement un fichier jar avec une extension war, mais ce qui le fait fonctionner, c'est la façon dont le contenu est réellement structuré.
Le tutoriel J2EE/Java EE peut être un début :
http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html
Et la spécification Servlet contient les détails sanglants :
http://java.sun.com/products/servlet/download.html
Si vous créez un nouveau projet web dans Eclipse (je fais référence à la version Java EE), la structure est créée pour vous et vous pouvez également lui indiquer où votre Appserver est installé et il déploiera et démarrera l'application pour vous.
L'option "Export->WAR file" vous permettra d'enregistrer le fichier de guerre.
Si vous n'êtes pas sûr de ce qu'il faut faire et que vous partez de zéro, Maven peut vous aider à démarrer.
En suivant les étapes ci-dessous, vous pouvez obtenir un nouveau projet war parfaitement configuré dans eclipse.
- Télécharger et installer Maven
- Exécutez la ligne de commande :
mvn archetype:generate
- Suivez les étapes demandées - en choisissant le projet web simple java (18) et un nom approprié.
- Lorsqu'il est terminé, exécutez-le :
mvn eclipse:eclipse
- Démarrez Eclipse. Choisissez Fichier -> Importer -> Projet existant. Sélectionnez le répertoire où vous avez exécuté les objectifs mvn.
- Voilà, vous devriez maintenant avoir un très bon départ pour un projet de guerre dans eclipse.
- Vous pouvez créer la guerre elle-même en exécutant
mvn package
ou le déployer en configurant un serveur dans eclipse et en ajoutant simplement le projet au serveur.
Comme d'autres l'ont dit, l'inconvénient d'utiliser maven est que vous devez utiliser les conventions maven. Mais je pense que si vous débutez, apprendre les conventions est une bonne idée avant de commencer à faire les vôtres. Rien ne vous empêche de modifier/réfacturer votre propre méthode préférée à un stade ultérieur.
J'espère que cela vous aidera.
- Réponses précédentes
- Plus de réponses