Comment créer des fichiers de guerre

quelles sont les meilleures pratiques pour créer des fichiers de guerre (en utilisant eclipse) sur tomcat? des tutoriels, des liens, des exemples sont très appréciés.

89
demandé sur martin clayton 2009-06-16 18:06:50

13 réponses

vous pouvez utiliser Ant pour configurer, compiler, WAR , et déployer votre solution.

<target name="default" depends="setup,compile,buildwar,deploy"></target>

vous pouvez alors exécuter un clic dans Eclipse pour lancer cette cible Ant. Voici des exemples de chacune des étapes:

conditions préalables

nous supposerons que vous avez votre code organisé comme:

  • ${basedir}/src : fichiers Java, propriétés, XML fichiers de configuration
  • ${basedir}/web : vos fichiers JSP
  • ${basedir}/web/lib : les bocaux nécessaires à l'exécution
  • ${basedir}/web/META-INF : votre manifeste
  • ${basedir}/web/WEB-INF : votre web.fichiers xml

Set up

définir une setup tâche qui crée le répertoire de distribution et copie tous les artéfacts qui doivent être WARred directement:

<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 dans des classes et copiez sur des artéfacts Non-Java qui résident sous src mais qui doivent être disponibles à l'exécution (propriétés, 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 la guerre

Créer de la GUERRE elle-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 la guerre directement dans votre Tomcat deploy lieu:

<target name="deploy">
    <copy file="My.war" todir="${tomcat.deploydir}" />
</target>

et Cliquez sur go!

une fois tout cela mis en place, il suffit de lancer la cible default D'Eclipse compilera, combattra et déploiera votre solution.

l'avantage de cette approche est qu'elle fonctionnera en dehors D'Eclipse ainsi qu'à L'intérieur D'Eclipse et peut être utilisée pour partager facilement votre stratégie de déploiement (par exemple via le contrôle source) avec d'autres développeurs qui travaillent également sur votre projet.

94
répondu David Citron 2011-01-20 00:40:49

je viens de sélectionner Export à partir D'Eclipse. Il génère 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 le rend très simple à faire.

35
répondu Mech Software 2009-06-16 14:12:03

nous utilisons Maven (le grand frère de Ant) pour tous nos projets java, et il a un très joli plugin WAR. Tutoriels et usage peuvent être trouvés là.

c'est beaucoup plus facile que Ant, entièrement compatible avec Eclipse (utilisez Maven eclipse:eclipse pour créer des projets Eclipse) et facile à configurer.

Maven de la page d'accueil

Maven GUERRE plugin

Configuration De L'Échantillon:

<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>
22
répondu mikek 2014-07-22 10:55:36

un fichier war est simplement un fichier jar avec une extension war, mais ce qui le fait fonctionner 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 Gore:

http://java.sun.com/products/servlet/download.html

si vous créez un nouveau projet Web dans Eclipse (je me réfère à la version Java EE), la structure est créée pour vous et vous pouvez également lui dire où votre Applserver est installé et il se déploiera et lancera l'application pour vous.

en utilisant l'option" Exporter->fichier de guerre " vous permettra de sauvegarder le fichier de guerre.

14
répondu boxofrats 2009-06-16 14:39:22

si vous n'êtes pas sûr de savoir quoi faire et que vous partez de zéro, Maven peut vous aider à démarrer.

en suivant les étapes ci-dessous, vous pouvez obtenir une nouvelle configuration de projet de guerre parfaitement dans eclipse.

  1. télécharger et installer Maven
  2. Aller à la ligne de commande exécuter: mvn archetype:generate
  3. suivez les étapes indiquées - choisir le simple java web project (18) et un nom approprié.
  4. quand il est terminé, exécuter: mvn eclipse:eclipse
  5. Start Eclipse. Choisissez Fichier -> Importer -> projet Existant. Sélectionnez le répertoire où vous avez exécuté l'mvn objectifs.
  6. Qu'est ce que vous devriez maintenant avoir un très bon début d'une guerre de projet dans eclipse
  7. vous pouvez créer la guerre elle-même en lançant mvn package ou la déployer en mettant en place un serveur dans eclipse et en ajoutant simplement ajouter le projet à la serveur.

comme d'autres ont dit l'inconvénient d'utiliser maven est que vous devez utiliser les conventions maven. Mais je pense que si vous venez juste de commencer, apprendre les conventions est une bonne idée avant de commencer à faire les vôtres. Il n'y a rien pour vous empêcher de changer/reconfigurer à votre propre méthode préférée à un moment ultérieur.

Espérons que cette aide.

12
répondu Pablojim 2014-01-28 15:51:46
4
répondu Ilya Boyandin 2011-01-20 00:41:15

utiliser ant code de construction Je l'utilise pour mon projet SMS

<property name="WEB-INF" value="${basedir}/WebRoot/WEB-INF" />
<property name="OUT" value="${basedir}/out" />
<property name="WAR_FILE_NAME" value="mywebapplication.war" />
<property name="TEMP" value="${basedir}/temp" />

<target name="help">
    <echo>
        --------------------------------------------------
        compile - Compile
        archive - Generate WAR file
        --------------------------------------------------
    </echo>
</target>

<target name="init">
    <delete dir="${WEB-INF}/classes" />
    <mkdir dir="${WEB-INF}/classes" />
</target>

<target name="compile" depends="init">
    <javac srcdir="${basedir}/src" 
                destdir="${WEB-INF}/classes" 
                classpathref="libs">
    </javac>
</target>

<target name="archive" depends="compile">
    <delete dir="${OUT}" />
    <mkdir dir="${OUT}" />
    <delete dir="${TEMP}" />
    <mkdir dir="${TEMP}" />
    <copy todir="${TEMP}" >
        <fileset dir="${basedir}/WebRoot">
        </fileset>
    </copy>
    <move file="${TEMP}/log4j.properties" 
                    todir="${TEMP}/WEB-INF/classes" />
    <war destfile="${OUT}/${WAR_FILE_NAME}" 
                    basedir="${TEMP}" 
                    compress="true" 
                    webxml="${TEMP}/WEB-INF/web.xml" />
    <delete dir="${TEMP}" />
</target>

<path id="libs">
    <fileset includes="*.jar" dir="${WEB-INF}/lib" />
</path>

3
répondu sms 2009-11-12 05:56:21

une autre option serait de le construire automatiquement en utilisant Eclipse. Bien sûr, si vous avez un environnement d'intégration continue Ant ou Maven est recommandé. L'exportation alternative n'est pas très pratique car vous devez configurer à chaque fois que l'exportation des propriétés.

SUIT:

  1. activer" Archives de projet " support; cela pourrait dépendre de votre projet (je l'ai utilisé sur Java EE/Web project). Cliquez avec le bouton droit de la souris sur le répertoire racine du projet; configurer -> ajouter le Support des Archives du projet.

  2. allez créer une nouvelle archive dans les" archives de projet". Vous n'avez que l'option jar, mais nommez votre archive *.guerre.

  3. Configure Fileset-s, I. e quels fichiers inclure. La configuration typique est de configurer deux fichiers similaires à la configuration de L'assemblage de déploiement Web (propriété du projet).

    • copier /WebContent /
    • copier/construire/classes vers WEB-INF/classes (créer ce fichier après avoir défini le répertoire WEB-INF / classes dans l'archive)
  4. vous pourriez avoir besoin de tweeter la propriété fileset exclude en fonction de l'endroit où vous avez placé certains fichiers de configuration ou vous pourriez avoir besoin de plus de fichiers, mais l'idée est qu'une fois que vous avez configuré ceci vous n'avez pas besoin de le changer.

  5. construisez l'archive manuellement ou publiez directement sur le serveur; mais est aussi construit automatiquement pour vous par Eclipse

2
répondu arpadf 2013-05-30 07:00:07

une autre option courante est gradle.

http://www.gradle.org/docs/current/userguide/application_plugin.html

pour construire votre fichier war dans une application web:

Dans la construction.Grad, ajouter:

apply plugin: 'war'

puis:

./gradlew war

utilisez la disposition de la réponse acceptée ci-dessus.

2
répondu Charlie Dalsass 2017-09-27 19:34:31

solution plus simple qui rafraîchit également L'espace de travail Eclipse:

<?xml version="1.0" encoding="UTF-8"?>
<project name="project" default="default">    
    <target name="default">
        <war destfile="target/MyApplication.war" webxml="web/WEB-INF/web.xml">
            <fileset dir="src/main/java" />
            <fileset dir="web/WEB-INF/views" />
            <lib dir="web/WEB-INF/lib"/>
            <classes dir="target/classes" />
        </war>
        <eclipse.refreshLocal resource="MyApplication/target" depth="infinite"/>
    </target>
</project>
0
répondu Alex R 2015-03-28 17:40:32

Simpliste Shell code pour la création de la GUERRE des fichiers à partir d'un standard de l'Éclipse de Projet Web dynamique. Utilise le système de fichiers RAM (/dev / shm) sur une plate-forme Linux.

#!/bin/sh

UTILITY=$(basename "151900920")

if [ -z "" ] ; then
    echo "usage: $UTILITY [-s] <web-app-directory>..."
    echo "       -s ..... With source"
    exit 1
fi

if [ "" == "-s" ] ; then
    WITH_SOURCE=1
    shift
fi

while [ ! -z "" ] ; do
    WEB_APP_DIR=

    shift

    if [ ! -d $WEB_APP_DIR ] ; then
        echo "\"$WEB_APP_DIR\" is not a directory"
        continue
    fi

    if [ ! -d $WEB_APP_DIR/WebContent ] ; then
        echo "\"$WEB_APP_DIR\" is not a Web Application directory"
        continue
    fi

    TMP_DIR=/dev/shm/${WEB_APP_DIR}.$$.tmp
    WAR_FILE=/dev/shm/${WEB_APP_DIR}.war

    mkdir $TMP_DIR

    pushd $WEB_APP_DIR > /dev/null
    cp -r WebContent/* $TMP_DIR
    cp -r build/* $TMP_DIR/WEB-INF
    [ ! -z "$WITH_SOURCE" ] && cp -r src/* $TMP_DIR/WEB-INF/classes
    cd $TMP_DIR > /dev/null
    [ -e $WAR_FILE ] && rm -f $WAR_FILE
    jar cf $WAR_FILE .
    ls -lsF $WAR_FILE
    popd > /dev/null

    rm -rf $TMP_DIR
done
0
répondu Joe Horvath 2016-12-19 21:06:47

utilisez cette commande en dehors du dossier WEB-INF. Cela devrait créer votre fichier war. Ce est une méthode plus rapide que je connaisse.

vous aurez besoin de JDK 1.7+ installé pour réaliser cet exploit et les variables d'environnement qui pointent vers le répertoire bin de votre JDK.

jar -cvf projectname.war *

Lien De Référence

0
répondu XChikuX 2017-02-13 09:46:58

**de Faire de la Guerre de fichier dans Eclips Gaynemed de grain de projet web **

1.Projet d'importation:

2.Changer la source de données.groovy fichier

Comme ceci: "url="jdbc:postgresql://18.247.120.101:8432/MGP"

2.chnge AppConfig.xml

3.tuer la Java à partir du Gestionnaire des Tâches:

  1. exécuter le nettoyage, le système comand dans eclips

  2. run "prod war" suivi du nom du projet.

  3. vérifiez le fichier journal et trouvez le même .fichier war dans le répertoire de workbench avec la même date.

-2
répondu Ratnesh Kumar 2015-01-30 07:09:24