2011-11-29 13 views
9

Estoy tratando de usar hiedra: publique para publicar un jar que he creado en el repositorio .ivy, pero me aparece un error. Estoy bastante seguro de que no lo estoy usando correctamente, así que esperaba que alguien pudiera señalarme en la dirección correcta.Problemas con la hiedra: tarea de publicación

La estructura del proyecto es algo como esto:

root--| 
     |--src 
     |--build 
     |  | 
     |  |--someorganisation-commonlib-1.0.0.jar 
     | 
     |--ivy.xml 
     |--build.xml 

El build.xml se ve algo como esto:

<target name="publish"> 
     <ivy-publish organisation="someorganisation" resolver="local" module="commonlib" revision="1.0.0"> 
       <artifacts pattern="build/[organisation]-[module](-[revision])(-[type]).[ext]" /> 
     </ivy-publish> 
    </target> 

ivy.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
    <ivy-module version="2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ant.apache.org/ivy/schemas/ivy.xsd"> 

     <info 
      organisation="someorganisation" 
      module="commonlib" 
      status="integration"> 
     </info> 

    <dependencies> 
      <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/> 
      <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/> 
      <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/> 
      <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/> 
     </dependencies> 

    </ivy-module> 

Cuando ejecuto la acumulación .xml, obtengo el siguiente error:

C:\workspaces\wkspc\someproject\build.xml:8: someorganization#commonlib;1.0.0: java.lang.IllegalStateException: ivy file not found in cache for someorganization#commonlib;1.0.0: please resolve dependencies before delivering (C:\Documents and Settings\someuser\.ivy2\cache\resolved-someorganization-commonlib-1.0.0.xml) 

Respuesta

15

Olvidaste una sección publications en tu archivo ivy.

<ivy-module version="2.0"> 
    <info organisation="someorganisation" module="commonlib"/> 

    <publications> 
     <artifact name="commonlib" type="jar"/> 
    </publications> 

    <dependencies> 
     <dependency org="com.thoughtworks.xstream" name="xstream" rev="1.3.1" transitive="false"/> 
     <dependency org="org.slf4j" name="slf4j-api" rev="1.6.1" transitive="false"/> 
     <dependency org="org.slf4j" name="slf4j-jdk14" rev="1.6.1" transitive="false"/> 
     <dependency org="joda-time" name="joda-time" rev="1.6.2" transitive="false"/> 
    </dependencies>  
</ivy-module> 

Los (pubrevision) Campos estado y de revisión pueden ser especificados por la tarea publish de la siguiente manera:

<ivy:publish resolver="${publish.resolver}" pubrevision="${publish.revision}" status="${publish.status}"> 
     <artifacts pattern="${build.dir}/[organisation]-[artifact].[ext]"/> 
    </ivy:publish> 

Nota 1:

sería más sencillo para genere el archivo jar sin el número de revisión en el nombre. Solo deja que el patrón de artefactos de ivy recoja el archivo jar.

Nota 2:

Va a requerir una determinación de hiedra en algún momento de su construcción, de lo contrario el archivo de la hiedra no se procesan.

Cuestiones relacionadas