Я отримую таке попередження:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
Що це означає?
Я отримую таке попередження:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
Що це означає?
Відповіді:
Просто встановіть includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
Якщо вам доведеться використовувати javac
-task кілька разів, ви можете розглянути можливість використання PreSetDef
для визначення власного javac
-Task, який завжди встановлюється includeantruntime="false"
.
Від http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set :
Це спричинено помилкою, введеною в Ant 1.8. Просто додайте атрибут цього імені до завдання javac, встановіть його на false, і забудьте, що воно коли-небудь траплялося.
З http://ant.apache.org/manual/Tasks/javac.html :
Чи включати бібліотеки часу виконання Ant до класового шляху; за замовчуванням - так, якщо не встановлено build.sysclasspath. Зазвичай найкраще встановити це значення false, щоб поведінка сценарію не була чутливою до середовища, в якому він виконується.
Як згадував @Daniel Kutik, presetdef
це хороший варіант. Особливо, якщо хтось працює над проектом з багатьма build.xml
файлами, які не можна або не бажає редагувати (наприклад, файли від сторонніх осіб).
Для використання presetdef
додайте ці рядки у файл верхнього рівня build.xml
:
<presetdef name="javac">
<javac includeantruntime="false" />
</presetdef>
Тепер усі наступні javac
завдання по суті будуть успадковані includeantruntime="false"
. Якщо вашим проектам дійсно потрібні бібліотеки виконання програми, ви можете або додати їх явно до файлів збирання АБО набору 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
застосовуватимуться в усьому світі, придушуючи попередження мимоволі у всіх ваших проектах
presetdef
трюк для роботи над невбудованими завданнями Ant? Я спробував це scalac
, але оскільки build.xml
файли нижнього вниз повинні визначати scalac
завдання вручну , вони переосмислюють все, що я встановив на верхньому рівні.
Chet Hosey написав гарне пояснення тут :
Історично склалося, що Мураха завжди включав власну тривалість роботи в класний шлях, який був доступний для завдання javac. Тож будь-які бібліотеки, що входять до Ant, і будь-які бібліотеки, доступні для мурахи, автоматично перебувають у класі вашого збірника, подобається вам це чи ні.
Було вирішено, що це, мабуть, не те, чого хоче більшість людей. Тож тепер є варіант для цього.
Якщо ви вибрали "true" (для включення під час виконання), то принаймні ви знаєте, що ваш клас збирання буде включати час виконання мурашки. Якщо ви вибрали "false", ви приймаєте той факт, що поведінка збірки зміниться між старими версіями та 1.8+.
Як би роздратовано, як ви бачите це попередження, ви були б ще менш щасливі, якби ваші збірки повністю зламалися. Дотримання цієї поведінки за замовчуванням дозволяє незмінним файлам збирання послідовно працювати між версіями Ant.
Відповідь Даніеля працює просто ідеально. Ось фрагмент зразка, який я додав до свого 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>
Якщо вам подобається, що я працюю з командного рядка, швидка відповідь виконується
export ANT_OPTS=-Dbuild.sysclasspath=ignore
А потім знову запустіть свій мурашиний сценарій.
set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore
.
Я зіткнувся з цим самим, я перевіряю програму та функції. було встановлено оновлення для jdk1.8, яке не сумісне з моїми старими налаштуваннями (jdk1.6.0) для мурашника в затемненні. Я встановлюю це оновлення. саме зараз мій мурашиний проект - це успіх у побудові.
Спробуйте, сподіваюся, це буде корисно.