gpt4 book ai didi

scala - 为什么 sbt 会为 AutoPlugin 报告 "error: ' .' expected but eof found."?

转载 作者:行者123 更新时间:2023-12-02 01:03:14 24 4
gpt4 key购买 nike

我正在尝试使用新的 AutoPlugin 功能创建一个 sbt 插件,但失败了。

所有代码在这里:

build.sbt

sbtPlugin := true

name := "my-sbt-plugin"

version := "0.1.0"

organization := "test20140913"

项目/MySbtPlugin.scala

import sbt._

object MySbtPlugin extends AutoPlugin {

object autoImport {
lazy val hello = taskKey[Unit]("hello task from my plugin")
}

import autoImport._

val helloSetting = hello := println("Hello from my plugin")

override def projectSettings = Seq(
helloSetting
)

}

project/build.scala

import sbt._

object MySbtPluginBuild extends Build {

lazy val root = project.in(file("."))

root.enablePlugins(MySbtPlugin)

}

当我在上面运行 sbt 时,它报告了一个错误:

[info] Done updating.
[info] Compiling 2 Scala sources to /myplugin/project/target/scala-2.10/sbt-0.13/classes...
/sbttest/myplugin/build.sbt:0: error: '.' expected but eof found.
import _root_.sbt.plugins.IvyPlugin, _root_.sbt.plugins.JvmPlugin, _root_.sbt.plugins.CorePlugin, _root_.sbt.plugins.JUnitXmlReportPlugin, MySbtPlugin

repo

您可以克隆它:https://github.com/freewind/my-sbt-plugin , 然后运行 ​​./sbt 重现它

最佳答案

sbt 中的

Project 是不可变的,即所有方法转换它。 Sbt 将反射(reflection)性地找到您根据值(value)观定义的项目。

基本上:

project/build.scala

import sbt._

object MySbtPluginBuild extends Build {

lazy val root = project.in(file("."))
// here you're constructing a new project instance which is ignored.
root.enablePlugins(MySbtPlugin)

}

您所要做的就是将您的项目 DSL 链接在一起并将结果分配给 val,这是 sbt 唯一需要注意的事情:

import sbt._

object MySbtPluginBuild extends Build {
lazy val root = project.in(file(".")).enablePlugins(MySbtPlugin)
}

关于scala - 为什么 sbt 会为 AutoPlugin 报告 "error: ' .' expected but eof found."?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25825423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com