2011-02-28 13 views
15

al resolver mi ivy.xml, obtengo una larga lista de errores, todos indicando "desconocido resolver XYZ". Conozco el resolver, se usa en el mismo proyecto pero es una tarea diferente. Por lo que tengo entendido, la resolución usada para crear la entrada de la memoria caché se almacena y no puede ser determinada por la resolución de seguimiento.recibiendo el mensaje de error: "desconocido resolver XYZ"

Pregunta es: ¿cómo puedo evitar esto? Parece que esto no es realmente un error, más como una advertencia ya que puedo resolver todas las dependencias y seguir compilando.

Respuesta

14

Dentro del mismo proyecto, la resolución de compilación no cambiará porque está definida en su archivo ivysettings.xml.

Esto es más probable que sea un problema con un caché de hiedra rancia. Sugeriría agregar un objetivo extra que purgue tu caché. Útil cuando se encuentra con este tipo de problema:

<target name="clean-all" depends="clean" description="Purge ivy cache"> 
    <ivy:cleancache/> 
</target> 
+1

Eso no es correcto, el sistema de resolución se puede cambiar fácilmente. Puedo definir varios resolvedores y configurarlos a través de la etiqueta del módulo. O simplemente use más de un archivo de configuración y refiérase a ellos a través del atributo settingsref. –

+0

Sí, por supuesto que puedes. Mi punto es que el caché de hiedra registra mucha información relacionada con resolver. Según mi experiencia, este caché debe ser purgado periódicamente, especialmente cuando cambio la configuración de hiedra. –

+0

finalmente reconocí esta respuesta, limpiar la caché funciona para mí. Aunque estoy limpiando casi todo el tiempo, esto todavía está lejos de ser óptimo. –

3

Ejecute su compilación de ant con el indicador detallado (-v). Esto le dará una idea clara de qué archivos de configuración se están utilizando durante todo el proceso de resolución. Mi apuesta es que encontrará su problema con bastante facilidad y estará en la línea del archivo de configuración que creía que estaba utilizando y que en realidad no está siendo utilizado.

En mis proyectos, me parece que este tipo de cosas a menudo sucede cuando una tarea posterior a la resolución (como recuperar) desencadena una resolución "automáticamente" y utiliza la configuración de hiedra predeterminada en lugar de la que yo quiero que utilice en el momento. Lo más probable es que su archivo de configuración predeterminado no contenga los resolvedores que está esperando.

Para resolver estos problemas, hago un ivysettings-common.xml que contiene solo resolvedores. Luego, en cada uno de mis archivos de configuración, importo la configuración común y hago referencia a los resolvedores en la cadena principal. Que se parece a:

<ivysettings> 
    <settings defaultResolver="all-repositories" /> 
    <include file="ivysettings-common.xml" /> 
    <resolvers> 
     <chain name="all-repositories" returnFirst="true" > 
       <resolver ref="project" /> 
       <resolver ref="local" /> 
       <resolver ref="hibernate" /> 
       <resolver ref="ibibilo" /> 
     </chain>   
    </resolvers> 
</ivysettings> 

A partir de ahí, hago el archivo común de mis ajustes por defecto, sólo "en caso de emergencia" Me conocen todos mis resolutores se pueden encontrar (añadiendo lo siguiente a ivy.properties):

ivy.settings.file = ${basedir}/path/to/ivysettings-common.xml 

pero explícitamente todas mis llamadas de hiedra en el archivo de configuración apropiada, tratando de no confiar en el defecto porque toda la razón por la que utilizo la hiedra + hormiga es que prefiero un control preciso sobre mi proceso de construcción:

Espero que todo eso te ayude a ti o a alguien más.

~ gMale

+0

Eso parece prometedor, voy a intentarlo mañana. –

Cuestiones relacionadas