Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ant 提高ivy-resolve的性能_Ant_Ivy - Fatal编程技术网

Ant 提高ivy-resolve的性能

Ant 提高ivy-resolve的性能,ant,ivy,Ant,Ivy,从纯ant迁移到ant+ivy后,我的项目构建时间从7秒增加到26秒,而增量重建现在是7秒,而不是1秒(几乎是瞬间的) 大部分时间似乎都花在ivy:resolve上,我需要使用ivy:cachepath生成类路径 有什么方法可以加快速度,尤其是重建吗?您使用的是?这就是为什么重建如此之短,而初始构建却如此之长的原因 常春藤会比没有常春藤的蚂蚁慢。Ivy必须将您指定的每个jar以及所有依赖项下载到Ivy缓存中(在Unix/Mac/Linux上默认为$HOME/.ivy2/cache,在Window

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

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

有什么方法可以加快速度,尤其是重建吗?

您使用的是
?这就是为什么重建如此之短,而初始构建却如此之长的原因

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

确实没有办法加快jars1的常春藤下载速度,但一旦下载了jars,就没有理由在每次执行新项目或执行清理时不断清理常春藤缓存

您可以做的是设置“清理”,这样您就可以避免清理常春藤缓存,除非您指定它:

是的,这是使用
antcontrib
。我使用我的特殊常春藤目录配置为每个人配置常春藤,并在配置时包括ant contrib、Findbugs、PMD和其他有用工具的定义

但是,在Ant 1.9中,可能不必这样做:

ant -Divy.cleancache=true clean
<property name="ivy.cleancache"   value="false"/>
<target name="clean">
    <ivy:cleancache if:true="ivy.cleancache/>
    <delete dir="${target.dir}"/>
</target>
清理你的常春藤缓存,只需放入
antclean
即可在不清理常春藤缓存的情况下清理构建



一,。如果您使用自己的Maven存储库,如Nexus或Artifactory,您可能能够加快JAR的下载速度。它们将拥有自己的缓存,该缓存将本地存储下载的第三方JAR。这比走出你的网络去寻找这些第三方JAR要快一点,但它们仍然需要下载。可能只需要20秒,而不是26秒。

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

有关更多详细信息,请参见以下答案:


试试这个
-Divy.checkmodified=false
/
-Divy.skip=true
我通常创建两个干净目标“clean”和“clean all”,后者依赖于前者并运行ivy cleancache任务。我认为更简单,不需要第三方“ant contrib”库。否则,我赞同这个答案。缓存(ivy和Nexus)提高了性能。@MarkO'Connor正如我所说的,我有一个特殊的项目,开发人员包括,它配置ivy所需的一切。作为奖励,我添加了大量有用的第三方插件,包括AntContrib。另外,一个显示所有警告的
javac.macro
,以及一个自动将pom.xml添加到jar中的
jar.macro
,就像Maven所喜欢的那样,也是其中的一部分。然而,我给出的最后两种方法确实向您展示了如何在没有Ant contrib的情况下做到这一点。我的观点是正确的。我必须更详细地了解您的github项目,谢谢@马科康纳轻微的忏悔。我们将
build.xml
设置为自动对构建执行
,除非开发人员使用
ivy设置
build.properties
;cleancache=false
。我们的默认设置是清理常春藤缓存,这取决于开发人员设置不这样做的事情。这个想法是Jenkins可以进行新的签出,而不需要其他配置,点击
all
目标并为构建做所有事情。其思想是在项目中配置所有内容。任何带有JDK、And和SVN的PC都可以构建任何项目,而无需进一步安装。默认情况下,我不使用cleancache,因为它会破坏缓存点。我很感兴趣,你从哪里找到了关于任务级别
if:true
?如果名称空间是什么?增加缓存ttl非常有帮助-重建时间减少到2秒。我想多出一秒钟就是常春藤的低效。但由于某些原因,完整构建(带有填充缓存)需要20秒。请创建一个我可以标记的答案。我以为您不必在依赖项更改时运行
ivy:resolve
每个构建?我将
resolve
分离为一个
install
build目标,该目标很少手动运行<代码>缓存路径仍然与以下内容相关:
<property name="ivy.cleancache"   value="false"/>
<target name="clean">
    <ivy:cleancache if:true="ivy.cleancache/>
    <delete dir="${target.dir}"/>
</target>
<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