2012-01-10 52 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