2011-03-15 7 views
6

Estoy tratando de agregar manualmente el archivo jar lucene a mi repositorio local ivy. Tengo otros jarros de apache, por lo tanto, debajo de la carpeta existente .ivy2 \ cache \ apache.org \ He creado una carpeta llamada lucene y dentro hay una carpeta llamada jarras. Luego coloqué el contenedor llamado lucene-3.0.3.jar en la carpeta jars. El siguiente paso He creado la siguiente hiedra 3.0.3.xml en la carpeta Lucene:No se puede agregar el archivo jar a .ivy caché manualmente

<?xml version="1.0" encoding="UTF-8"?> 

<ivy-module version="1.0"> 
    <info organisation="apache.org" module="lucene" revision="3.0.3" status="release" publication="20090416105712"> 
    </info> 
    <publications> 
     <artifact name="lucene-3.0.3" type="jar" ext="jar"/> 
    </publications> 
</ivy-module> 

entonces trato de hacer referencia a ella desde un proyecto como ese:

<dependency org="apache.org" name="lucene" rev="3.0.3"/> 

pero consigo un error: "dependencia no resuelta: apache.org # lucene; 3.0.3: no encontrada"

Puedo encontrar otras dependencias de mis carpetas de caché .ivy2, solo esta que he creado manualmente está dando problemas .

¿Algo que me he perdido?

Respuesta

2

Estoy de acuerdo con Mark, debes poner el archivo en tu repositorio local en lugar de tu caché. Especialmente dado que la expectativa es que la memoria caché podría eliminarse (y, a menudo) en cualquier momento.

Sin embargo, para responder a su pregunta, la razón más probable para su error es que su jerarquía de carpetas no coincide con el patrón esperado. De manera predeterminada, la memoria caché se presenta de la siguiente manera:

[organisation]/[module]/[revision]/[type]s/[artifact].[ext] 

por lo que tendría que mover el archivo en el directorio siguiente para eliminar ese error:

.ivy2\cache\apache.org\lucene\3.0.3\jars\lucene.jar 

A veces, el patrón predeterminado se cambia basado en archivos de configuración, de modo que la única manera de estar seguro del patrón esperado es mirar otros archivos jar en su caché (por ejemplo, en este momento, mi caché tiene la porción [revisión] al final del nombre del archivo; de lo contrario, todos else es lo mismo).

Sin embargo, estoy de acuerdo con Mark, realmente no desea agregar cosas manualmente al caché. En su lugar, agréguelos al repositorio local predeterminado O mejor aún, create your own basic repository.

+0

Gracias. Probablemente debería haber mencionado que estoy haciendo esto para autoevaluarme sobre cómo funciona la hiedra y solo para experimentar. Soy consciente de que ivy toma los frascos del repositorio en base a sus resolutores, pero pensé que trataría de imitar lo que está haciendo :) Gracias – Joly

+0

me alegro de poder ayudar con ese entendimiento de alguna manera. A propósito, quiero mencionar que Ivy es una de las herramientas mejor documentadas que he visto en mi vida. Peces en el sitio que he vinculado anteriormente y encontrarás todas las funciones de Ivy, así como ejemplos extremadamente útiles para cada comando. Conozco a Ivy hacia atrás y hacia adelante y TODO lo que sé, lo aprendí de ese sitio. – gMale

1

El caché ivy no es un repositorio, es un caché (diferente a Maven). La memoria caché contiene archivos de metadatos que registran qué ivy ha descargado previamente.

que sugieren que colocar archivos en la ubicación repositorio local de hiedra que se almacena (por defecto), junto con la memoria caché:

$HOME/.ivy2/local 

Así que en su ejemplo el frasco tiene que almacenarse aquí:

$HOME/.ivy2/local/org.apache/lucene/3.0.3/jars/lucene.jar 
Cuestiones relacionadas