【问题标题】:Creating a WAR file using Java使用 Java 创建 WAR 文件
【发布时间】:2013-06-18 07:57:22
【问题描述】:

如何使用 Java 以编程方式为 Apache Tomcat 服务器创建可部署的 WAR 文件?

是否有此类任务的库?

我正在开发一个用于特殊目的的小型 IDE。 IDE 是用 Java 和 JavaScript 编写的,所以我需要使用它们创建 WAR 文件。

【问题讨论】:

  • 不要使用 Ant 而是使用 maven。在我看来,它更强大,也更容易使用。

标签: java tomcat war


【解决方案1】:

如果您想从代码构建它,请尝试从命令行使用

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("jar cvf /path/to/your/project/your-file.war");

当然,同样的事情也可以使用 ANT 或 Maven(只要这些工具安装在最终平台上)。

编辑:添加改进建议

【讨论】:

  • 我想以编程方式创建它,而不是使用 ANT 脚本(除非我能够以编程方式访问这些脚本)。
  • 但我不认为我是,是吗?
  • 命令行命令不需要 ant。你可以通过java调用它们,它会为你创建文件。正如你所说,你正在实现一个自己的 ide,我不知道你是否要实现 ant 支持。
  • 如何通过 Java 调用它们?只能通过Runtime.getRuntime().exec()命令,还是有更好的办法?
  • 我认为这是最佳实践 Runtime rt = Runtime.getRuntime();进程 pr = rt.exec("你的命令");
【解决方案2】:

我不知道库,但 WAR 文件只是一个具有不同结尾的 ZIP 文件。

只需创建内部文件夹结构和文件(谷歌搜索java代码)并打包为zip(我认为java也有方法,再次谷歌)并将文件从“myfile.zip”重命名为“myfile.zip”。战争”

【讨论】:

    【解决方案3】:

    我不知道您将如何使用您拥有的 IDE 来做到这一点。但是 WAR 文件具有以下结构:

    • 网络资源到根目录
    • 项目类(包括它们的包文件夹)转到文件夹 WEB-INF/classes
    • 项目依赖 jar 转到 WEB-INF/lib

    因此,如果您想手动构建 WAR,则需要在扩展名为 .war 的 zip 文件中创建该文件结构,并且需要将其复制到服务器的正确位置以进行部署。大多数服务器还允许“爆炸部署”,这意味着您不需要实际的战争文件,您只需将这些内容部署到与您的战争同名的目录(即“myapp.war”)。

    【讨论】:

      【解决方案4】:

      您可以通过多种方式执行此操作,例如,如果您使用的是 maven,则只需使用 <packaging>war</packaging>

      如前所述,您可以只导出战争,但这并不完全是“程序化的”。

      如果您使用的是 Ant - 您可以找到此 here 的教程

      【讨论】:

        【解决方案5】:
        <?xml version="1.0" ?> 
        

        <path id="compile.classpath">
            <fileset dir="WebContent/WEB-INF/lib">
                <include name="*.jar"/>
            </fileset>
        </path>
        
        <target name="init">
            <mkdir dir="build/classes"/>
            <mkdir dir="dist" />
        </target>
        
        <target name="compile" depends="init" >
            <javac destdir="build/classes" debug="true" srcdir="src">
                <classpath refid="compile.classpath"/>
            </javac>
        </target>
        
        <target name="war" depends="compile">
            <war destfile="/APP/jboss-5.1.0.GA/server/all/deploy/DispatchActionEx.war" webxml="WebContent/WEB-INF/web.xml">         
                <fileset dir="WebContent"/>
                <lib dir="WebContent/WEB-INF/lib"/>         
                <classes dir="build/classes"/>
            </war>
        </target>
        
        <target name="clean">       
        </target>
        

        1. 只写一个build.xml文件(我已经举了一个例子),
        2. 将“项目名称”和“war destfile”更改为“.../apache-tomcat/webapps/projectname.war”
        3. 把它放在你的项目文件夹中
        4. 在 Eclipse 中打开它。
        5. 右键点击>>运行方式>>ant build
        6. 检查是否在apache-tomcat的webapps文件夹下创建了war文件

        【讨论】:

        • 这不能回答问题。我想为我的own IDE 创建一个WAR 文件programmatically in Java。因此,使用第 3 方 IDE 根本不是解决方案。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-28
        相关资源
        最近更新 更多