常春藤报告整个回购?

时间:2012-01-10 13:40:54

标签: build build-process ivy

我正在开发一个内部常春藤存储库,其下有相当数量的项目,每个都有很多修订版。我想为整个存储库创建一个依赖关系报告,显示哪些工件的哪些版本依赖于其他工件的修订版。显然,制作一个脚本来解析已发布的ivy xml文件并不太难,但是如果这个功能已经存在,我将使用它。像repport任务这样的东西会很好,但对于一个完整的回购。

我的主要目标是获取未被任何其他工件引用的工件的报告,以便列出从存储库中删除的候选项列表。

那么,常春藤有没有办法针对整个存储库构建依赖关系报告?

编辑:通过这个,它看起来像常春藤:才能成为一种方法。

这是我的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>

1 个答案:

答案 0 :(得分:2)

repreport的文档说:

  

为所有最新版本生成xml报告   存储库中的模块:

<ivy:repreport />
     

限制:此任务需要能够浏览存储库,   因此仅限于支持存储库列表的解析器。在   特别是,这意味着它无法报告所有组织   使用m2compatible模式的存储库。而且,能够列出   组织,此任务需要一个[组织]令牌   使用的解析器。

所以这应该完全奏效。

如评论中所述: 您的存储库中包含工件的ivy.xml个文件非常重要。否则,常春藤无法识别工件之间的依赖关系,您的报告将为空。