【问题标题】:Generate war file from tomcat webapp folder从tomcat webapp文件夹生成war文件
【发布时间】:2013-04-26 20:43:10
【问题描述】:

我有一个 tomcat 服务器工作,我有一个 webapp 文件夹my_web_app。

我没有部署项目;我只有该应用程序的那个文件夹(如TOMCAT_DIR/webapps/my_web_app)。

我需要的是一个 WAR 文件。如何从这个 webapp 创建一个.war 文件?

【问题讨论】:

    标签: java tomcat


    【解决方案1】:

    您可以从现有文件夹创建 .war 文件。

    使用这个命令

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

    【讨论】:

    • 项目使用的位于 Tomcar 的 lib 文件夹中的库怎么样?是否需要将它们放入战争文件中?该 war 文件是否可以在 JBoss 等另一个 servlet 容器中工作?
    • @ketan 该命令是否需要任何输入文件或清单,因为当我按照您的步骤操作时出现错误(说该命令需要输入或清单文件)?你可以帮帮我吗?另外仅供参考,我浏览了我得到的错误,但它 (stackoverflow.com/questions/23422470/…) 似乎没有帮助。
    • 我用这个从webpack的结果中创建了一个war文件,tomcat很喜欢。
    【解决方案2】:

    就像为您的项目创建一个WAR 文件一样,您可以通过多种方式(从 Eclipse、命令行、maven)进行操作。

    如果你想从命令行做,命令是

    jar -cvf my_web_app.war * 
    

    这意味着,“将此目录中的所有内容压缩到一个名为 my_web_app.war 的文件中” (c=create, v=verbose, f=file)

    【讨论】:

    • 对 3 个标志的解释类似(我在其他任何地方都没有见过。)
    【解决方案3】:

    有一种方法可以从 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>
    

    现在,在项目资源管理器中右键单击该 xml 文件并Run as-> ant build

    你可以在你的项目文件夹中看到你项目的war文件。

    【讨论】:

    • 出现此错误... 项目中不存在目标 buildwar"。它从目标默认值开始使用。
    【解决方案4】:

    在内容所在的不同目录中创建 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}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      相关资源
      最近更新 更多