我正在阅读有关为scalac设置ant任务的先前堆栈溢出问题: FSC recompiles every time
奇怪的是当我测试-dependencyfile选项时,我发现在任何地方都没有生成依赖文件。我正在使用ubuntu的scalac 2.9.1以及ant任务中的官方2.10.2 jar来测试它。似乎命令行实用程序和ant任务都在没有抱怨的情况下接受我的输入(它们在语法上是正确的吗?)。但是,
我是否以错误的方式使用此功能?
E.g。来自命令行:
scalac -dependencyfile scala_dependencies *.scala
来自蚂蚁任务
<!-- 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:传递选项到命令行它确实为我生成了一个文件,但我第二次运行它,scalac只是崩溃了。 $ scalac -make:transitive -dependencyfile scala_dependencies * .scala 重新编译2个文件 警告:有1个弃用警告;使用-deprecation重新运行以获取详细信息 错误:java.lang.NullPointerException 在scala.tools.nsc.io.Path $ .apply(Path.scala:73) 在scala.tools.nsc.dependencies.DependencyAnalysis $$ anonfun $ saveDependencyAnalysis $ 1.apply(DependencyAnalysis.scala:33) 在scala.tools.nsc.dependencies.DependencyAnalysis $$ anonfun $ saveDependencyAnalysis $ 1.apply(DependencyAnalysis.scala:33) 在scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ emit $ 1 $ 2 $$ anonfun $ apply $ 6.apply(Files.scala:96) 在scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ emit $ 1 $ 2 $$ anonfun $ apply $ 6.apply(Files.scala:96) 在scala.collection.mutable.HashSet.foreach(HashSet.scala:72) 在scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ emit $ 1 $ 2.apply(Files.scala:96) 在scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ emit $ 1 $ 2.apply(Files.scala:96) 在scala.collection.mutable.OpenHashMap $$ anonfun $ foreach $ 1.apply(OpenHashMap.scala:221) 在scala.collection.mutable.OpenHashMap $$ anonfun $ foreach $ 1.apply(OpenHashMap.scala:219) 在scala.collection.mutable.OpenHashMap $$ anonfun $ foreachUndeletedEntry $ 1.apply(OpenHashMap.scala:226) 在scala.collection.mutable.OpenHashMap $$ anonfun $ foreachUndeletedEntry $ 1.apply(OpenHashMap.scala:226) 在scala.collection.IndexedSeqOptimized $ class.foreach(IndexedSeqOptimized.scala:34) 在scala.collection.mutable.ArrayOps.foreach(ArrayOps.scala:38) 在scala.collection.mutable.OpenHashMap.foreachUndeletedEntry(OpenHashMap.scala:226) 在scala.collection.mutable.OpenHashMap.foreach(OpenHashMap.scala:219) 在scala.tools.nsc.dependencies.Files $ FileDependencies.emit $ 1(Files.scala:96) 在scala.tools.nsc.dependencies.Files $ FileDependencies.writeTo(Files.sca) LA:103) 在scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ writeTo $ 1.apply(Files.scala:92) 在scala.tools.nsc.dependencies.Files $ FileDependencies $$ anonfun $ writeTo $ 1.apply(Files.scala:92) 在scala.tools.nsc.dependencies.Files $ class.writeToFile(Files.scala:163) 在scala.tools.nsc.Global $ dependencyAnalysis $ .writeToFile(Global.scala:498) 在scala.tools.nsc.dependencies.Files $ FileDependencies.writeTo(Files.scala:92) 在scala.tools.nsc.dependencies.DependencyAnalysis $ class.saveDependencies(DependencyAnalysis.scala:87) 在scala.tools.nsc.Global $ dependencyAnalysis $ .saveDependencies(Global.scala:498) 在scala.tools.nsc.dependencies.DependencyAnalysis $ class.saveDependencyAnalysis(DependencyAnalysis.scala:32) 在scala.tools.nsc.Global $ dependencyAnalysis $ .saveDependencyAnalysis(Global.scala:498) 在scala.tools.nsc.Global $ Run.compileSources(Global.scala:1022) 在scala.tools.nsc.Global $ Run.compile(Global.scala:1038) 在scala.tools.nsc.Main $ .process(Main.scala:106) 在scala.tools.nsc.Main $ .main(Main.scala:123) 在scala.tools.nsc.Main.main(Main.scala)
对于2.10.2,编译器抱怨: 警告:-make已弃用:此选项未维护。使用sbt或IDE进行选择性重新编译。 我仍然找不到生成文件