ant使用JDT 编译多种编码文件方案

来源:互联网 发布:婴儿背巾 知乎 编辑:程序博客网 时间:2024/05/18 23:57

在实际的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,是为了避免对乱码文件的依赖问题。