scala – sbt项目构建中的多个目标目录
我在这个结构中有一个sbt项目:
. ├── build.sbt ├── project │?? ├── build.properties │?? └── plugins.sbt └── src ├── main │?? └── java │?? └── smcho │?? └── App.java └── test └── java └── smcho └── AppTest.java 使用sbt包,我有三个目标目录,target2和target3具有相似的结构. . ├── build.sbt ├── project │?? ├── build.properties │?? ├── plugins.sbt │?? ├── project │?? │?? └── target <---------- TARGET 1 │?? └── target <---------- TARGET 2 │?? ├── config-classes │?? ├── resolution-cache │?? ├── scala-2.10 │?? └── streams ├── src │?? ├── main │?? │?? └── java │?? └── test │?? └── java └── target <--------------- TARGET 3 ├── resolution-cache │?? ├── com.example │?? └── reports ├── scala-2.11 │?? ├── classes │?? └── hello_2.11-0.1.0.jar └── streams ├── $global └── compile 为什么这样?有趣的是,sbt clean不会删除目标目录,有没有办法让一个简单的目标,以便我可以轻松删除它们? 这是build.sbt: lazy val hello = taskKey[Unit]("An example task") val junit = "junit" % "junit" % "4.11" % "test" lazy val commonSettings = Seq( organization := "com.example",version := "0.1.0",scalaVersion := "2.11.4" ) lazy val root = (project in file(".")). settings( commonSettings: _* ). settings( hello := { println("Hello!") },name := "hello",libraryDependencies += junit ) 解决方法
SBT中的每个项目都有一个目标目录.这就是它编译的类和其他生成的东西.
您的根是一个项目,图中的TARGET 3是其目标. 您的构建定义(项目目录)也是一个项目.使用SBT,可以编写scala代码来实现与构建相关的任务和设置.编译代码必须去某个地方.它位于您标记为TARGET 2的目录中 – 项目/目标. SBT中的构建定义可以是递归的,即您的构建定义可以有自己的构建定义.由于您使用的是插件(在project / plugins.sbt中定义),因此您的构建定义需要一个构建定义,最终会在图中编译为项目/项目/目标,即TARGET 1. 在SBT控制台中运行clean时,它将清除当前项目目标目录中的文件.我不认为这是删除整个目录,但我可能错了.在任何情况下,在选择根项目时运行clean应该只影响根项目的目标. 在SBT控制台中,您可以运行重载插件或重新加载返回以分别跳入和跳出(当前)当前项目的构建定义.在该背景下调用清洁将清除其各自的目标. 至于将它们组合成一个易于删除的单一目录,我不确定我是否看到了它的价值.现在已经使用SBT几年了,各种目标的目标从来没有真正阻碍过.我不认为我甚至想在去年左右一次删除目标目录. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |