繁体   English   中英

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

[英]How to use sbt plugin as a library dependency in a sbt project?

我有一个使用多项目构建的sbt插件项目。 我想将此插件用作其他sbt项目的依赖项。 我已经创建了一个插件,但是当我将此插件添加到项目中时,我似乎无法正确获取依赖项。

SBT-插件

build.sbt

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-插件\\插件\\ SRC \\主\\阶\\ COM \\示例\\ Hello.scala

  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

  name := """plugin-test"""

  version := "1.0"

  scalaVersion := "2.11.7"

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

  fork in run := true

插件测试\\项目\\ plugins.sbt

addSbtPlugin("com.example" % "sbt-plugin" % "1.0", "0.13","2.11")

插件测试的\\ src \\主\\斯卡拉\\ COM \\考试\\ Test.scala

  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

我在两个项目上都执行了publish-local和plugin / publish-local,并且工件可以正确解析。 我将sbt-plugin添加到plugins.sbt并编译了该项目,但Test.scala未能通过上述错误进行编译,就好像依赖项不存在一样。

我在这里想念什么?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM