2012-09-06 15 views
6

Soy bastante nuevo en Ivy, pero lo he conseguido para trabajar con las dependencias de jar. El problema es tratar de configurarlo, así que puedo buscar javadocs y fuentes independientemente de jar.Ivy: recuperar Javadocs y fuentes

Tengo un proyecto de prueba simple, pero no importa lo que estoy haciendo, estoy buscando el contenedor con los archivos de clase.

tengo el ivy.xml siguiente archivo:

<ivy-module version="1.0"> 
    <info 
     organisation="com.vegicorp" 
     module="test" 
     revision="1.0" 
     status="release"/> 

    <configurations> 
     <conf name="default" visibility="public" extends="runtime,master"/> 
     <conf name="master" visibility="public"/> 
     <conf name="compile" visibility="public"/> 
     <conf name="provided" visibility="public"/> 
     <conf name="runtime" visibility="public" extends="compile"/> 
     <conf name="test" visibility="private" extends="runtime"/> 
     <conf name="system" visibility="public"/> 
     <conf name="sources" visibility="public"/> 
     <conf name="javadoc" visibility="public"/> 
     <conf name="optional" visibility="public"/> 
    </configurations> 

    <dependencies> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
      conf="compile->default"/> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
      conf="sources->default"> 
      <artifact name="commons-logging" type="sources" ext="jar"/> 
     </dependency> 
     <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
      conf="javadoc->default"> 
      <artifact name="commons-logging" type="javadoc" ext="jar"/> 
     </dependency> 
    </dependencies> 
</ivy-module> 

Y la siguiente build.xml:

<project name="ivy-test" default="default" basedir="." 
    xmlns:ivy="http://ant.apache.org/ivy"> 

    <property name="ivy.dir" value="${basedir}/ivy.dir"/> 
    <import file="${ivy.dir}/ivy.tasks.xml"/> 

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

    <target name="clean"> 
     <delete dir="${target.dir}"/> 
     <ivy:cleancache/> 
    </target> 

    <target name="default" 
     depends="-resolve"> 

     <fail message="ivy.conf is not defined"> 
      <condition> 
       <not> 
        <isset property="ivy.conf"/> 
       </not> 
      </condition> 
     </fail> 

     <delete dir="${target.dir}"/> 
     <mkdir dir="${target.dir}"/> 
     <ivy:retrieve conf="${ivy.conf}" 
      pattern="${target.dir}/[artifact]-[revision].[ext]"/> 
    </target> 
</project> 

En la línea de comandos, voy a escribir:

$ ant -Divy.conf=compile 

Y, que debería descargar el jarfile con las clases.

Sin embargo, si lo escribo esto:

$ ant -Divy.conf=sources 

Quiero el archivo JAR que contiene las fuentes y no las clases, y cuando escribo esto:

$ ant -Divy.conf=javadoc 

quiero que el archivo jar que contiene el javadoc y no las fuentes.

Estoy bastante seguro de que es mi ivy.xml que no está del todo bien. Originalmente intentado esto:

<dependencies> 
    <dependency org="commons-logging" name="commons-logging" rev="1.1.1"> 
     <artifact name="commons-logging" type="jar" ext="jar" conf="compile->default"/> 
     <artifact name="commons-logging" type="sources" ext="jar" conf="sources->default"/> 
     <artifact name="commons-logging" type="javadoc" ext="jar" conf="javadoc->default"/> 
    </dependency> 

que descargó la jarra, las fuentes, y javadoc, pero a la vez no importa qué configuración intenté.

Respuesta

4

Bien, creo que lo he descubierto. Estaba pensando todo este proceso. Mi sección <dependencies> debería tener este aspecto:

<dependencies> 
    <dependency org="commons-logging" name="commons-logging" rev="1.1.1" 
     conf="javadoc->javadoc;sources->sources;compile->default"/> 
</dependencies> 

Esto mapea mi javadoc a Maven de javadoc y mi sources a Maven de sources. Cuando mapeé conf="sources->default", estaba mapeando mi sources a Maven's default que son las dependencias de compilación.

Puedo especificar todas las configuraciones en una línea, y no necesito entidades separadas <artifact>.

+0

conf = "javadoc, sources, compile" debería funcionar, también. – oers

+0

Encontré que si no asigno mi configuración a la predeterminada, obtengo todo, lo quiera o no. En su ejemplo, si dije '', obtendré el jar, el javadoc y las fuentes. En ese caso, solo quiero las clases jar. Si digo '' solo quiero el Javadoc. –

+0

sí, a la derecha :) Olvidé que el valor predeterminado es el alcance de maven para el único frasco. Por lo tanto, podría acortarse a conf = "javadoc; sources; compilar-> por defecto", creo. – oers