2012-01-10 7 views
1

私は内部のアイビーリポジトリの下にかなりの数のプロジェクトがあり、その下には多くのリビジョンがあります。リポジトリ全体の依存関係レポートを作成して、どのバージョンのアーティファクトが他のアーティファクトのどのリビジョンに依存しているかを示したいと思います。明らかに、公開されたivy xmlファイルを解析するスクリプトを作成することはあまり難しくありませんが、この機能がすでに存在する場合は、それを使用します。 repreportタスクのようなものは素晴らしいかもしれませんが、リポジトリ全体のためです。ivyレポート全体レポ?

ここでの主な目標は、他のアーティファクトによって参照されていないアーティファクトのレポートを取得して、リポジトリから削除する候補のリストを作成することです。

したがって、ivyはリポジトリ全体との依存関係レポートを作成する方法はありますか?

編集:これで作業すると、ivyのように見えます。repreportは行く方法です。ここで

は私のbuild.xmlファイルです:

<project name="Report Build" xmlns:ivy="antlib:org.apache.ivy.ant" basedir="."> 
    <property name="ivy.version" value="2.2.0"/> 
    <property name="ivy.home" value="${user.home}/.ivy2"/> 

    <target name="fetch-ivy" unless="offline" description="Install Ivy if it doesn't already exist"> 
     <mkdir dir="${ivy.home}"/> 
     <get 
       src="http://repo2.maven.org/maven2/org/apache/ivy/ivy/${ivy.version}/ivy-${ivy.version}.jar" 
       dest="${ivy.home}" usetimestamp="true"/> 
    </target> 

    <target name="init-ivy" depends="fetch-ivy" unless="ivy-initialized"> 
     <path id="ivy.lib.path"> 
      <fileset dir="${ivy.home}" includes="*.jar"/> 
     </path> 
     <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.lib.path"/> 
     <property name="ivy-initialized" value="yes"/> 
    </target> 

    <target name="report" depends="init-ivy"> 
     <ivy:settings file="ivy-settings-report.xml" id="report.ivy.settings"/> 
     <ivy:repreport settingsref="report.ivy.settings"/> 
    </target> 
</project> 

そして、ここに私のツタの設定ファイルである:

<?xml version="1.0" encoding="UTF-8"?> 
<ivy-settings> 
    <settings defaultResolver="main"/> 
    <resolvers> 
     <chain name="main"> 
      <url name="internalartifacts" m2compatible="false"> 
       <artifact 
         pattern="http://internalartifacts.local/[organization]/[module]/[revision]/[artifact]-[revision](-[classifier]).[ext]"/> 
       <ivy pattern="http://internalartifacts.local/[organization]/[module]/[revision]/ivy-[revision].xml"/> 
      </url> 
     </chain> 
    </resolvers> 
</ivy-settings> 

答えて

2

repreportのドキュメントは言う:

をXMLを生成しますリポジトリ内のすべての モジュールのすべての最新バージョンを報告してください:

<ivy:repreport /> 

制限:このタスクは、リポジトリを閲覧できるようにする必要があり ので、リポジトリのリストをサポートするリゾルバに制限されています。 では、m2compatibleモードを使用して リポジトリ内のすべての組織を報告することはできません。さらに、 組織を一覧表示するには、このタスクでは、使用された リゾルバに[組織]トークンが必要です。

これは完全に機能します。

コメントに記載されているとおり: リポジトリには、アーティファクトのファイルがivy.xml個あることが重要です。 ivyは成果物間の依存関係を認識できず、レポートは空になります。

+0

私はそれを実行しようとしましたが、結果が戻ってきて空のXMLファイルが生成されました。私は今それを見ていると私はそれがどのように動作するか分からない。私がivy:repreportを実行しただけの場合、どのrepoを使うべきかはどのように分かりますか?私は自分のアイビーの設定でいくつか持っている。私は別の設定ファイルを取ることができるタスクのためのオプションを気づいた...それは私は単一のレポを指定することができますか? – user605331

+0

私は特別なivysettings.xmlを作成しましたが、これはそのレポートに使用されているだけです(リゾルバ/レポが1つしかありません)。 – oers

+0

小さなbuild.xmlファイルと特別なivy設定ファイルを作成しました。それを実行すると空のレポートが作成されます。私は関連するファイルの完全なリストを元の投稿に編集しました。 – user605331