2012-09-06 27 views
6

Ivy için oldukça yeniyim, ancak kavanoz bağımlılıkları ile çalışmaya başladım. Sorun onu kurmaya çalışıyor, bu yüzden javadokları ve kaynakları kavanozlardan bağımsız olarak alabiliyorum.Ivy: Javadocs ve Kaynaklar Getirme

Basit bir sınama projem var, ancak ne yaptığım önemli değil, jar'i sınıf dosyaları ile getiriyorum.

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

Ve aşağıdaki build.xml:

aşağıdaki ivy.xml dosya

$ ant -Divy.conf=compile 

Ve bu: Komut satırında

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

, ben yazacağım jarfile sınıfları ile indirmelisiniz.

$ ant -Divy.conf=sources 

Ben kaynaklarını ve olmayan sınıflar içeren kavanoz dosya istiyor ve bu yazdığınızda:
$ ant -Divy.conf=javadoc 

Ben kavanoz dosyayı istiyorum ben bu tip Ancak eğer

Bu javadoc ve kaynakları içerir.

Oldukça doğru olmadığım için ivy.xml numaralı telefon numaramdan eminim. Başlangıçta çalıştı bu: Denedim yapılandırma kez olursa olsun en kavanoz, kaynakları ve javadoc, ancak tüm indirilen

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

.

cevap

4

Tamam, sanırım anladım. Bütün bu süreci düşünüyordum. Benim <dependencies> bölüm aşağıdaki gibi görünmelidir:

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

Bu haritalar benim javadoc Maven en javadoc ve benim sources Maven'in en sources için. conf="sources->default"'u eşlediğimde, sources adresimi Maven'in default eşleme bağımlılıkları olan eşlemesiyle eşleştiriyordu.

Tüm yapılandırmaları tek bir satırda belirtebilirim ve ayrı <artifact> varlıklarına ihtiyacım yok.

+0

conf = "javadoc, sources, derleme" de çalışmalıdır. – oers

+0

Yapılandırmamı varsayılan olarak haritalamıyorsam, istediğimi veya yapmamasını herşeyi buluyorum. Örneğinizde, eğer dedim ki 'aldım, jar'ı, javadoc'u ve kaynakları alacağım. Bu durumda, sadece derslik kavanozlarını istiyorum. Eğer söyleyeyim: 'Sadece Javadoc'u istiyorum. –

+0

evet doğru :) Varsayılanın, tek kavanoz için maven kapsamı olduğunu unuttum. Yani conf = "javadoc; kaynaklar; derleme-> varsayılan" diye kısaltılabilir. – oers