Jak tworzyć pliki wojenne

Jakie są najlepsze praktyki tworzenia plików wojennych (za pomocą eclipse) do uruchomienia na tomcacie? samouczki, linki, przykłady są bardzo cenione.

Author: martin clayton, 2009-06-16

13 answers

Możesz użyć Ant aby skonfigurować, skompilować, WAR i wdrożyć swoje rozwiązanie.

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

Możesz następnie wykonać jedno kliknięcie w Eclipse, aby uruchomić ten cel Ant. Oto przykłady każdego z kroków:

Warunki wstępne

Zakładamy, że masz swój kod zorganizowany jak:

  • ${basedir}/src: Pliki Java, właściwości, pliki konfiguracyjne XML
  • ${basedir}/web: Twoje pliki JSP
  • ${basedir}/web/lib: wszelkie słoiki wymagane w czasie wykonywania
  • ${basedir}/web/META-INF: Twój manifest
  • ${basedir}/web/WEB-INF: Twoja sieć.pliki xml

Set up

Zdefiniuj setup zadanie, które tworzy katalog dystrybucji i kopiuje wszelkie artefakty, które muszą być bezpośrednio wywołane:

<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>

Compile

Zbuduj pliki Javy na klasy i skopiuj wszystkie artefakty spoza Javy, które znajdują się pod src, ale muszą być dostępne w czasie wykonywania (np. właściwości, pliki XML itp.):

<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>

Zbuduj wojnę

Create the WAR :

<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>

Na koniec możesz skonfigurować zadanie wysłania wojny bezpośrednio do lokalizacji rozmieszczenia Tomcat:]}
<target name="deploy">
    <copy file="My.war" todir="${tomcat.deploydir}" />
</target>

Kliknij i idź!

Gdy wszystko to zostanie skonfigurowane, po prostu uruchomienie default docelowego z Eclipse skompiluje, wojny, i wdrożyć swoje rozwiązanie.

Zaletą tego podejścia jest to, że będzie ono działać zarówno poza Eclipse, jak i wewnątrz Eclipse i może być użyte do łatwego udostępniania strategii wdrożenia (np. poprzez kontrolę źródła) z innymi programistami, którzy również pracują nad Twoim projektem.

 94
Author: David Citron,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-20 00:40:49

Zawsze wybierałem eksport z Eclipse. Buduje plik wojny i zawiera wszystkie niezbędne pliki. Pod warunkiem, że stworzyłeś projekt jako projekt internetowy, to wszystko, co musisz zrobić. Eclipse sprawia, że jest to bardzo proste do zrobienia.

 35
Author: Mech Software,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 14:12:03

Używamy Mavena (starszego brata Anta) do wszystkich naszych projektów java, i ma bardzo sprytną wtyczkę wojenną. Tutoriale i użycie można znaleźć tam.

Jest o wiele prostszy od Ant, w pełni kompatybilny z Eclipse (użyj maven eclipse: eclipse do tworzenia projektów Eclipse) i łatwy w konfiguracji.

Strona główna Mavena

Maven WAR plugin

Przykładowa Konfiguracja:

<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
Author: mikek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-22 10:55:36

Plik war jest po prostu plikiem jar z rozszerzeniem war, ale to, co sprawia, że działa, to sposób, w jaki zawartość jest faktycznie zorganizowana.

Samouczek J2EE / Java EE może być początkiem:

Http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/WebComponents3.html

A Specyfikacja Servleta zawiera gory szczegoly:

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

Jeśli stworzysz nowy projekt WWW w Eclipse (mam na myśli Java EE wersja), struktura jest stworzona dla Ciebie i możesz również powiedzieć, gdzie jest zainstalowany Appserver i wdroży i uruchomi aplikację dla Ciebie.

Użycie opcji "Export- > plik wojenny" pozwoli Ci zapisać plik wojenny.

 14
Author: boxofrats,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-06-16 14:39:22

Jeśli nie jesteś pewien, co robić i zaczynasz od zera, Maven może pomóc Ci zacząć.

Wykonując poniższe kroki możesz uzyskać nową konfigurację projektu wojennego w eclipse.

  1. Pobierz i zainstaluj Maven
  2. Uruchom wiersz poleceń: mvn archetype:generate
  3. wykonaj odpowiednie kroki-wybierz prosty projekt java web (18) i odpowiednią nazwę.
  4. po zakończeniu uruchom: mvn eclipse:eclipse
  5. Rozpocznij Eclipse. Wybierz Plik - > Importuj - >Istniejący projekt. Wybierz katalog, w którym uruchomiłeś bramki mvn.
  6. to jest to, powinieneś teraz mieć bardzo dobry początek projektu wojennego w eclipse
  7. możesz stworzyć samą wojnę uruchamiając mvn package lub wdrożyć ją poprzez skonfigurowanie serwera w eclipse i po prostu dodanie projektu do serwera.

Jak niektórzy inni mówili minusem korzystania z Mavena jest to, że musisz używać konwencji Mavena. Ale myślę, że jeśli dopiero zaczynasz, uczysz się konwencje to dobry pomysł, zanim zaczniesz tworzyć własne. Nic nie powstrzyma cię przed zmianą / refaktoryzacją na preferowaną metodę w późniejszym momencie.

Mam nadzieję, że to pomoże.
 12
Author: Pablojim,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-28 15:51:46

Użyj zadania Ant war

 4
Author: Ilya Boyandin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-01-20 00:41:15

Użyj kodu budowy ant Używam tego do mojego projektu 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
Author: sms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-11-12 05:56:21

Inną opcją byłoby zbudowanie go automatycznie przy użyciu Eclipse. Oczywiście jeśli masz ciągłą integrację środowiska Ant lub Maven jest zalecane. Alternatywa eksportu nie jest zbyt wygodna, ponieważ musisz każdorazowo konfigurować właściwości eksportu.

kroki:

  1. Włącz obsługę "Archiwum projektów"; może to zależeć od Twojego projektu(użyłem go w Java EE / Web project). Kliknij prawym przyciskiem myszy główny katalog projektu; Konfiguracja - > Dodaj archiwa projektu Wsparcie.

  2. Idź i utwórz nowe archiwum w" archiwum projektu " Top reż. Masz tylko opcję jar, ale podaj nazwę archiwum*.wojna.

  3. Konfiguracja Fileset-s, czyli jakie pliki mają być dołączone. Typowe jest skonfigurowanie dwóch zestawów plików podobnych do konfiguracji Web Deployment Assembly (właściwość project).

    • copy / WebContent to /
    • skopiuj / build / classes do WEB-INF / classes (Utwórz ten zestaw plików po zdefiniowaniu katalogu WEB-INF / classes w archiwum)
  4. W zależności od tego, gdzie umieściłeś niektóre pliki konfiguracyjne, być może będziesz musiał dodać tweeta do właściwości fileset exclude lub potrzebujesz więcej zestawów plików, ale chodzi o to, że po skonfigurowaniu tej właściwości nie musisz jej zmieniać.

  5. Zbuduj archiwum ręcznie lub opublikuj bezpośrednio na serwerze; ale jest również automatycznie budowane dla Ciebie przez Eclipse

 2
Author: arpadf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-30 07:00:07

Inną powszechną opcją jest gradle.

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

Aby zbudować plik wojny w aplikacji internetowej:

W budowie.gradle, dodaj:

apply plugin: 'war'

Wtedy:

./gradlew war

Użyj układu z zaakceptowanej odpowiedzi powyżej.

 2
Author: Charlie Dalsass,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-27 19:34:31

Prostsze rozwiązanie odświeżające również obszar roboczy 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
Author: Alex R,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-28 17:40:32

Uproszczony Kod powłoki do tworzenia plików wojennych ze standardowego projektu Eclipse dynamic Web. Używa systemu plików RAM (/dev / shm) na platformie Linux.

#!/bin/sh

UTILITY=$(basename $0)

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

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

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

    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
Author: Joe Horvath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-19 21:06:47

Użyj tego polecenia poza folderem WEB-INF. To powinno stworzyć Twój plik wojenny. To najszybsza metoda jaką znam.

Będziesz potrzebował zainstalowanego JDK 1.7+ i zmiennych środowiskowych, które wskazują na katalog bin twojego JDK.

jar -cvf projectname.war *

Link Referencyjny

 0
Author: XChikuX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-13 09:46:58

**Making War file in Eclips Gaynemed of grails web project * *

1.Import projektu:

2.Zmień źródło danych.groovy file

Like this: url= "JDBC: postgresql: / / 18.247.120.101: 8432 / PGMS"

2.chnge AppConfig.xml

3.Zabij Javę z Menedżera zadań:

  1. Uruchom clean comand w eclips

  2. Uruchom "prod war" pod nazwą projektu.

  3. Sprawdź plik dziennika i znajdź to samo .plik war w katalogu stół warsztatowy z tą samą datą.

 -2
Author: Ratnesh Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-30 07:09:24