我正在阅读有关为scalac设置ant任务的先前堆栈溢出问题:FSC recompiles every time

奇怪的是当我测试-dependencyfile选项时,我发现在任何地方都没有生成依赖文件 . 我正在使用ubuntu的scalac 2.9.1以及ant任务中的官方2.10.2 jar来测试它 . 似乎命令行实用程序和ant任务都在没有抱怨的情况下接受我的输入(它们在语法上是正确的吗?) .

我是以错误的方式使用此功能吗?

例如 . 从命令行:

scalac -dependencyfile scala_dependencies *.scala

来自 Ant 的任务

<!-- inside a macro definition -->
<scalac destdir="@{destdir}" deprecation="yes"
        force="yes" dependencyfile="scala_dependencies"
        addparams="@{addparams}"
        scalacdebugging="true">
   <!-- src, classpath, patternset and etc -->
</scalac>

更新:

我添加了-make:传递选项到comand-line它确实为我生成了一个文件,但我第二次运行它,scalac只是崩溃了 . $ scalac -make:transitive -dependencyfile scala_dependencies * .scala重新编译2个文件警告:有1个弃用警告;使用-deprecation重新运行以获取详细信息错误:scala.tools.nsc.io.Path上的java.lang.NullPointerException $ .apply(Path.scala:73)scala.tools.nsc.dependencies.DependencyAnalysis $$ anonfun $ saveDependencyAnalysis $ 1.apply(DependencyAnalysis.scala:33)at scala.tools.nsc.dependencies.DependencyAnalysis $$ anonfun $ saveDependencyAnalysis $ 1.apply(DependencyAnalysis.scala:33)at scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ emit $ 1 $ 2 $$ anonfun $在scala.tools.nsc.dependencies.Files申请$ 6.apply(Files.scala:96)$ FileDependencies $$ anonfun $ emit $ 1 $ 2 $$ anonfun $ apply $ 6.apply(Files.scala :96)scala.collection.mutable.HashSet.foreach(HashSet.scala:72)at scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ emit $ 1 $ 2.apply(Files.scala:96)at scala .tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ emit $ 1 $ 2.apply(Files.scala:96)at scala.collection.mutable.OpenHashMap $$ anonfun $ foreach $ 1.apply(OpenHashMap.scala:221)at at scala.collection.mutable.OpenHashMap $$ anonfun $ $的foreach 1.适用(OpenHas hMap.scala:219)at scala.collection.mutable.OpenHashMap $$ anonfun $ foreachUndeletedEntry $ 1.apply(OpenHashMap.scala:226)at scala.collection.mutable.OpenHashMap $$ anonfun $ foreachUndeletedEntry $ 1.apply(OpenHashMap.scala: 226)scala.collection.IndexedSeqOptimized $ class.foreach(IndexedSeqOptimized.scala:34)at scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38)at scala.collection.mutable.OpenHashMap.foreachUndeletedEntry(OpenHashMap.scala :226)scala.tolection.ns上的scala.collection.mutable.OpenHashMap.foreach(OpenHashMap.scala:219)scala.tools.nsc.dependencies.Files $ FileDependencies.emit $ 1(Files.scala:96)at scala.tools.nsc.dependencies在scala.tools.nsc.dependencies的scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ writeTo $ 1.apply(Files.scala:92).Files $ FileDependencies.writeTo(Files.sca la:103) . 文件$ FileDependencies $$ anonfun $ writeTo $ 1.apply(Files.scala:92)at scala.tools.nsc.dependencies.Files $ class.writeToFile(Files.scala:163)at scala.tools.nsc.Global $ dependencyAnalysis $ .writeT oFile(Global.scala:498)scala.tools.nsc.dependencies.Files $ FileDependencies.writeTo(Files.scala:92)at scala.tools.nsc.dependencies.DependencyAnalysis $ class.saveDependencies(DependencyAnalysis.scala:87) at scala.tools.nsc.Global $ dependencyAnalysis $ .saveDependencies(Global.scala:498)at scala.tools.nsc.dependency.DependencyAnalysis $ class.saveDependencyAnalysis(DependencyAnalysis.scala:32)at scala.tools.nsc.Global $ dependencyAnalysis $ .saveDependencyAnalysis(Global.scala:498)at scala.tools.nsc.Global $ Run.compileSources(Global.scala:1022)at scala.tools.nsc.Global $ Run.compile(Global.scala:1038)at at scala.tools.nsc.Main $ .process(Main.scala:106)位于scala.tools.nsc.Main.main(Main.scala)的scala.tools.nsc.Main $ .main(Main.scala:123)

对于2.10.2,编译器抱怨:警告:-make已弃用:此选项未维护 . 使用sbt或IDE进行选择性重新编译 . 我仍然找不到生成文件