2012-09-06 4 views
6

私はかなり新しいIvyですが、jarの依存関係を扱えるようになっています。問題はそれを設定しようとしているので、javadocとソースをJARから独立して取得できます。Ivy:Javadocsとソースの取得

私は単純なテストプロジェクトを持っていますが、私が何をしているにせよ、その中にクラスファイルを入れてjarファイルを取り出しています。

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

そして次build.xml

私は、次のivy.xmlファイル持って

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

コマンドラインでは、私が入力します:

$ ant -Divy.conf=compile 

そして、それをクラスを含むjarfileをダウンロードする必要があります。

しかし、私はそれをこのタイプの場合:

$ ant -Divy.conf=sources 

を私はソースではなくクラスを含むJARファイルをしたい、と私は、この入力したとき:

$ ant -Divy.conf=javadoc 

を私はjarファイルをしたいですソースではなくjavadocが含まれています。

私は確かにそれが私のivy.xmlだと確信しています。私はもともとこれを試しました:

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

これはjar、ソース、およびjavadocをダウンロードしましたが、どの設定を試しても問題ありません。

答えて

4

さて、私はそれを理解したと思います。私はこの全過程を考えていた。マイ<dependencies>セクションでは、次のようになります。

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

これは、Mavenのjavadocと私のsources Mavenのsourcesへの私のjavadocをマッピングします。 conf="sources->default"をマップすると、sourcesがコンパイルの依存関係であるMavenのdefaultにマッピングされていました。

すべての設定を1行で指定できます。別途、<artifact>エンティティは必要ありません。

+0

conf = "javadoc、sources、compile"も有効です。 – oers

+0

私の設定をデフォルトにマップしないと、私はそれが必要かどうかをすべて知ることができます。あなたの例では、 ''と言ったら、jar、javadoc、およびソースを取得します。その場合、クラスjarだけが必要です。私が ''と言うと、私はJavadocだけが必要です。 –

+0

ええええええええええええええええええええええええええええええええええええええ:)したがって、conf = "javadoc; sources; compile-> default"と短縮することができます。 – oers

関連する問題