build-tools javac build - ant warning: "'includeantruntime' не был установлен"
Как отметил @Daniel Kutik, PreSetDef - хороший вариант. Особенно если вы работаете над проектом со многими файлами build.xml
которые нельзя или предпочитает не редактировать (например, для сторонних разработчиков).
Чтобы использовать presetdef
, добавьте эти строки в файл build.xml
верхнего уровня:
<presetdef name="javac">
<javac includeantruntime="false" />
</presetdef>
Теперь все последующие задачи javac
будут по существу наследовать includeantruntime="false"
. Если вашим проектам действительно нужны includeantruntime="true"
, вы можете либо добавить их явно в свои файлы сборки, либо установить includeantruntime="true"
. Последний также избавится от предупреждений.
Последующие javac
задачи могут по-прежнему явно изменять это, если это необходимо, например:
<javac destdir="out" includeantruntime="true">
<src path="foo.java" />
<src path="bar.java" />
</javac>
Я бы рекомендовал использовать ANT_OPTS
. Он работает, но он побеждает цель предупреждения. Предупреждение говорит, что одна из построений может вести себя по-другому в другой системе. Использование ANT_OPTS
делает это еще более вероятным, потому что теперь каждая система должна использовать ANT_OPTS
таким же образом. Кроме того, ANT_OPTS
будет применяться во всем мире, подавляя предупреждения во всех ваших проектах
Я получаю следующее предупреждение:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
Что это значит?
Ответ от Даниила просто идеален. Вот пример фрагмента, который я добавил в свой файл build.xml:
<target name="compile">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false">
<!-- ^^^^^^^^^^^^^^^^^^^^^^^^^ -->
<classpath>
<path id="application" location="${jar.dir}/${ant.project.name}.jar"/>
<path id="junit" location="${lib.dir}/junit-4.9b2.jar"/>
</classpath>
</javac>
</target>