2010-02-05 20 views
8

Tengo un par de archivos jar, (algunos de los cuales dependen el uno del otro), y estoy tratando de que hiedra los administre para mi proyecto.¿Cómo crear una dependencia de Ivy para los archivos jar locales dentro de su proyecto/lib?

No quiero crear un repositorio "local" (basado en directorios de usuario), porque quiero que otros usuarios puedan consultar mi proyecto svn y ejecutarlo sin la configuración de repositorio local/compartido. Por diversas razones, no puedo agregar estos archivos al repositorio real que estamos utilizando.

El proyecto depende de estos archivos y los estoy usando en SVN. En el pasado, he tenido mis archivos xml de dependencia de hiedra normales. Estos archivos usan una configuración de archivos xml apunta al repositorio remoto. En el pasado, en el último minuto, tuve que usar una tarea de compilación para copiar estos archivos de una carpeta lib a la carpeta compilada. Esto se siente como un abuso roto que ignora las características de ivy filesystem resolver.

(ivy.xml y build.xml para 3 proyectos de armables utilizan el mismo ivysettings.xml, en otro directorio base.)

me siento como si estuviera 90% del camino, lo que debería apuntar mi sistema de archivos de resolución en ivysettings.xml para hacer mi primera resolución en la cadena de resolución de verificación de archivos jar en projectdir/lib?

Respuesta

3

¿Has mirado la tarea de la hiedra buildlist?

Puede usar esto para controlar el orden en que se construyen sus 3 módulos. A medida que se construye cada módulo, puede publicar en un repositorio local, asegurando que el contenedor esté presente a tiempo para el siguiente módulo de la cadena.

build.xml 
    ivysettings.xml 
    --> module1 --> build.xml 
        ivy.xml 
    --> module2 --> build.xml 
        ivy.xml 
    --> module3 --> build.xml 
        ivy.xml 

Su archivo de configuración puede ser compartido por todos los proyectos. Afirma que los módulos que construir están disponibles a nivel local, todo lo demás es desde el repositorio por defecto para todos los usuarios de su proyecto (en este caso Maven)

<ivysettings> 
     <settings defaultResolver="maven2"/> 
     <resolvers> 
       <ibiblio name="maven2" m2compatible="true"/> 

       <filesystem name="local"> 
        <ivy pattern="${local.rep.dir}/.."/> 
        <artifact pattern="${local.rep.dir}/.."/> 
       </filesystem> 
     </resolvers> 
     <modules> 
       <module organisation="org.me" name="module1" resolver="local"/> 
       <module organisation="org.me" name="module2" resolver="local"/> 
       .. 
     </modules> 
</ivysettings> 

Finalmente cuando se publica el exterior se puede utilizar la hiedra instalar tarea para copiar los módulos que ya ha publicado localmente en la ubicación del repositorio final

Cuestiones relacionadas