通过使用maven scala插件,我正在设法使用fsc守护进程编译我的主要类,这要感谢前面的答案Fastest way to compile scala with maven
但是,这并不适用于测试源文件。我可以为测试编译阶段添加maven执行,但是如果我指定cc目标,它会编译src/main类(快速,但错误的类)。如果我指定了compileTest目标,它使用标准编译器编译src/test类(正确的类,但速度慢)。
我遗漏了什么?
..。已经取得了一些进展,我在下面发布的答复中对此进行了报道。
但是,..--这表明编译服务器没有启动。看来,scala.tools.nsc.MainGenericRunner类在类路径上找不到scala.tools.nsc.CompileServer。现在我知道它在java类路径中,就像在提供MainGenericRunner的同一个jar文件中一样,但是我是否需要以某种方式指定一个“用户”类路径?
由maven插件运行以启动CompileServer的命令如下所示:
cmd.exe /C C:\Progra~1\Java\jdk1.7.0\jre\bin\java -classpath
C:\projects\m2\repository\org\scala-lang\scala-library\2.9.0-1\scala-library-2.9.0-1.jar;C:\projects\m2\repository\org\scala-lang\scala-compiler\2.9.0-1\scala-compiler-2.9.0-1.jar
-Xbootclasspath/a:C:\projects\m2\repository\org\scala-lang\scala-library\2.9.0-1\scala-library-2.9.0-1.jar
scala.tools.nsc.MainGenericRunner
scala.tools.nsc.CompileServer
-target:jvm-1.5 -unchecked
>C:\Users\...\AppData\Local\Temp\scala.tools.nsc.MainGenericRunner.out
2>C:\Users\...\AppData\Local\Temp\scala.tools.nsc.MainGenericRunner.err 运行它,将在MainGenericRunner.err文件中获得此错误。
Exception in thread "main" java.lang.RuntimeException: Cannot figure out how to run target: scala.tools.nsc.CompileServer
at scala.sys.package$.error(package.scala:27)
at scala.tools.nsc.GenericRunnerCommand.scala$tools$nsc$GenericRunnerCommand$$guessHowToRun(GenericRunnerCommand.scala:38)
at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
at scala.tools.nsc.GenericRunnerCommand$$anonfun$2.apply(GenericRunnerCommand.scala:48)
at scala.Option.getOrElse(Option.scala:109)
at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:48)
at scala.tools.nsc.GenericRunnerCommand.<init>(GenericRunnerCommand.scala:17)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:33)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:89)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)欢迎提出建议!
发布于 2011-06-30 17:05:18
您可能想考虑使用SBT。
它具有FSC的所有优点(即保持一个“温暖”的编译器来加快速度)
与maven不同,您不需要复杂的手动配置来支持依赖跟踪(只需要重新编译真正需要的内容)。
与fsc不同,它也不会将您与安装在path上的scala版本联系在一起,并且不会在配置错误的主机名(以及其他类似的问题)面前崩溃。
发布于 2012-05-08 11:52:40
我也有同样的问题,其他的解决方案没有正确地解决问题,或者不合适,有效的是使用maven-scala的快照版本:
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.3-SNAPSHOT</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
<configuration>
<args>
<arg>-unchecked</arg>
<arg>-deprecation</arg>
<arg>-explaintypes</arg>
</args>
</configuration>
</plugin>发布于 2011-06-30 14:42:05
进一步研究产生了这个解决方案:添加一个具有cc目标和固定的主源路径的新执行:
<execution>
<id>cc-compiletest</id>
<phase>test-compile</phase>
<goals>
<goal>cc</goal>
</goals>
<configuration>
<mainSourceDir>${project.build.sourceDirectory}/../../test/scala</mainSourceDir>
<useFsc>true</useFsc>
<once>true</once>
<displayCmd>true</displayCmd>
</configuration>
</execution>,它针对/test/scala目录而不是(默认) /main/scala运行cc 'fast‘编译目标。
这是最好的/唯一的办法吗?
https://stackoverflow.com/questions/6533858
复制相似问题