usuario496949
Recibo la siguiente advertencia:
[javac] build.xml:9: warning: 'includeantruntime' was not set,
defaulting to build.sysclasspath=last; set to false for repeatable builds
¿Qué significa esto?
daniel kutik
Tiempo de ejecución de hormigas
Simplemente configura includeantruntime="false"
:
<javac includeantruntime="false" ...>...</javac>
Si tienes que usar el javac
-tarea varias veces que tal vez quieras considerar usar PreSetDef
para definir el tuyo javac
-tarea que siempre establece includeantruntime="false"
.
Detalles adicionales
De http://www.coderanch.com/t/503097/tools/warning-includeantruntime-was-not-set:
Eso es causado por una falla introducida en Ant 1.8. Simplemente agregue un atributo de ese nombre a la tarea javac, configúrelo como falso y olvide que alguna vez sucedió.
De http://ant.apache.org/manual/Tasks/javac.html:
Si incluir las bibliotecas de tiempo de ejecución de Ant en el classpath; el valor predeterminado es sí, a menos que se establezca build.sysclasspath. Por lo general, es mejor establecer esto en falso para que el comportamiento del script no sea sensible al entorno en el que se ejecuta.
-
Apache Ant(TM) versión 1.8.2 compilada el 20 de diciembre de 2010
– usuario496949
24 de febrero de 2011 a las 10:40
-
por lo tanto, si necesita el tiempo de ejecución de ant en el classpath, configúrelo en sí/verdadero; de lo contrario, en no/falso. Supongo que no lo necesitas.
– Daniel Kutik
24 de febrero de 2011 a las 10:46
-
+1, gran respuesta. Ojalá pudiera configurar eso una vez en algún lugar del archivo de compilación en lugar de ensuciar cada llamada javac con él …
– Jonik
2 de julio de 2011 a las 7:42
-
¿Qué significa, en cualquier caso, si se establece en Verdadero?
– Lorenzo Lerate
30 de agosto de 2016 a las 13:45
-
“Ya sea para incluir las bibliotecas de tiempo de ejecución de Ant en el classpath; el valor predeterminado es sí, a menos que se configure build.sysclasspath. Por lo general, es mejor establecerlo en falso para que el comportamiento del script no sea sensible al entorno en el que se ejecuta. “
– Daniel Kutik
5 de octubre de 2016 a las 1:09
jwfearn
Como mencionó @Daniel Kutik, presetdef
es una buena opción Especialmente si uno está trabajando en un proyecto con muchos build.xml
archivos que uno no puede, o prefiere no editar (por ejemplo, los de terceros).
Usar presetdef
agregue estas líneas en su nivel superior build.xml
expediente:
<presetdef name="javac">
<javac includeantruntime="false" />
</presetdef>
Ahora todo lo subsiguiente javac
las tareas esencialmente heredarán includeantruntime="false"
. Si sus proyectos realmente necesitan bibliotecas de tiempo de ejecución de hormigas, puede agregarlas explícitamente a sus archivos de compilación O establecer includeantruntime="true"
. Este último también eliminará las advertencias.
Subsecuente javac
las tareas aún pueden cambiar esto explícitamente si lo desea, por ejemplo:
<javac destdir="out" includeantruntime="true">
<src path="foo.java" />
<src path="bar.java" />
</javac>
Yo recomendaría no usar ANT_OPTS
. Funciona, pero anula el propósito de la advertencia. La advertencia le dice a uno que la construcción de uno puede que comportarse de manera diferente en otro sistema. Usando ANT_OPTS
hace que esto sea aún más probable porque ahora todos los sistemas necesitan usar ANT_OPTS
del mismo modo. También, ANT_OPTS
se aplicará globalmente, suprimiendo las advertencias de cualquier manera en todos sus proyectos
-
Funciona muy bien para actualizar un archivo de compilación Ant existente con múltiples tareas javac. El elemento presetdef va justo dentro del elemento del proyecto.
– saxofonista
29 de mayo de 2012 a las 16:29
-
@jwfearn: ¿Puede algo similar
presetdef
¿Se puede hacer que el truco funcione para tareas Ant no integradas? He probado esto conscalac
sino porque abajobuild.xml
los archivos tienen que definir manualmente elscalac
tarea, anulan lo que establezca en el nivel superior.– Stuart Golodetz
26 de agosto de 2012 a las 13:12
-
Una nota, que el uso de presetdef causará una advertencia de hormiga de que la tarea javac ha sido redefinida. Agregar includeantruntime a cada tarea javac evita esto. No estoy al tanto de las desventajas de la advertencia. Pero esto podría ser útil para las personas que ‘necesitan’ compilaciones limpias.
– mikijov
27/09/2012 a las 15:53
-
Sí, el presetdef da “Intentando anular la definición anterior de la tarea javac”
-mike jones
2 de octubre de 2012 a las 8:51
kiannakakis
chet medias escribió una buena explicación aquí:
Históricamente, Ant siempre incluía su propio tiempo de ejecución en el classpath disponible para la tarea javac. Por lo tanto, cualquier biblioteca incluida con Ant, y cualquier biblioteca disponible para ant, se encuentran automáticamente en el classpath de su compilación, le guste o no.
Se decidió que esto probablemente no era lo que la mayoría de la gente quería. Así que ahora hay una opción para ello.
Si elige “verdadero” (para includeantruntime), entonces al menos sabrá que su classpath de compilación incluirá el tiempo de ejecución de Ant. Si elige “falso”, acepta el hecho de que el comportamiento de compilación cambiará entre versiones anteriores y 1.8+.
A pesar de lo molesto que está al ver esta advertencia, sería aún menos feliz si sus compilaciones se rompieran por completo. Mantener este comportamiento predeterminado permite que los archivos de compilación no modificados funcionen de manera consistente entre versiones de Ant.
-
Siempre pensé que esta era la característica/mensaje más tonto de la historia. ¿Quién quiere ‘compilaciones repetibles’ en su herramienta de gestión de configuración? 😉
– karmakaze
7 de marzo de 2012 a las 17:10
-
Esta respuesta parece ser la única que nos dice qué significa realmente la advertencia.
– ty
11 de marzo de 2018 a las 9:43
krishnam raju
La respuesta de Daniel funciona perfectamente. Aquí hay un fragmento de muestra que agregué a mi 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>
Si te gusta que trabaje desde la línea de comandos, la respuesta rápida es ejecutar
export ANT_OPTS=-Dbuild.sysclasspath=ignore
Y luego ejecute su script de hormiga nuevamente.
-
esto me ayuda mucho. Estoy usando
set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore
.– Pablo Vargas
1 de julio de 2016 a las 14:50
-
Estoy enfrentando un problema de hormigas
– deepakl.2000
6 de junio a las 10:11
Ahmad Nadeem
Usar <property name="build.sysclasspath" value="last"/>
en su archivo build.xml
Para más detalles busca includeAntRuntime
en Hormiga javac
Se pueden encontrar otros valores posibles aquí
-
esto me ayuda mucho. Estoy usando
set ANT_OPTS=-Xms40M -Xmx512M -Dbuild.sysclasspath=ignore
.– Pablo Vargas
1 de julio de 2016 a las 14:50
-
Estoy enfrentando un problema de hormigas
– deepakl.2000
6 de junio a las 10:11
Garun Kumar Mishra
Me enfrenté a esto mismo, me registré en el programa y la función. hubo una actualización instalada para jdk1.8 que no es compatible con mi configuración anterior (jdk1.6.0) para ant en eclipse. Instalo esa actualización. en este momento, mi proyecto hormiga es construir el éxito.
Pruébelo, espero que esto sea útil.