首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在sbt项目中使用sbt插件作为库依赖项?

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

Stack Overflow用户
提问于 2017-03-27 08:01:40
回答 1查看 951关注 0票数 0

我有一个sbt插件项目,它使用多项目构建。我想使用这个插件作为另一个sbt项目的依赖项。我已经创建了一个插件,但是当我将这个插件添加到项目中时,我似乎无法让依赖项正确地链接起来。

sbt插件

build.sbt

代码语言:javascript
复制
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)

sbt-plugin\plugin\src\main\scala\com\example\Hello.scala

代码语言:javascript
复制
  package com.example

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

插件测试

plugin-test是我用来测试sbt-plugin的一个sbt项目。

插件-测试\build.sbt

代码语言:javascript
复制
  name := """plugin-test"""

  version := "1.0"

  scalaVersion := "2.11.7"

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

  fork in run := true

plugin-test\project\plugins.sbt

代码语言:javascript
复制
addSbtPlugin("com.example" % "sbt-plugin" % "1.0", "0.13","2.11")

plugin-test\src\main\scala\com\exam\Test.scala

代码语言:javascript
复制
  package com.exam

  object Test {
     def result = com.example.Hello.show()
  }

但是,当我编译插件测试项目时,它会显示以下错误:

代码语言:javascript
复制
  [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

我在两个项目上都执行了发布--本地和插件/发布--本地的,工件解析正确。我在plugins.sbt中添加了sbt并编译了该项目,但是Test.scala无法使用上面的错误进行编译,就好像依赖项不存在一样。

我在这里错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-27 08:47:31

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

在您的情况下,您需要使用它作为常规依赖项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43040909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档