构建GWT应用程序的最佳方法

构建GWT应用程序的最佳方法,gwt,Gwt,将GWT应用程序构建到.war文件的最佳方法是什么 我已经有一个ant文件来构建我的项目,但是,它非常难看和缓慢。我想你们中的一个有更好的选择 谢谢使用maven。它已被证明并常用于构建java和GWT项目 您应该使用GWT maven插件: 但您应该知道:GWT构建总是很慢(取决于代码量)。因此,您只能将完整构建用于生产目的。在maven中,您只能运行特定的子任务,并且可以添加配置文件。有关更多信息,请阅读插件 UPD: 因此,您只能将完整构建用于生产目的 事实并非如此。但对于常见的开发过程

将GWT应用程序构建到.war文件的最佳方法是什么

我已经有一个ant文件来构建我的项目,但是,它非常难看和缓慢。我想你们中的一个有更好的选择


谢谢使用maven。它已被证明并常用于构建java和GWT项目

您应该使用GWT maven插件:

但您应该知道:GWT构建总是很慢(取决于代码量)。因此,您只能将完整构建用于生产目的。在maven中,您只能运行特定的子任务,并且可以添加配置文件。有关更多信息,请阅读插件

UPD:

因此,您只能将完整构建用于生产目的


事实并非如此。但对于常见的开发过程,您不需要每次都运行GWT编译。当您在调试模式下运行GWT时,它将在托管模式下运行。所以你不必把时间浪费在重建上

我个人使用maven,但是嘿,每个人都有自己的。(至少您没有使用Makefile)

但是,编译GWT应用程序的速度会很慢。GWT编译器需要为常见的浏览器类型编译多种风格的javascript,甚至谷歌工程师也不能影响物理定律(可能在下一版本的guava中)


我的项目编译了6个独立的迭代,并生成了一个40MB的war。优点是,一旦我把它投入战争,Tomcat的性能就大大削弱了托管模式的性能。

我创建了一个比以前更好的ant构建,完整的代码是:

<?xml version="1.0" encoding="UTF-8"?>
<project name="Build GPA" basedir="." default="war">

    <property name="gwt.module.name" value="com.geekvigarista.scrummanager.GWT_ScrumManager"/>
    <property name="server.resources.name" value="server_resources"/>
    <property name="jar.name" value="gpa.jar"/>
    <property name="war.name" value="gpa.war"/>
    <property name="src.dir" location="src"/>
    <property name="server.resources.dir" location="war/${server.resources.name}"/>
    <property name="build.dir" location="build"/>    
    <property name="build.server.resources.dir" location="war/WEB-INF/classes/server_resources"/>        
    <property name="lib.dir" location="war/WEB-INF/lib"/>
    <property name="gwt.client.dir" location="com/geekvigarista/scrummanager/client"/>

    <path id="project.classpath">        
        <fileset dir="${lib.dir}">
            <include name="**/*.jar"/>
        </fileset>
    </path>  

    <target name="prepare">
        <mkdir dir="${build.dir}"/>
    </target>

    <target name="clean">
        <delete dir="${build.dir}"/>
    </target>  

    <!-- Compile the java source code using javac -->
    <target name="compile" depends="prepare">        
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath refid="project.classpath"/>
        </javac>        
    </target>       
    <!-- Invoke the GWT compiler to create the Javascript for us -->
   <target name="gwt-compile" depends="compile">
        <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler">
            <classpath>
                <!-- src dir is added to ensure the module.xml file(s) are on the classpath -->
                <pathelement location="${src.dir}"/>                
                <pathelement location="${build.dir}"/>
                <path refid="project.classpath"/>
            </classpath>
            <jvmarg value="-Xmx512M"/>
            <arg value="${gwt.module.name}"/>
         </java>
     </target>
    <!-- Package the compiled Java source into a JAR file -->
    <target name="jar" depends="compile">        
        <jar jarfile="${lib.dir}/${jar.name}" basedir="${build.dir}/">
            <!-- Don't wrap any of the client only code into the JAR -->
            <exclude name="${gwt.client.dir}/**/*.class"/>
        </jar>    
    </target>
    <!-- Copy the static server resources into the required 
    directory ready for packaging -->    
    <target name="copy-resources">
        <copy todir="${build.server.resources.dir}" preservelastmodified="true">
            <fileset dir="${server.resources.dir}"/>            
        </copy>
    </target>    
    <!-- Package the JAR file, Javascript, static resources 
    and external libraries into a WAR file -->
    <target name="war" depends="gwt-compile, jar, copy-resources">
        <war basedir="war" destfile="${war.name}" webxml="war/WEB-INF/web.xml">
            <exclude name="WEB-INF/**" />
            <exclude name="${server.resources.name}/**"/>
            <webinf dir="war/WEB-INF/">
                <include name="classes/${server.resources.name}/**" />
                <include name="**/*.jar" />
                <exclude name="**/gwt-dev.jar" />
                <exclude name="**/gwt-user.jar" />
            </webinf>
        </war>
    </target>    
</project>

它需要war文件夹中名为“服务器资源”的文件夹。
这个解决方案对我很有效。

我听说常春藤。。。你知道吗?我必须承认我在使用Maven时遇到了各种各样的问题。我需要花时间来理解如何正确地使用它来设置东西,特别是对于GWT。FWIW,我只是使用右键单击上下文菜单中的“发布”选项,在服务器选项卡中列出的服务器上。我同意maven需要很好地理解其流程。但由于maven在java世界中经常使用,因此值得学习。对不起,我不明白-哪一个上下文菜单?某种IDE?