tutorial java ant build javac build-tools

java - tutorial - building apache ant



advertencia de la hormiga: "''includean truntime'' no se estableció" (7)

Ant Runtime

Simplemente configura includeantruntime="false" :

<javac includeantruntime="false" ...>...</javac>

Si tiene que usar la tarea javac varias veces, puede considerar usar PreSetDef para definir su propia tarea javac 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 característica incorrecta introducida en Ant 1.8. Solo agrega un atributo de ese nombre a la tarea javac, configúralo en falso y olvida que alguna vez sucedió.

De http://ant.apache.org/manual/Tasks/javac.html :

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 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.

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?


Como mencionó @Daniel Kutik, PreSetDef es una buena opción. Especialmente si uno está trabajando en un proyecto con muchos archivos build.xml que no puede editar, o prefiere no editar (por ejemplo, los de terceros).

Para usar presetdef , agregue estas líneas en su archivo build.xml nivel build.xml :

<presetdef name="javac"> <javac includeantruntime="false" /> </presetdef>

Ahora, todas las tareas javac subsiguientes esencialmente heredarán includeantruntime="false" . Si sus proyectos realmente necesitan bibliotecas ant runtime, puede agregarlas explícitamente a sus archivos de compilación O establecer includeantruntime="true" . Este último también se librará de las advertencias.

Las tareas javac subsiguientes 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>

Recomiendo no usar ANT_OPTS . Funciona, pero derrota el propósito de la advertencia. La advertencia le dice a uno que la construcción de uno podría comportarse de manera diferente en otro sistema. El uso de ANT_OPTS hace que esto sea aún más probable porque ahora todos los sistemas necesitan usar ANT_OPTS de la misma manera. Además, ANT_OPTS se aplicará globalmente, ANT_OPTS advertencias de todos los proyectos.


La respuesta de Daniel funciona simplemente perfecta. 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>


Me enfrenté a esto mismo, me registré en el programa y la función. hubo una actualización para instalar 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 de hormigas es construir el éxito.

Pruébalo, espero que esto sea de ayuda.


Si te gusta trabajar desde la línea de comandos, la respuesta rápida se está ejecutando.

export ANT_OPTS=-Dbuild.sysclasspath=ignore

Y luego ejecute su secuencia de comandos de nuevo.


Use <property name="build.sysclasspath" value="last"/> en su archivo build.xml

Para más detalles, busque includeAntRuntime en Ant javac

Otros valores posibles se pueden encontrar here


Chet Hosey escribió una buena explicación here :

Históricamente, Ant siempre incluía su propio tiempo de ejecución en el classpath puesto a disposición para la tarea javac. Por lo tanto, cualquier biblioteca incluida con Ant, y cualquier biblioteca disponible para ant, está automáticamente en el classpath de tu compilación, te 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" (por inclusión de tiempo de ejecución), al menos sabrá que su clase classpath incluirá el tiempo de ejecución de Ant. Si elige "falso", está aceptando el hecho de que el comportamiento de compilación cambiará entre versiones anteriores y 1.8+.

Tan molesto como usted está al ver esta advertencia, estaría incluso menos contento 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 las versiones de Ant.