2011-11-29 34 views
9

Tôi đang cố gắng sử dụng ivy: xuất bản để xuất bản một jar mà tôi đã xây dựng cho kho lưu trữ .ivy, nhưng tôi gặp lỗi. Tôi khá chắc chắn rằng tôi không sử dụng nó một cách chính xác, vì vậy tôi đã hy vọng một ai đó có thể chỉ cho tôi đi đúng hướng.Các vấn đề khi sử dụng ivy: publish task

Cấu trúc dự án là một cái gì đó như thế này:

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

Các build.xml trông giống như sau:

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

Khi tôi chạy xây dựng .xml, tôi nhận được lỗi sau:

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) 

Trả lời

15

Bạn đã quên phần publications trong tệp ivy của mình.

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

Các tình trạngsửa đổi (pubrevision) lĩnh vực có thể được xác định bởi các nhiệm vụ publish như sau:

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

Lưu ý 1:

Nó sẽ đơn giản hơn để tạo tệp jar mà không có số sửa đổi trong tên. Chỉ cần để mô hình tạo tác của ivy nhặt tập tin jar.

Note 2:

Bạn sẽ đòi hỏi một quyết tâm ivy tại một số giai đoạn trong xây dựng của bạn, nếu không file ivy không được xử lý.

Các vấn đề liên quan