无法为多个Scala版本交叉发布我的sbt插件
我有以下sbt文件无法为多个Scala版本交叉发布我的sbt插件,scala,sbt,Scala,Sbt,我有以下sbt文件 lazy val root = (project in file(".")). settings( inThisBuild(List( sbtPlugin := true, organization := "com.foo", crossScalaVersions := Seq("2.11.2", "2.12.0"), version := "1.0.0" )), name := "myp
lazy val root = (project in file(".")).
settings(
inThisBuild(List(
sbtPlugin := true,
organization := "com.foo",
crossScalaVersions := Seq("2.11.2", "2.12.0"),
version := "1.0.0"
)),
name := "myplugin",
libraryDependencies ++= Seq(
"org.scala-lang.modules" %% "scala-xml" % "1.0.6",
"com.typesafe" % "config" % "1.3.3"
)
)
现在我可以轻松地执行sbt publishLocal
,我看到它在.ivy2/local/com.foo/myplugin/scala_2.12/sbt_1.0/1.0.0/jars/
但是如果我做了一个
sbt +publishLocal
我犯了一个错误
[error] Modules were resolved with conflicting cross-version suffixes in ProjectRef(uri("file:/Users/user/myplugin/"), "root"):
[error] org.scala-lang.modules:scala-xml _2.11, _2.12
[error] org.scala-lang.modules:scala-parser-combinators _2.11, _2.12
[error] java.lang.RuntimeException: Conflicting cross-version suffixes in: org.scala-lang.modules:scala-xml, org.scala-lang.modules:scala-parser-combinators
[error] at scala.sys.package$.error(package.scala:27)
[error] at sbt.librarymanagement.ConflictWarning$.processCrossVersioned(ConflictWarning.scala:39)
[error] at sbt.librarymanagement.ConflictWarning$.apply(ConflictWarning.scala:19)
[error] at sbt.Classpaths$.$anonfun$ivyBaseSettings$64(Defaults.scala:1995)
[error] at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error] at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:39)
[error] at sbt.std.Transform$$anon$4.work(System.scala:66)
[error] at sbt.Execute.$anonfun$submit$2(Execute.scala:262)
我的期望是SBT将编译和发布两次,每次都会为正确的Scala版本选择正确的JAR。为什么说有冲突
我的最终目标是让SBT为我的
CrossScalarAversions
列表中的每个scala版本发布多个jar文件。在浏览了您的build.SBT
之后,我发现了以下几点:
- 删除所有依赖项并不能解决问题
- 删除
是否解决问题sbtPlugin:=true
- 将sbt从1.x降级到0.13.16有助于编译您的示例
- 降级sbt
- 将Scala从2.11.2更改为2.10.x
- 删除
sbtPlugin:=true
build.sbt
之后,我发现了以下几点:
- 删除所有依赖项并不能解决问题
- 删除
是否解决问题sbtPlugin:=true
- 将sbt从1.x降级到0.13.16有助于编译您的示例
- 降级sbt
- 将Scala从2.11.2更改为2.10.x
- 删除
sbtPlugin:=true
- 在
中:项目/build.properties
sbt.version=0.13.17
- 在
设置中:build.sbt
sbtPlugin := true, crossSbtVersions := Seq("0.13.17", "1.0.0"),
请参阅以获取示例。sbt使用Scala的固定版本:sbt 0.13使用Scala 2.10,sbt 1.x使用Scala 2.12。所以
- 在
中:项目/build.properties
sbt.version=0.13.17
- 在
设置中:build.sbt
sbtPlugin := true, crossSbtVersions := Seq("0.13.17", "1.0.0"),
请参阅以获取示例。可能不相关,但为什么使用
inThisBuild
?如果使用sbt new scala/scala seed.g8
命令生成scala项目,默认build.sbt文件就是这样编写的。可能不相关,但是为什么使用inThisBuild
?如果使用sbt new scala/scala seed.g8
命令生成scala项目,默认的build.sbt文件就是这样写的。我在写插件。我在写插件。