提高常春藤解决方案的性能

时间:2013-07-15 14:27:25

标签: ant ivy

从纯蚂蚁迁移到ant + ivy后,我的项目构建时间从7s增加到26s,而增量重建现在是7s而不是不到1s(几乎是即时)。

大部分时间似乎花费在ivy:resolve上,我需要使用ivy:cachepath生成类路径。

有没有办法加快速度,尤其是重建?

3 个答案:

答案 0 :(得分:1)

您使用的是<ivy:cleancache>吗?这就是为什么你的重建时间很短,但你的初始版本太长了。

Ivy比使用没有常春藤的Ant慢。 Ivy必须下载你指定的每个jar,以及所有依赖关系到Ivy缓存(在Unix / Mac / Linux上默认为$HOME/.ivy2/cache,在Windows上为%USERPROFILE%\.ivy2\cache)才能开始。您可以指定4个或5个罐子,但这些罐子可能依赖于可能更依赖的其他罐子。

真的没有办法加速常规下载jar 1 ,但是一旦下载了jar,真的没有理由每次都经常清理Ivy缓存你做了一个新项目,或者当你做一个干净的时候。

您可以做的是设置干净,这样您就可以避免清除常春藤缓存,除非您指定

<taskdef uri="http://ant.apache.org/ivy"
    resource="org/apache/ivy/ant/antlib.xml">
    <classpath>
        <fileset dir="${ivy.dir}">
            <include name="ivy*.jar"/>
        </fileset>
    </classpath>
</taskdef>

<property name="ivy.cleancache"   value="false"/>
<target name="clean">
    <if>
        <istrue value="${ivy.cleancache}"/>
        <then>
           <ivy:cleancache/>
        </then>
    <if>
    <delete dir="${target.dir}"/>
</target>

这样,每次运行ant clean都不会擦除您的常春藤缓存,您可以反复重复使用它。如果要清理常春藤缓存,则需要执行以下操作:

ant -Divy.cleancache=true clean

是的,这是使用antcontrib。我使用我特殊的常春藤目录配置为每个人配置Ivy,而我正在使用它,包括ant-contrib的定义,以及Findbugs,PMD和其他有用的工具。

然而,在Ant 1.9中可能不必这样做:

<property name="ivy.cleancache"   value="false"/>
<target name="clean">
    <ivy:cleancache if:true="ivy.cleancache/>
    <delete dir="${target.dir}"/>
</target>

我没试过这个,但是如果它有效,你就不必使用antcontrib。当然,你也可以这样做:

<target name="ivy.cleancache"
   if="ivy.cleancache">
   <ivy:cleancache/>
</target>

<target name="clean"
    depends="ivy.cleancache">
    <delete dir="${target.dir}"
</target>

然后你可以指定:

$ ant -Divy.cleancache clean

清理你的常春藤缓存,只需将ant clean清除你的构建而不清理常春藤缓存。


1。如果您使用自己的Maven存储库(如Nexus或Artifactory),您可以加快下载jar的速度。它们将拥有自己的缓存,可以在本地存储下载的第三方jar。这比在网络外找到这些第三方罐子要快一些,但它们仍然需要下载。也许不需要花费26秒,它可能只需要20秒。

答案 1 :(得分:1)

另一种选择是关闭基于网络的分辨率并强制常春藤使用缓存数据。

有关详细信息,请参阅以下答案:

答案 2 :(得分:0)

试试这个-Divy.checkmodified=false / -Divy.skip=true