2012-07-13 12 views
7

He estado revisando la documentación de Ivy y tengo una pregunta sobre el valor predeterminado ivysettings.xml que se encuentra dentro de ivy.jar.ivysettings.xml: ¿Puedo "modificar" la configuración predeterminada sin modificar el contenedor o reemplazarlo por completo?

Todo lo que quiero hacer es cambiar el repositorio público a un repositorio local de Maven que tenemos. Eso es. Podría copiar todos los archivos ivysettings*.xml en mi proyecto y usar <ivy:settings> para señalarlo, pero eso duplica muchas cosas. También podría modificar el ivy.jar, pero eso agrega problemas de mantenimiento. Los desarrolladores tienen que usar mi ivy.jar, y si vamos a una nueva versión, tendría que modificarla de nuevo.

Entonces, ¿cómo guardo todos los ajustes estándar de Ivy y simplemente cambio el repositorio para usar? Simplemente quiero superponer mis cambios en lo que Ivy ya tiene.


Y dos preguntas más:

  • ¿Cuál es la diferencia entre los ivyconf*.xml archivos y los archivos ivysettings*.xml? ¿Por qué hay configuraciones duplicadas en Ivy?
  • ¿Qué es un buen libro sobre Ivy? Ahora estoy usando la Ant de Manning en la Acción que cubre Ivy de una manera un tanto sumaria y está un poco pasada de moda. Los recursos en el sitio web de Ivy en sí son terribles.

Respuesta

1

Finalmente lo resolvió.

Copié el archivo ivysettings.xml del contenedor e hice una pequeña modificación. Tenga en cuenta que la primera incluir puntos a un archivo XML en la hiedra ${ivy.lib.dir} y no a ${ivy.default.settings.dir}:

<ivysettings> 
<settings defaultResolver="default"/> 
    <include file="${ivy.lib.dir}/ivysettings-public.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-shared.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-local.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-main-chain.xml"/> 
    <include url="${ivy.default.settings.dir}/ivysettings-default-chain.xml"/> 
</ivysettings> 

tengo mi propio ivysettings-public.xml que es el mismo que el valor por defecto, pero ahora define un root a mi repositorio.(Sí, se localhost por ahora, pero lo puso a un servidor real, una vez que conseguir todo resuelto):

<ivysettings> 
    <resolvers> 
     <ibiblio name="public" m2compatible="true" 
       root="http://localhost:8081/artifactory/repo" /> 
    </resolvers> 
</ivysettings> 

Ahora, en mi build.xml, Tengo el siguiente:

<property name="ivy.lib.dir"  value="${basedir}/ivy.lib"/> 

<taskdef uri="ivylib:org.apache.ivy.ant" 
    resource="org/apache/ivy/ant/antlib.xml"> 
    <classpath> 
     <fileset dir="${ivy.lib.dir}"> 
      <include name="ivy.jar"/> 
      <include name="ivy-*.jar"/> 
     </fileset> 
    </classpath> 
</taskdef> 

<ivy:configure file="${ivy.lib.dir}/ivysettings.xml" override="true"/> 

Eso parece hacer el truco.

+0

, no deberías estar copiando el ivysettings.xml habitual. Puede hacer el que escribí en mi respuesta. Y luego haz lo que tienes que hacer. Debo decir sin embargo. Estos conceptos básicos están cubiertos en los ejemplos dentro del src descargable de apach-ivy. –

6

Esa es mi archivo ivysettings.xml

<ivysettings> 
    <include url="${ivy.default.settings.dir}/ivysettings.xml"/> 
    <resolvers> 
     <chain name="download-chain" changingPattern=".*" checkmodified="true" > 
      <ibiblio name="maven" m2compatible="true" /> 
     </chain> 
    </resolvers> 
</ivysettings> 

en cuenta que escribo mis resolutores extra aquí, pero el uso de todo lo demás de la estándar, que se indica en la url. Esto cargará las configuraciones desde ivysettings.xml en el archivo ivy.jar.

En cuanto al ivyconf * .xml. Creo que está en desuso ahora. Ivysettings es la nueva forma de hacer esto.

Los recursos son bastante horribles. Estoy totalmente de acuerdo con eso. Sin embargo, muchas de las respuestas en el stackoverflow.com fueron lo suficientemente detalladas y en realidad intentan anticipar los problemas

Las respuestas de Mark O'Connor son particularmente detalladas y directas al grano. Debes aceptar el hecho de que estás aprendiendo algo nuevo, solo dale tiempo.

+0

Sé que me va a tomar tiempo para recogerlo, pero incluso los conceptos básicos están mal explicado. Esta sería la primera pregunta que alguien tendría si ' –

+0

hago esto bien: apunta al ivysettings.xml en el ¿tarro? Porque nunca he establecido la variable ivy.default.settings.url y tampoco tengo ningún ivysettings.xml en mi sistema de archivos. –

+0

que fue hace mucho tiempo, pero ejecuta una hormiga con -d o -v y debe mostrar mucha información que incluye variables y valores de propiedades –

0

En su build.xml incluyen lo siguiente:

<property name="ivy.settings.dir" value="PATH OF SETTINGS" /> 
<property file="${ivy.settings.dir}/ivysettings.properties" /> 
<ivy:settings file="${ivy.settings.dir}/ivysettings.xml" /> 
Cuestiones relacionadas