对sbt中核心库的限制

时间:2014-10-13 13:43:22

标签: java scala sbt

有没有办法在sbt中创建对核心库的约束?

例如:

我不希望任何人使用Java Date Class,有没有办法为这些直接导入创建编译错误/警告?

2 个答案:

答案 0 :(得分:1)

使用Wart Remover。调整自述文件中的示例,这应该是(未经测试的)

import org.brianmckenna.wartremover.{WartTraverser, WartUniverse}

object JavaDate extends WartTraverser {
  def apply(u: WartUniverse): u.Traverser = {
    import u.universe._

    val JavaDate: Type = typeOf[java.util.Date]
    val JavaCal: Type = typeOf[java.util.Calendar]
    new Traverser {
      override def traverse(tree: Tree) {
        tree.tpe match {
          case JavaDate =>
            u.error(tree.pos, "java.util.Date not allowed")
          case JavaCal =>
            u.error(tree.pos, "java.util.Calendar not allowed")
          case _ =>
        }
        super.traverse(tree)
      }
    }
  }
}

答案 1 :(得分:0)

我从未见过任何东西,但你只能导入你想要的子类,你不必只包含顶级的子类。