2013-05-02 10 views
44

Ich habe einen Tomcat-Server arbeiten, und ich habe einen Webapp-Ordner my_web_app.Erzeuge WAR-Datei von Tomcat Webapp-Ordner

Ich habe das Projekt nicht bereitgestellt; Ich habe nur diesen Ordner dieser Anwendung (wie TOMCAT_DIR/webapps/my_web_app).

Was ich brauche, ist eine WAR-Datei. Wie kann ich eine .war Datei von dieser Webanwendung erstellen?

Antwort

105

Sie können WAR-Datei aus Ihrem vorhandenen Ordner zurück erstellen.

Mit diesem Befehl

cd /to/your/folder/location 
jar -cvf my_web_app.war * 
+0

Was ist mit den Bibliotheken, die das Projekt verwendet, die in Tomcar lib-Ordner sind? Müssen sie in die Kriegsakte aufgenommen werden? Funktioniert diese WAR-Datei in einem anderen Servlet-Container wie JBoss? –

+0

@ketan Erfordert der Befehl irgendwelche Eingabedateien oder Manifeste, weil ich einen Fehler erhalten habe (der besagt, dass der Befehl die Eingabe- oder Manifestdateien erfordert), als ich Ihre Schritte befolgte? Kannst du mir helfen? Auch FYI, ich suchte nach dem Fehler, den ich bekam, aber es (http://stackoverflow.com/questions/23422470/getting-error-while-creating-war-file) scheint nicht zu helfen. –

+0

Ich habe dies verwendet, um eine WAR-Datei aus den Ergebnissen von Webpack zu erstellen, und tomcat hat es gemocht. – jkerak

22

Es ist wie eine WAR Datei Ihres Projekts erstellen, können Sie es auf verschiedene Weise tun können (von Eclipse-Befehlszeile, Maven).

Wenn Sie von der Kommandozeile tun wollen, ist der Befehl

jar -cvf my_web_app.war * 

Das bedeutet, (c "alles in diesem Verzeichnis in eine Datei namens my_web_app.war komprimieren" = erstellen, v = verbose, f = Datei)

+0

Ein wie für die Erklärung der 3 Flags (ich habe das nirgendwo sonst gesehen.) –

4

Es gibt eine Möglichkeit, eine WAR-Datei Ihres Projekts aus Eclipse zu erstellen.

Zuerst wird ein eine XML-Datei mit dem folgenden Code erstellen,

ersetzen HistoryCheck mit Ihrem Projektnamen ein.

<?xml version="1.0" encoding="UTF-8"?> 
<project name="HistoryCheck" basedir="." default="default"> 
    <target name="default" depends="buildwar,deploy"></target> 
    <target name="buildwar"> 
     <war basedir="war" destfile="HistoryCheck.war" webxml="war/WEB-INF/web.xml"> 
      <exclude name="WEB-INF/**" /> 
      <webinf dir="war/WEB-INF/"> 
       <include name="**/*.jar" /> 
      </webinf> 
     </war> 
    </target> 
    <target name="deploy"> 
     <copy file="HistoryCheck.war" todir="." /> 
    </target> 
</project> 

Klicken Sie nun im Projekt-Explorer rechts auf dieser xml Datei und Run as-> ant build

Sie die WAR-Datei des Projekts in Ihrem Projektordner zu sehen.

+0

Erhalte diesen Fehler ... Target buildwar existiert nicht im Projekt ". Es wird von der Vorgabe verwendet. –

1

Erstellen Sie die WAR-Datei in einem anderen Verzeichnis als dem Inhalt, andernfalls könnte der Befehl jar versuchen, die zu erstellende Datei zu komprimieren.

#!/bin/bash 

set -euo pipefail 

war=app.war 
src=contents 

# Clean last war build 
if [ -e ${war} ]; then 
    echo "Removing old war ${war}" 
    rm -rf ${war} 
fi 

# Build war 
if [ -d ${src} ]; then 
    echo "Found source at ${src}" 
    cd ${src} 
    jar -cvf ../${war} * 
    cd .. 
fi 

# Show war details 
ls -la ${war}