我有一个sbt项目,已经导入到Intellij中。有时我会在命令行中使用sbt构建项目,然后当我需要调试时,我会从Intellij中构建它。然而,每次我切换时,都需要进行完整的重新构建,而实际上并不需要。两种构建过程都输出到相同的类文件夹,即.../target/scala-2.11/classes,所以我不明白为什么会一直进行完整的重新构建?
我有一个sbt项目,已经导入到Intellij中。有时我会在命令行中使用sbt构建项目,然后当我需要调试时,我会从Intellij中构建它。然而,每次我切换时,都需要进行完整的重新构建,而实际上并不需要。两种构建过程都输出到相同的类文件夹,即.../target/scala-2.11/classes,所以我不明白为什么会一直进行完整的重新构建?
file
> Settings
> Build, Execution, Deployment
> Build Tools
> SBT
> Use SBT shell for build and import
解决方案是为 IDE 和 SBT 使用不同的输出目录,这样 IntelliJ IDEA 将仅重新构建自上次 IDE 构建以来已修改的文件,而您的命令行 SBT 构建将不会触发 IDE 中的重建。
可以使用 sbt-ide-settings 插件进行此配置。
将以下内容添加到 plugins.sbt
中(或者您配置插件的任何文件中):
resolvers += Resolver.url("jetbrains-bintray",url("http://dl.bintray.com/jetbrains/sbt-plugins/"))(Resolver.ivyStylePatterns)
addSbtPlugin("org.jetbrains" % "sbt-ide-settings" % "0.1.2")
以下是如何在build.sbt
中自定义IDE输出目录的方法:
ideOutputDirectory in Compile := Some(new File("target/idea/classes"))
ideOutputDirectory in Test := Some(new File("target/idea/test-classes"))
根据您的需求随意更改路径。