2012-01-10 99 views
1

我正在處理一個內部常青藤資源庫,其中有相當數量的項目,每個項目都有很多修訂版本。我想爲整個存儲庫製作一個依賴關係報告,顯示哪些版本的哪些工件取決於其他工件的哪些版本。顯然,製作腳本來解析已發佈的ivy xml文件並不難,但如果這個功能已經存在,我會使用它。類似代表任務的東西會很好,但對於整個回購。常春藤報告整個回購?

這裏我的主要目標是獲取沒有被任何其他工件引用的工件報告,以便製作從回購庫中刪除的候選清單。

那麼,常春藤有沒有辦法建立一個依賴關係報告和整個存儲庫?

編輯:通過這個工作,它看起來像常春藤: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,它如何知道使用哪個回購?我有幾個在我的常春藤設置。我注意到可以採取單獨的設置文件的任務選項...是這樣,我可以指定一個單一的回購? – user605331 2012-01-10 13:59:56

+0

我會創建一個專門用於該報告的ivysettings.xml(只有一個解析器/回購)。 – oers 2012-01-10 14:03:39

+0

爲了達到這個目的,我創建了一個小的build.xml文件和一個特殊的ivy設置文件。運行它仍然會產生一個空的報告。我已經編輯了相關文件的完整列表的原始帖子。 – user605331 2012-01-10 14:34:13