2

Ivyを使用してライブラリの依存関係を管理し、特定の構成ですべてのモジュールとそのリビジョンのレポートを作成し、これを約30のプロジェクトで組み合わせる必要があります。単純なリストであり、依存関係はありません。

「特定の構成」とは、たとえばivy.xmlファイルで「コンパイル」、「ランタイム」、「テスト」の構成を使用し、リストだけに関心があるため、「コンパイル」と「ランタイム」のみを含めることを意味します。製品に実際に同梱されているライブラリの数。

私は<ivy:report />タスクに精通しており、それを使用して各プロジェクトのHTMLレポートを生成します。もちろん、この出力を使用して解析するか、XSLTを使用して目的のレポート形式を実現するオプションがあります。しかし、もっと簡単な方法があるのだろうか?

ありがとう!

4

1 に答える 1

2

artifactreportタスクを使用して、構成内のアーティファクトの詳細を示す XML ファイルを生成できます。

<ivy:artifactreport tofile="build/runtime.xml" conf="runtime"/>

これは、 groovyタスクとivy cachefilesetタスクを組み合わせて、コンパイルの依存関係に基づいて Eclipse の「.classpath」ファイルを生成する、わずかに異なるソリューションです。

<macrodef name="eclipse">
    <attribute name="srcdir"/>
    <attribute name="outputdir"/>
    <attribute name="classpathref" default="build.path"/>
    <attribute name="conf" default="compile"/>
    <sequential>
        <taskdef name="groovy" classname="org.codehaus.groovy.ant.Groovy" classpathref="@{classpathref}"/>

        <ivy:cachefileset setid="libfiles" conf="@{conf}"/>

        <groovy>
        <arg value="@{srcdir}"/>
        <arg value="@{outputdir}"/>

        import groovy.xml.MarkupBuilder

        //
        // Generate the classpath file
        //
        // The "lib" classpathentry fields are populated using the ivy artifact report
        //
        project.log("Creating .classpath")

        new File(".classpath").withWriter { writer ->
            def xml = new MarkupBuilder(writer)

            xml.classpath() {
                classpathentry(kind:"src",    path:args[0])
                classpathentry(kind:"output", path:args[1])
                classpathentry(kind:"con",    path:"org.eclipse.jdt.launching.JRE_CONTAINER")

                project.references.libfiles.each {
                    classpathentry(kind:"lib", path:it)
                }
            }
        }
        </groovy>        
    </sequential>
</macrodef>
于 2012-08-02T14:34:52.850 に答える