【问题标题】:create a .war file from gwt-project从 gwt-project 创建一个 .war 文件
【发布时间】:2011-07-21 03:50:13
【问题描述】:

如何在 Eclipse 中从我的 gwt 项目创建 .war 文件?

【问题讨论】:

标签: java gwt tomcat war


【解决方案1】:

我一直使用 Ant 构建文件,所以项目一键编译打包成一个 war。

在您的项目中添加一个 xml 文件,内容如下:

<project name="test" basedir="." default="default">
<property name="src.dir" value="src" />
<property name="build.dir" value="war" />
<path id="compile.classpath">
    <fileset dir="${build.dir}/WEB-INF/lib">
        <include name="**/*.jar" />
        <include name="**/*.xml" />
    </fileset>
</path>

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

<target name="gwtc" description="GWT compile to JavaScript">
    <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
        <classpath>
            <pathelement location="${src.dir}" />
            <path refid="compile.classpath" />
        </classpath>
        <arg line="-logLevel INFO" />
        <jvmarg value="-Xmx1024M" />
        <arg value="YourProject.EntryPointClass" />
    </java>
</target>

<target name="buildwar">
    <war basedir="war" destfile="YourProject.war" webxml="war/WEB-INF/web.xml">
        <exclude name="WEB-INF/**" />
        <webinf dir="war/WEB-INF/">
            <include name="**/gwt-servlet.jar" />
            <include name="**/classes/**" />
        </webinf>
    </war>
</target>

<target name="deploy">
    <copy file="YourProject.war" todir="." />
</target>

</project>

(将 `YourProject.EntryPointClass 编辑为您的 EntryPoint 类的路径)

您需要将 gwt-user.jargwt-dev.jar 添加到您的项目构建路径(右键单击您的项目 -> 构建路径 -> 添加外部存档)。

如果您现在查看“问题”视图,您会收到一条警告,指出这两个文件在服务器的类路径中不可用。您可以使用 QuickFix 将其复制到 WEB-INF/lib 或隐藏警告。构建文件不会在 war-file 中包含这两个文件。

编译和创建文件所需要做的就是右键单击 xml 文件并选择 run as Ant Build。

【讨论】:

  • xml文件没有正确结束,为了完整性,请修复。
  • 这个答案中的方向措辞是否应该是“您的入口点类的路径”,而不是“您的模块文件的路径 (.gwt.xml)”?在我的例子中(来自官方 GWT 教程:gwtproject.org/doc/latest/tutorial/create.html),最终是“com.google.gwt.sample.stockwatcher.StockWatcher”,其中 com 是 src 下的第一个目录,而 StockWatcher 是 .该路径末尾的 gwt.xml 模块文件(使用该文件成功编译和 .war)。相反,在此之前输入 EntryPoint 类的 Java .class 文件的路径不起作用。
  • 只是为那些通过在这里明确看到它而得到帮助的人指出这些 [也许是显而易见的事情]...我不确定这是否绝对必要,但我也更改了 "
  • 仅供参考:.war 将放置在 Eclipse 项目路径的根目录下。这与我放置此 build.xml 的位置相同,但在 Eclipse 中不可见(仅在我的文件系统资源管理器中)。
  • 我认为“您需要将 gwt-user.jar 和 gwt-dev.jar 添加到您的项目构建路径”与将 GWT SDK 添加到项目构建路径相同(因为 SDK 包含那些罐子)?我不确定,因为我有 SDK,但我仍然必须手动将这些 jar 添加到 WEB-INF/lib 以防止“错误:无法找到或加载主类 com.google.gwt.dev.Compiler”
【解决方案2】:

使用 Eclipse:

  1. 右击项目

  2. 选择 Google→GWT 编译

  3. 编译完成后,控制台会显示i.e.

    链接到 /home/janus/bpworkspace/gwtwerkstatt2/war/gwtwerkstatt2

    链接成功

    编译成功——28.623s

  4. 打开终端并导航到目录

  5. 创建 WAR:jar cv * &gt; /tmp/myGWTproject.war

  6. 您现在可以使用 jetty-runner 或类似工具启动它:java -jar jetty-runner-8.1.7.v20120910.jar /tmp/myGWTproject.war

【讨论】:

  • 请注意任何像我一样偶然发现此答案的人:您必须执行“jar cvf YourWar.war”。来自 war 目录,而不是步骤 3 中链接到的目录。
  • 如果您的项目有任何项目依赖项,您可能还需要编译它们并将 .jar 文件放入 war/WEB-INF/lib 文件夹,然后再创建 .war 文件。您必须在它们更新时重复此操作。
【解决方案3】:

我刚刚找到了这个解决方案,太棒了:) 只需安装 jar 并享受解压到 war 文件的过程。

项目现场 http://code.google.com/p/gwt-project-export-wizard/

【讨论】:

    【解决方案4】:

    也可以使用 webAppCreator 来生成 Ant 构建文件。

    webAppCreator 附带 GWT SDK 和 Eclipse GWT 插件。首先定位GWT插件目录

    find $HOME/.eclipse/ -name "*gwt*sdk*"
    

    这将输出 GWT 插件目录路径。该目录具有 gwt 目录,类似于 gwt-2.4.0。 WebAppCreator 将在此目录中。将此目录设置为 GWTSDK_HOME。

    export GWTSDK_HOME=/home/m/.eclipse/org.eclipse.platform_3.7.0_1364963873/plugins/com.google.gwt.eclipse.sdkbundle_2.4.0.v201201120043-rel-r37/gwt-2.4.0
    

    使 webAppCreator 可执行

    chmod 755 $GWTSDK_HOME/webAppCreator
    

    现在在某个临时目录中使用 webAppCreator 创建一个项目。

    $GWTSDK_HOME/webAppCreator -out fins in.m.fins.Fins
    

    in.m.fins.Fins 是模块名称。这必须与 Eclipse 工作区中项目的 gwt.xml 相匹配。如果你的 gwt.xml 是 src/in/m/fins/Fins.gwt.xml 那么模块名称应该是 in.m.fins.Fins

    -out fins 将在 fins 目录中创建项目和 build.xml。将生成的 build.xml 文件复制到 Eclipse 工作区中的项目中。

    在 Eclipse Ant Window 中运行 war 目标以将您的项目打包为 war

    【讨论】:

      【解决方案5】:

      你必须从这里安装 GWT 设计器

      http://dl.google.com/eclipse/inst/d2gwt/latest/3.7

      1. 在主面板上的 Eclipse 中单击“在应用服务器上部署模块”(它在蓝色 google 按钮旁边)。
      2. 选择战争文件名和存储位置
      3. 点击确定

      就是这样。适用于我的 GWT 2.4.0、Eclipse 4.2 的 Google 插件、Eclipse Juno

      【讨论】:

        【解决方案6】:

        供将来参考:您将在http://blog.elitecoderz.net/ 上找到另一个关于如何使用 Eclipse 创建 .war 的教程。

        【讨论】:

        • 链接已失效。
        【解决方案7】:

        先编译你的项目。然后: 1. 打开您的项目。 2. 导航到战争文件夹。 3. 转到文件>导出>存档文件 4. 将您的战争文件夹导出为 zip 文件。 5. 将您的文件扩展名形式 .zip 更改为 .war 6. 保持冷静,享受你的战争档案。

        【讨论】:

          【解决方案8】:

          编译您的项目。那么:

          1. 打开您的项目。
          2. 导航到战争文件夹。
          3. 转到文件>导出>存档文件
          4. 将您的战争文件夹导出为 zip 文件。
          5. 将文件扩展名从 .zip 更改为 .war
          6. 保持冷静,享受战争档案。

          【讨论】:

          • 我不认为这是 Op 要求的,尽管问题可能暗示了这一点。
          猜你喜欢
          • 1970-01-01
          • 2011-08-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-07-05
          • 2011-08-09
          • 2014-07-27
          相关资源
          最近更新 更多