3

我确实有我自己的插件,我用'publish-local'在本地发布。可以使用以前版本的 sbt 在其他项目中解析该插件,但它不再工作。

build.sbt of the plugin
sbtPlugin       := true

name            := "sumosim-webstart"

organization    := "net.entelijan"

version         := "1.3"

scalaVersion    := "2.10.0"

crossPaths      := false

publishTo       := Some("entelijan-repo" at "http://entelijan.net/artifactory/repositories/libs-ivy-local/")

credentials += Credentials("Artifactory Realm", "entelijan.net", "xxxx", "xxxx")

//scalacOptions ++= Seq("-deprecation", "-unchecked")

那是 sbt publish-local 产生的输出

 [exec] [info] Packaging /home/wolfi/prj/sumosim/sumosim-pom/sumosim-webstart/target/sbt-0.12/sumosim-webstart-1.3-javadoc.jar ...
 [exec] [info] Done packaging.
 [exec] [info]  published sumosim-webstart to /home/wolfi/.ivy2/local/net.entelijan/sumosim-webstart/scala_2.10/sbt_0.12/1.3/poms/sumosim-webstart.pom
 [exec] [info]  published sumosim-webstart to /home/wolfi/.ivy2/local/net.entelijan/sumosim-webstart/scala_2.10/sbt_0.12/1.3/jars/sumosim-webstart.jar
 [exec] [info]  published sumosim-webstart to /home/wolfi/.ivy2/local/net.entelijan/sumosim-webstart/scala_2.10/sbt_0.12/1.3/srcs/sumosim-webstart-sources.jar
 [exec] [info]  published sumosim-webstart to /home/wolfi/.ivy2/local/net.entelijan/sumosim-webstart/scala_2.10/sbt_0.12/1.3/docs/sumosim-webstart-javadoc.jar
 [exec] [info]  published ivy to /home/wolfi/.ivy2/local/net.entelijan/sumosim-webstart/scala_2.10/sbt_0.12/1.3/ivys/ivy.xml

那就是我要使用插件的plugin.sbt:

resolvers ++= Seq(
    "typesave" at "http://repo.typesafe.com/typesafe/releases",
    "sbt-idea-repo" at "http://mpeltonen.github.com/maven/",
    "entelijan" at "http://entelijan.net/artifactory/repo/"
)

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.0.0")

addSbtPlugin("net.entelijan" % "sumosim-webstart" % "1.3")

最后我得到的错误信息

[exec] [error] (*:update) sbt.ResolveException: unresolved dependency: net.entelijan#sumosim-webstart;1.3: not found

有谁知道为什么这不起作用?

4

2 回答 2

4

据我所知,用于构建插件的 Scala 版本必须与用于构建 sbt 本身的 Scala 版本相匹配。Sbt 0.12 是用 Scala 2.9 构建的,sbt 0.13 是用 Scala 2.10 构建的。

您的插件项目使用 Scala 2.10 来构建插件。您的客户端项目可能也使用 Scala 2.10,但您使用 sbt 0.12 来构建它。因此,Sbt 尝试为 Scala 2.9 找到您的插件,但失败了,因为您为 2.10 发布了它。

于 2013-03-14T10:44:03.583 回答
2

由于项目发布时的 Scala 版本与插件不匹配,您可能需要使用其他版本的addSbtPluginin build.sbt

addSbtPlugin("net.entelijan" % "sumosim-webstart" % "1.3", "0.12‌​", "2.10")

第二个参数是sbtVersion,而最后一个是 for scalaVersion

请注意,一般情况下,与发布的工件版本不匹配的插件可能会与其他不受支持的 sbt 和 Scala 版本发生冲突。

于 2013-12-31T23:49:01.933 回答