2011-11-29 25 views
9

ivy: i kullanmak için çalışıyorum .ivy deposu için oluşturduğum bir jar yayımlamak için yayımlamak, ancak bir hata alıyorum. Eminim doğru kullanmadığımdan eminim, bu yüzden birisinin beni doğru yönde gösterebileceğini umuyordum. Ben yapı çalıştırdığınızdaIvy kullanarak sorunlar: yayınlamak görev

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

:

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

Build.xml şuna benzer:

proje yapısı böyle bir şeydir .xml, aşağıdaki hatayı alıyorum:

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) 

cevap

15

Ivy dosyanızda bir publications bölümünü unutmuşsunuzdur.

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

durum ve revizyon (pubrevision) alanları publish görev tarafından belirtilebilir şöyle:

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

Not 1:

O kadar kolay olurdu İsim dosyasında revizyon numarası olmadan jar dosyası oluşturunuz. Ivy'nin yapay deseninin kavanoz dosyasını almasına izin ver.

Not 2:

Sen Yapınızda bir aşamada bir sarmaşık kararlılık gerektirir, aksi sarmaşık dosya işleme almaz.