向sbt插件的类路径添加类

n3ipq98p  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(642)

我用的是 sbt 对我的代码进行样式检查的插件:https://github.com/sksamuel/sbt-scapegoat. 在我的一个项目中,我们称之为我的应用程序,我添加了 sbt 插件到 plugins.sbt 项目目录中的文件。
该工具运行良好,一切似乎都按预期工作。此插件有一个编译器标志,允许传入自定义检查。
因此我创建了另一个项目, my-inspections ,其中我添加了一个自定义检查,使用与 sbt 插件。然后,我在我的应用程序中将我的检查作为非托管jar添加。为此,我在我的 plugins.sbt 文件:

unmanagedJars in Compile += {
  Attributed.blank(file("lib/my-inspections.jar"))
}

现在,当我尝试使用我添加的自定义检查类时 my-inspections 如果将它传递给提供的编译器标志,我会得到一个错误,说明它找不到类。我通过了我添加的自定义检查的完全限定类名。这个 sbt 插件会执行以下操作:

Class.forName(inspection).getConstructor().newInstance().asInstanceOf[Inspection]

这会导致 ClassNotFoundException .
你怎么能 sbt 插件成功加载 Class 我创建了一个有自定义检查?

izj3ouym

izj3ouym1#

如果类位于jar文件中,请尝试将jar文件放入 project/lib . 这个 project 目录是一个 sbt 为您的项目构建;sbt插件属于项目构建。这个 lib 目录位于 project 是您应该能够放置项目的非托管依赖项的位置。

相关问题