2013-05-02 105 views
44

我有一個tomcat服務器工作,並且在那裏我有一個webapp文件夾my_web_app從tomcat webapp文件夾生成war文件

我沒有部署該項目;我只有那個應用程序的文件夾(如TOMCAT_DIR/webapps/my_web_app)。

我需要的是一個WAR文件。我如何從這個webapp創建一個.war文件?

回答

105

您可以從現有文件夾中創建.war文件。

使用此命令

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

那麼項目使用的庫在Tomcar的lib文件夾中呢?他們是否需要放入戰爭檔案中?這個war文件會在另一個像JBoss的servlet容器中工作嗎? – 2015-07-21 16:15:31

+0

@ketan該命令是否需要任何輸入文件或清單,因爲我在執行步驟時遇到錯誤(表示該命令需要輸入或清單文件)?你可以幫幫我嗎?也FYI,我瀏覽了我得到的錯誤,但它(http://stackoverflow.com/questions/23422470/getting-error-while-creating-war-file)似乎沒有幫助。 – 2016-03-12 12:40:32

+0

我用這個來從webpack的結果創建一個war文件,而tomcat喜歡它。 – jkerak 2016-09-19 20:45:29

22

它就像建立一個WAR文件你的項目,你能做到在幾個方面(從Eclipse中,命令行,行家)。

如果你想從命令行執行的命令是

jar -cvf my_web_app.war * 

這意味着,「壓縮此目錄中的一切到一個名爲my_web_app.war文件」 (C =創建,V =冗長, f = file)

+0

一個喜歡解釋3個標誌的人(我在其他地方沒有看到這個) – 2017-07-06 11:57:08

4

有一種方法可以從eclipse創建項目的war文件。

首先創建一個用下面的代碼的XML文件,

與您的項目名稱替換HistoryCheck。現在

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

,在Project Explorer中右鍵點擊該XML文件運行AS-> Ant構建

你可以看到你的項目的WAR文件在項目文件夾。

+0

得到這個錯誤...目標buildwar在項目「中不存在,它在目標默認值中使用。 – 2014-12-24 11:09:00

1

在不同的目錄中創建war文件,然後jar命令可能嘗試壓縮正在創建的文件。

#!/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} 
相關問題