57 votes

Comment créer des fichiers de guerre

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.

76voto

David Citron Points 9231

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.

20voto

mikek Points 1050

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.

Page d'accueil de Maven

Plugin Maven WAR

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>

16voto

Mech Software Points 1775

J'ai toujours choisi d'exporter à partir d'Eclipse. Cela construit le fichier war et inclut tous les fichiers nécessaires. Si vous avez créé le projet en tant que projet web, c'est tout ce que vous aurez à faire. Eclipse rend la chose très simple à faire.

11voto

boxofrats Points 692

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.

11voto

Pablojim Points 4367

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.

  1. Télécharger et installer Maven
  2. Exécutez la ligne de commande : mvn archetype:generate
  3. Suivez les étapes demandées - en choisissant le projet web simple java (18) et un nom approprié.
  4. Lorsqu'il est terminé, exécutez-le : mvn eclipse:eclipse
  5. Démarrez Eclipse. Choisissez Fichier -> Importer -> Projet existant. Sélectionnez le répertoire où vous avez exécuté les objectifs mvn.
  6. Voilà, vous devriez maintenant avoir un très bon départ pour un projet de guerre dans eclipse.
  7. 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.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X