Ошибка javac "error: предупреждения найдены и -Werror указал" disable "-Werror" в ant

Это проект Android, и мой скрипт сборки муравья иногда не работает, когда он решает обрабатывать предупреждения как ошибки при запуске javac программа. Серьезно, он делает это только иногда, это другой вопрос, который я могу задать.

Он напечатает ошибки и резко отменит сборку

[javac] 1 error

[javac] 9 warnings

как я сделал глубже, я вижу "ошибка"

error: warnings found and -Werror specified

это не то, что я явно установить. Теперь это может быть аргумент, скрытый глубоко в файле build.xml, или, возможно, в файле build.xml этой конкретной библиотеки в одном конкретном состоянии, о котором я в настоящее время не знаю

Иногда это вызывает Android SDK facebook. Но в файлах ant build.xml нет аргумента Werror, но я хочу его отключить или обойти

Это для сервера сборки, где у меня есть другие условия, чтобы остановить сборку. Непоследовательные проблемы муравья и javac на самом деле не имеют места.

но любое понимание этого приветствуется.

1 ответ

Файл "tools/ant/build.xml" в моем каталоге Android SDK содержит следующее:

<property name="java.compilerargs" value="" />

Возможно, Android SDK, используемый сборкой, которая завершается неудачно из-за того, что предупреждения обрабатываются как ошибки, включает "-Werror" в аргументах компилятора? (В противном случае рекурсивный grep для "compilerargs" в каталоге поврежденного экземпляра Android SDK может найти виновника.)

ОБНОВИТЬ:

С другой стороны, это в моем Android SDK, свойство само по себе не является обязательным - оно просто используется здесь:

<!-- Compiles this project's .java files into .class files. -->
<target name="-compile" depends="-pre-build, -build-setup, -code-gen, -pre-compile">
    <do-only-if-manifest-hasCode elseText="hasCode = false. Skipping...">
        <!-- merge the project's own classpath and the tested project's classpath -->
        <path id="project.javac.classpath">
            <path refid="project.all.jars.path" />
            <path refid="tested.project.classpath" />
            <path path="${java.compiler.classpath}" />
        </path>
        <javac encoding="${java.encoding}"
                source="${java.source}" target="${java.target}"
                debug="true" extdirs="" includeantruntime="false"
                destdir="${out.classes.absolute.dir}"
                bootclasspathref="project.target.class.path"
                verbose="${verbose}"
                classpathref="project.javac.classpath"
                fork="${need.javac.fork}">
            <src path="${source.absolute.dir}" />
            <src path="${gen.absolute.dir}" />
            <compilerarg line="${java.compilerargs}" />
        </javac>

Элемент, который должен быть там, это "compilerarg" в строке, следующей за последней, поэтому лучше выбрать "compilerarg" вместо "compilerarg".

Другие вопросы по тегам