【问题标题】:Adding class to class path of sbt plugin将类添加到 sbt 插件的类路径
【发布时间】:2021-07-21 05:41:51
【问题描述】:

我正在使用sbt 插件对我的代码进行一些样式检查:https://github.com/sksamuel/sbt-scapegoat。在我的一个项目中,我们称之为 my-app,我将 sbt 插件添加到项目目录内的 plugins.sbt 文件中。

该工具运行良好,一切似乎都按预期工作。这个插件有一个编译器标志,允许传入自定义检查。

因此我创建了另一个项目my-inspections,在其中我使用与sbt 插件相同的类添加了一个自定义检查。然后我将 my-inspections 添加为 my-app 中的非托管 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

【问题讨论】:

    标签: scala plugins sbt


    【解决方案1】:

    如果您的 jar 文件中有类,请尝试将 jar 文件放入 project/libproject 目录是为您的项目构建的 sbt;一个 sbt 插件属于项目构建。 project 中的 lib 目录应该可以放置项目的 unmanaged dependencies

    【讨论】:

    • 我应该在我的plugins.sbt 文件中添加任何内容吗?我已经尝试过这种方法并修改了问题以提供更多细节。不幸的是,简单地在project/lib 中添加 jar 不起作用:/
    猜你喜欢
    • 2016-11-04
    • 2015-08-01
    • 1970-01-01
    • 2012-03-14
    • 2018-12-07
    • 1970-01-01
    • 2018-02-10
    • 2011-02-09
    • 2023-03-27
    相关资源
    最近更新 更多