gwt 를 직접 컴파일 하기 / compile gwt / gwtc
ant 를 이용해서 GWT compiler 를 실행시켜 보자.
GWT compile
framework 의 sample 에 보면 build.xml 이 있다. 이녀석은 make 의 Makefile 같은 녀석이다. 이 녀석을 드려다 보면 compile 하는 법을 쉽게 알 수 있다.
test 를 위해서 ant 를 설치해야 한다. 만약 eclipse 가 설치되어 있다면 깔려있을 수도 있다. plugin 을 뒤져보자. javaEE version 을 설치한 경우에는 아래와 같이 찾을 수 있다.
<eclipse_path>\plugins\org.apache.ant_1.8.4.v201303080030\bin\ant.bat
그럼 이제부터 sample 에 있는 build.xml 을 살펴보자. 아래 경로에 있는 녀석을 살펴보자.
<gwt-2.6.0_path>\samples\Hello\build.xml
target gwtc
안을 보면 아래와 같이 gwtc 라는 부분을 찾을 수 있다. 이 녀석을 실행하면 java 를 변환해서 javascript 로 만들 수 있다.<target name="gwtc" depends="javac" description="GWT compile to JavaScript (production mode)"> <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> <classpath> <pathelement location="src"/> <path refid="project.class.path"/> <pathelement location="../../validation-api-1.0.0.GA.jar" /> <pathelement location="../../validation-api-1.0.0.GA-sources.jar" /> </classpath> <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError --> <jvmarg value="-Xmx256M"/> <arg line="-war"/> <arg value="war"/> <!-- Additional arguments like -style PRETTY or -logLevel DEBUG --> <arg line="${gwt.args}"/> <arg value="com.google.gwt.sample.hello.Hello"/> </java> </target> <target name="javac" depends="libs" description="Compile java source to bytecode"> <mkdir dir="war/WEB-INF/classes"/> <javac srcdir="src" includes="**" encoding="utf-8" destdir="war/WEB-INF/classes" source="1.5" target="1.5" nowarn="true" debug="true" debuglevel="lines,vars,source"> <classpath refid="project.class.path"/> </javac> <copy todir="war/WEB-INF/classes"> <fileset dir="src" excludes="**/*.java"/> </copy> </target> ... <path id="project.class.path"> <pathelement location="war/WEB-INF/classes"/> <pathelement location="${gwt.sdk}/gwt-user.jar"/> <fileset dir="${gwt.sdk}" includes="gwt-dev*.jar"/> <!-- Add any additional non-server libs (such as JUnit) --> <fileset dir="war/WEB-INF/lib" includes="**/*.jar"/> </path>
Compile
gwtc 를 실행하면 아래와 같이 compile 이 된다.c:\Program Files\gwt\gwt-2.6.0\samples\Hello>"c:\Program Files\gwt\eclipse\plugins\org.apache.ant_1.8.4.v201303080030\bin\ant.bat" gwtc Buildfile: c:\Program Files\gwt\gwt-2.6.0\samples\Hello\build.xml libs: javac: [javac] c:\Program Files\gwt\gwt-2.6.0\samples\Hello\build.xml:29: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds gwtc: [java] Compiling module com.google.gwt.sample.hello.Hello [java] Compiling 5 permutations [java] Compiling permutation 0... [java] Compiling permutation 1... [java] Compiling permutation 2... [java] Compiling permutation 3... [java] Compiling permutation 4... [java] Compile of permutations succeeded [java] Linking into c:\Program Files\gwt\gwt-2.6.0\samples\Hello\war\hello [java] Link succeeded [java] Compilation succeeded -- 14.941s BUILD SUCCESSFUL Total time: 17 seconds
Default target
기본적으로 ant 를 실행하면 build.xml 을 바라보게 되는데, 이때 build.xml 에 아래처럼 default target 을 지정해 놓았기 때문에 gwtc 가 실행될 것이다. 굳이 gwtc 를 입력하지 않아도 된다는 이야기이다.<project name="Hello" default="build" basedir=".">
...
<target name="build" depends="gwtc" description="Build this project" />
결과
그러면 아래와 같이 결과를 확인할 수 있다.Others
직접 command 창에서 compile 을 시도해 보다가 관뒀다. 아래는 그 내용이다. 참고로 여기서 compile 을 java code 를 .js 로 만들어 주는 compile 을 이야기 한다..java -> .js
Compiler.java
아래 경로에 있는 Compiler.java 를 실행시키면 된다.<gwt-2.6.0_path>\gwt-dev.jar\com\google\gwt\dev\Compiler.java
일단 실행시키면, 아래와 같은 결과가 나온다.
c:\Program Files\gwt\gwt-2.6.0>java -cp ./gwt-dev.jar com.google.gwt.dev.Compiler Missing required argument 'module[s]' Google Web Toolkit 2.6.0 Compiler [-logLevel level] [-workDir dir] [-[no]compileReport] [-X[no]checkCasts] [-X[no]classMetadata] [-[no]draftCompile] [-[no]checkAssertions] [-X[no]closureCompiler] [-XfragmentCount numFragments] [-XfragmentMerge numFragments] [-gen dir] [-optimize level] [-[no]saveSource] [-style style] [-[no]failOnError] [-X[no]enforceStrictResources] [-[no]validateOnly] [-sourceLevel [auto, 1.6, 1.7]] [-localWorkers count] [-war dir] [-deploy dir] [-extra dir] [-saveSourceOutput dir] module[s] ... ...
src
module 인자(argument)가 필요하다. module 인자를 src 를 넣고 다시 실행했다.c:\Program Files\gwt\gwt-2.6.0>java -cp ./gwt-dev.jar com.google.gwt.dev.Compiler d:\mine\programming\gwt\gwtia-ch03-basicproject\src\ Loading inherited module 'd:\mine\programming\gwt\gwtia-ch03-basicproject\src\' [ERROR] Unable to find 'd:\mine\programming\gwt\gwtia-ch03-basicproject\src\.gwt.xml' on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source?
이부분은 시도하다가 그만뒀지만, 아래 부분을 참조하면 된다.
<target name="gwtc" depends="javac" description="GWT compile to JavaScript (production mode)"> <java failonerror="true" fork="true" classname="com.google.gwt.dev.Compiler"> <classpath> <pathelement location="src"/> <path refid="project.class.path"/> <pathelement location="C:/Program Files/gwt/gwt-2.6.0/validation-api-1.0.0.GA.jar" /> <pathelement location="C:/Program Files/gwt/gwt-2.6.0/validation-api-1.0.0.GA-sources.jar" /> </classpath> <!-- add jvmarg -Xss16M or similar if you see a StackOverflowError --> <jvmarg value="-Xmx256M"/> <arg line="-war"/> <arg value="war"/> <!-- Additional arguments like -style PRETTY or -logLevel DEBUG --> <arg line="${gwt.args}"/> <arg value="com.namh.gwtstats.GwtStats"/> </java> </target>
See Also
Reference
- Understanding the GWT Compiler, GWT project homepage
댓글 없음:
댓글 쓰기