从纯蚂蚁迁移到ant + ivy后,我的项目构建时间从7s增加到26s,而增量重建现在是7s而不是不到1s(几乎是即时)。
大部分时间似乎花费在ivy:resolve
上,我需要使用ivy:cachepath
生成类路径。
有没有办法加快速度,尤其是重建?
答案 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