根据changing paths上的sbt教程,我试图将“目标”输出目录更改为“其他”
override def outputDirectoryName = "someother"
一切顺利,除了一个:sbt自动创建目标目录,其中包含“.history”文件。为什么sbt会这样做,因为它应该创建仅“另一个”dir?我试图覆盖从BasicProjectPaths继承的所有方法(我使用sbt.DefaultProject作为我的项目描述符的超类)
override def mainCompilePath = ...
override def testCompilePath = ...
...
但是,尽管路径覆盖,sbt仍会创建“target”文件夹。
答案 0 :(得分:2)
看起来它应该使用trunk中的覆盖输出目录名...
/** The path to the file that provides persistence for history. */
def historyPath: Option[Path] = Some(outputRootPath / ".history")
def outputPath = crossPath(outputRootPath)
def outputRootPath: Path = outputDirectoryName
def outputDirectoryName = DefaultOutputDirectoryName
在以前的版本中可能有所不同。您考虑过raising a new bug吗?
答案 1 :(得分:0)
在sbt 0.13.5中,我找到了一种通过在build.sbt文件中重新分配目标来更改目标文件夹的方法:
target:= file(“someotherParent”)/“someotherSubdir”
这只修改了构建的类和工件的目录,但.history文件始终位于项目根目录中。
不幸的是,其他一些插件(xsbt-web-plugin)似乎也有问题 - 通过SBT控制台运行webapp会产生奇怪的错误,当我切换回标准目录布局时,这些问题就消失了。
答案 2 :(得分:0)
实现我的目标的更好方法(在一个目录中的所有JARS,其名称包含JAVA-VM版本)似乎是指定适当的发布目标 - 对“sbt publish”的限制较少,并且其他插件不会受到不同目录布局的干扰。