Как кодировать файлы Java в UTF-8 с помощью Apache Ant?

В моем файле build.xml я получаю некоторые файлы Java с помощью cxf. Некоторые из этих файлов Java необходимо закодировать в UTF-8. Как с помощью Ant изменить кодировку на UTF-8?

PS: Я нашел инструкции о том, как установить кодировку для javac в UTF-8, но до javac мне нужно, чтобы файлы Java были в UTF-8. В противном случае я получаю сообщение об ошибке:

предупреждение: несопоставимый символ для кодировки utf-8

Вот мой код:

<macrodef name="lpwservice">
    <attribute name="name"/>
    <attribute name="package"/>
    <sequential>
        <property name="wsdlfile" value="${portal.basedir}/lpw/wsdl/@{name}.wsdl"/>

        <mkdir dir="${portal.basedir}/lpw/wsdl"/>
        <get src="${lpw.baseuri.cxf}/@{name}?wsdl" dest="${portal.basedir}/lpw/wsdl/@{name}.wsdl.new"/>
        <if>
            <and>
                <filesmatch file1="${portal.basedir}/lpw/wsdl/@{name}.wsdl" file2="${portal.basedir}/lpw/wsdl/@{name}.wsdl.new"/>
                <uptodate targetfile="${portal.basedir}/lpw-wsdl.jar" srcfile="${portal.basedir}/lpw/wsdl/@{name}.wsdl"/>
            </and>
            <then>
                <echo message="${wsdlfile} is up to date" level="info"/>
                <delete file="${portal.basedir}/lpw/wsdl/@{name}.wsdl.new"/>
            </then>
            <else>
                <echo message="${portal.basedir}/lpw/wsdl/@{name}.wsdl needs update" level="info"/>
                <move file="${portal.basedir}/lpw/wsdl/@{name}.wsdl.new" tofile="${portal.basedir}/lpw/wsdl/@{name}.wsdl" overwrite="true" />
                <java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true" failonerror="true">
                    <arg value="-client"/>
                    <arg value="-d"/>
                    <arg value="${portal.basedir}/lpw/src"/>
                    <arg value="${portal.basedir}/lpw/wsdl/@{name}.wsdl"/>
                    <classpath>
                        <path refid="cxf.classpath"/>
                    </classpath>
                </java>
            </else>
        </if>
    </sequential>
</macrodef>

Что мне здесь делать, чтобы сделать

<java classname="org.apache.cxf.tools.wsdlto.WSDLToJava" fork="true" failonerror="true">

кодировать java файлы в utf-8?


person Madeline    schedule 11.09.2012    source источник


Ответы (1)


Задача Ant <copy> имеет атрибуты encoding и outputencoding.

Один файл Java

<copy file="myJavaFile.java" tofile="myJavaFile.java" overwrite="true"
    encoding="ISO-8859-1" outputencoding="UTF-8" />

Все файлы Java в каталоге

<property name="source.dir" location="/path/to/java/files" />

<copy todir="${source.dir}" overwrite="true"
    encoding="ISO-8859-1" outputencoding="UTF-8">
  <fileset dir="${source.dir}" includes="*.java" />
</copy>

Просто измените ISO-8859-1 на формат кодировки ваших файлов Java.

person Christopher Peisert    schedule 11.09.2012
comment
большое спасибо за ваш ответ. Я вроде как близок к тому, чтобы решить эту проблему, но мне все еще не удалось это сделать. Мой код выглядит следующим образом ... Я добавляю код в свой вопрос выше здесь ... - person Madeline; 12.09.2012
comment
if (areSame (source, dest)) {// копирование того же файла самому себе приведет к повреждению файла, поэтому мы пропускаем его log (проект, Пропуск (собственное) копирование + source + to + dest); возвращение; } Это не сработает! - person alamar; 20.04.2020