首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖sbt多项目构建的输出目录

覆盖sbt多项目构建的输出目录
EN

Stack Overflow用户
提问于 2015-07-07 23:54:26
回答 1查看 748关注 0票数 5

我正在使用sbt进行多项目构建,如下所述:

http://www.scala-sbt.org/0.13/tutorial/Multi-Project.html

以下是顶级build.scala文件:

代码语言:javascript
复制
import sbt._
import Keys._

object ExampleBuild extends Build {
  lazy val scrooge = Project(
    id = "scrooge",
    base = file("messages-scrooge")
  )
  lazy val examples = Project(
    id = "examples",
    base = file("examples")
  ).dependsOn(scrooge)
}

我想更改目标目录,以便将所有输出放到单独的分区中。*下面的代码看起来很有效,但实际上很笨拙,因为我需要为每个子项目单独更改它。如果有更多的人,情况只会变得更糟:

代码语言:javascript
复制
target="$HOME/sbt-target"
sbt "project scrooge" "set target := new java.io.File(\"$target/scrooge\")" "project examples" "set target := new java.io.File(\"$target/examples\")" "project root" clean assembly

我更喜欢做类似下面这样的事情,但它无法编译,并出现了许多关于"object blah is not of package...“的消息。在"examples“项目试图从"scrooge”项目导入类型的地方。我认为这是因为这两个项目都在互相践踏对方的输出文件。

代码语言:javascript
复制
target="$HOME/sbt-target"
sbt "set every target := new java.io.File(\"$target\")" clean assembly

有没有更好的方法来做这件事?我不介意更改构建文件,但我不希望在其中包含任何硬编码路径。

*-我想要更改输出目录的原因是,我正在Vagrant VM中构建,并且源文件夹是使用Virtualbox共享文件夹从Windows主机共享到Linux VM的。Scala编译器尝试创建一些超过Windows260字符路径限制的超长文件名。如果您强烈认为我最好尝试以不同的方式解决这个问题,请让我知道,我会发布一个单独的问题,但我已经在这个方向遇到了很多问题,因此我希望简单地更改目标目录。

EN

回答 1

Stack Overflow用户

发布于 2019-07-13 06:33:10

我用一个插件来做这件事。在我的例子中,我尝试合并所有的target/文件夹(没有冲突):

代码语言:javascript
复制
package sbt
package plugins

/** [[PluginOptimizedLayout]] is an [[AutoPlugin]] that consolidates `target/` folders under the root `target/`.
  * 
  * This removes noise when navigating the source folders; and enables elision of `src/`.
  */
object PluginOptimizedLayout extends AutoPlugin {    
  import Keys._

  override def requires = JvmPlugin
  override def trigger = allRequirements

  override lazy val projectSettings = Seq(
    target := {
      (ThisBuild / baseDirectory).value / "target" / thisProject.value.id
    }
  )
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31273588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档