2011-11-29 12 views
9

Sto cercando di utilizzare edera: pubblica per pubblicare un jar che ho creato nel repository .ivy, ma sto ricevendo un errore. Sono abbastanza sicuro di non usarlo correttamente, quindi speravo che qualcuno potesse indicarmi la giusta direzione.Problemi con l'edera: pubblicare attività

La struttura del progetto è qualcosa di simile:

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

build.xml sembra qualcosa di simile:

<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> 

Quando eseguo la build .xml, ho ricevuto il seguente errore:

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) 

risposta

15

Hai dimenticato una sezione publications nel file di edera.

<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> 

I stato e revisione (pubrevision) campi possono essere specificati dal compito publish come segue:

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

Nota 1:

sarebbe più semplice per genera il file jar senza il numero di revisione nel nome. Lascia che sia il pattern artefatto di edera a raccogliere il file jar.

Nota 2:

Avrete bisogno di una volontà di edera ad un certo punto nella vostra costruzione, altrimenti il ​​file edera non viene elaborato.