1. 程式人生 > >ant使用JDT 編譯多種編碼檔案方案

ant使用JDT 編譯多種編碼檔案方案

在實際的java ant打包的專案中遇到多種編碼並稱的情況,導致使用一次具體的便宜不能將目標class輸出。這個時候可以使用jdt外掛(ecj)編譯指定編碼,通過具體執行某次編譯的檔案和編碼從而最後將檔案彙總,得到預期的效果。

        ant檔案的寫法如下:

<!-- jdt編譯器 -->
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdatper" />
<property name="compiler.args" value="-encoding UTF-8 -verbose -time -inlineJSR -g:lines,vars,source -preserveAllLocals "/>
<property name="compiler-gbk.args" value="-encoding GBK -verbose -time -inlineJSR -g:lines,vars,source -preserverAllLocals" />

<javac destdir="${bin.dir}" includeantruntime="true" failonerror="true" nowarn="true">
    <compilerarg line="${compiler.args}"/>
    <src path="${src.dir}"/>
    <classpath refid="compile.classpath"/>
</javac>

<!-- 第二遍進行GBK編譯 -->
<javac destdir="${bin.dir}" includeantruntime="true" failonerror="true" nowarn="true">
    <compilerarg line="${compiler-gbk.args}"/>
    <src>
       <pathelement location="your gbk file path" />
   </src>
    <classpath refid="compile.classpath"/>
</javac>
具體的原理就是通過多遍的javac編譯任務,根據不同的編碼將結果進行彙集。從而到達所需要的效果,順序上應該先編譯大多數的檔案,然後再具體資料夾,最後具體特定的檔案,這樣能夠避免一些依賴問題。之所以第一次完整編譯不進行exclude,是為了避免對亂碼檔案的依賴問題。