当前位置: 首页 > 知识库问答 >
问题:

如何在sbt项目中使用sbt插件作为库依赖项?

乐正烨熠
2023-03-14

我有一个sbt插件项目,使用多项目构建。我想使用这个插件作为其他sbt项目的依赖项。我已经创建了一个插件,但是当我把这个插件添加到project中时,我似乎不能正确地连接依赖项。

name := "sbt-plugin"
  sbtPlugin := true
  val commonSettings = Seq(
  organization := "com.example",
  version := "1.0",
  scalaVersion := "2.11.7", 
  javacOptions := Seq("-source", "1.8", "-target", "1.8"), 
  scalacOptions := Seq("-target:jvm-1.8", "-unchecked", "-deprecation", "-encoding", "utf8"))

  lazy val plugin = (project in file("plugin"))
  .settings(commonSettings: _*)
  .settings(
      name := "plugin"
  )

  lazy val root = (project in file("."))
                .settings(commonSettings: _*)
                .dependsOn(plugin)
                .aggregate(plugin)
  package com.example

  // Sample code I would like to access from another sbt project
  object Hello {
     def show = println("Hello, world!")
  }
  name := """plugin-test"""

  version := "1.0"

  scalaVersion := "2.11.7"

  libraryDependencies += "org.scalatest" %% "scalatest" % "2.2.4" % "test"

  fork in run := true
addSbtPlugin("com.example" % "sbt-plugin" % "1.0", "0.13","2.11")
  package com.exam

  object Test {
     def result = com.example.Hello.show()
  }
  [error] E:\Play\SBT Plugin\sbt demo1\plugin-test\src\main\scala\com\exam\Test.scala:4: object example is not a member of package com
  [error] def result = com.example.Hello.show()
  [error] one error found

我在这里漏掉了什么?

共有1个答案

宰鸿博
2023-03-14

当您将插件指定为addsbtplugin时,您只将其添加到构建环境中(即在build.sbt中执行操作),而不是在应用程序的类路径中(在src/main/...下执行操作)。

在您的情况下,您需要将其用作常规依赖项。

 类似资料:
  • 我正在试图弄清楚如何为我自己的基于Scalding的项目创建文件。 滚烫源结构没有文件。相反,它具有构建定义。 将我自己的sbt项目与Scalding集成的正确方法是什么,这样我也可以稍后在Eclipse中用插件导入它? 我得到错误: 更新2 在执行和之后,我仍然有相同的编译错误。 'sbt Eclipse'创建未在Eclipse下编译的Eclipse项目,并报告以下错误:

  • 但是,在编译ApplicationA时,SBT抱怨依赖项只能是子目录!!: 这看起来很简单,拥有这个项目依赖项的正确方法是什么?

  • 我需要为我的一个子项目构建一个jar,包括依赖项,以便它可以用作。 我有一个多模块的sbt项目,这个模块是最低级别的(也是纯Java)。 我可以(例如使用sbt-onejar、sbt-proGuard或sbt组件)覆盖最低级别模块的打包方式吗? 看起来这些工具真的被设计成发布后的步骤,但是我真的需要一个(替换或附加的)发布的人工制品来包含依赖项(但只适用于这一个模块)。 更新:发布sbt程序集是针

  • 更新 当我在proj B上进行sbt编译时,它抛出错误,依赖类找不到。类Hbase在Proj A中。 在建议之后更新了build.sbt: “;”应为,但在projB设置中为该行抛出了找到的字符串文本。 我对这个错误一无所知。

  • 嗨,我是sbt的新手,我正在学习这个教程http://www.scala-sbt.org/0.13/tutorial/Hello.html我在shell上遵循了相同的步骤,程序显示“嗨”,我很困惑,我的hello文件夹中没有这些文件 src/main/scala或src/main/java中的来源 src/test/scala或src/test/java中的测试 src/main/资源或src/t

  • 我正在使用IntelliJ开发Spark应用程序。我正在遵循这个关于如何使intellij与SBT项目良好地工作的指导。 但这样我就无法在IntelliJ内部运行应用程序,因为类路径中不会包含spark依赖项。