Ошибка 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".