scala的ant fsc任务的速度
我有一个蚂蚁文件,我用来编译我的scala项目。我正在使用fsc,它可以避免2?3秒钟,我的核心2需要加载编译器。
我的问题是:蚂蚁fsc任务确实会产生相同的2?3秒的惩罚,据我所知。这是非常讨厌的,因为有专门的fsc是因为这个原因。这是非常烦人的,因为它是真正的开始时间,而不是处理时间,所以我不得不等待3秒在fsc任务,即使没有什么可以重新编译。每一次,它变得更加严重。 我的调查似乎显示大部分时间都是用在scala-compiler.jar上。实际上,由于它们直接运行编译器,所以scalac和fsc任务需要这一点。此外,从ant任务的类路径中删除scala-compiler.jar结果当然是因为缺少依赖关系而导致任务失败。 目前我正在查看的解决方案是将fsc任务重写为应用任务,并手动调用fsc。那我不会有延误。只能手动重做scala中包含的任务专门处理的工作,可惜。 有没有人有这个问题的经验?在我的分析中有什么问题吗?你能建议一个比我计划实施的更好的解决方案吗? 作为参考,这里是我的任务看起来(是的,它编译一个android项目): <target name="compile-scala" description="Compile scala files"> <taskdef resource="scala/tools/ant/antlib.xml" classpath="${scala-library.jar}:${scala-compiler.jar}" /> <mkdir dir="${out.classes.absolute.dir}" /> <fsc encoding="utf-8" deprecation="on" destdir="${out.classes.absolute.dir}"> <src> <dirset dir="." includes="src"/> <dirset dir="." includes="gen"/> </src> <classpath> <pathelement location="${android.jar}" /> <fileset dir="${sdk.dir}/tools/lib" includes="*.jar" /> </classpath> </fsc> </target> 编辑:这是应用的任务看起来像。似乎工作然而,这个问题仍然令人满意,所以问题依然存在。 <target name="fast-compile-scala" description="Compile scala files without loading the compiler inside ant"> <mkdir dir="${out.classes.absolute.dir}" /> <apply executable="fsc" failonerror="true" parallel="true"> <arg value="-encoding" /> <arg value="utf-8" /> <arg value="-deprecation" /> <arg value="-dependencyfile" /> <arg value="${out.classes.absolute.dir}/${scala.deps}" /> <arg value="-g:vars" /> <arg value="-d" /> <arg value="${out.classes.absolute.dir}" /> <arg value="-make:transitivenocp" /> <arg value="-classpath" /> <arg value="${android.jar}:${out.classes.absolute.dir}" /> <!-- <arg value="-optimize" /> --> <!-- <arg value="-verbose" /> --> <!-- <arg value="-explaintypes" /> --> <fileset dir="src" includes="**/*.scala" /> <fileset dir="src" includes="**/*.java" /> <fileset dir="gen" includes="**/*.java" /> </apply> </target> 再次编辑: 解决方法
希望这将有助于您:
第一例(fsc ant task) 当你启动ant,你加载一个全新的JVM,其中加载scala-compiler.jar。 第二种情况(蚂蚁启动命令行) 正如你所概述的,这仅限于具有少量文件的简单项目。最大命令行长度:windows xp – > 8191,linux / osx – >内核值(通常> 100000) 提出解决方案 在maven中有一个目标scala:cc(连续编译),它将编译器保存在内存中,并持续扫描文件进行修改。如果您不想将您的构建器更改为maven,或许您可以编写一个同样的事情的新的ant任务(fscc:一个快速的scala连续编译器) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |