交叉构建依赖于特定库的不同版本的项目
Cross-building a project dependent on different versions of specific library
我需要构建依赖于特定库的不同版本的项目的不同版本。这些库版本在源级别上是兼容的。所以我想构建依赖于 com.company:mylib:1.0
的 com.company:myproject-mylib-1.0_2.12:1.0.0
和依赖于 com.company:mylib:2.0
的 com.company:myproject-mylib-2.0_2.12:1.0.0
。我能想到的一种方法是使用环境变量来存储库版本,有没有更优雅的方法?
好吧,其中一个你必须明确设置,然后另一个可以计算:
libraryDependencies += "com.company" % "mylib" % (if (name.value.endsWith("1.0")) "1.0" else "2.0")`
然后在构建过程中你可以做类似的事情:
sbt> ;compile;publish // <- e.g. for v 1.0
sbt> set name := "myproject-mylib-2.0"
sbt> ;compile;publish // <- e.g. for v 2.0
如果你想让它更有原则,你可以定义一个新的密钥:
val isNew = settingKey[Boolean]("Are we building a new version of a library")
Global / isNew := false
name := if (isNew.value) "myproject-mylib-2.0" else "myproject-mylib-1.0"
libraryDependencies += "com.company" % "mylib" % (if (isNew.value) "2.0" else "1.0")`
你会喜欢
sbt> ;compile;publish // <- for v 1.0
sbt> set isNew := true
sbt> ;compile;publish // <- for v 2.0
或从命令行
sbt compile publish "set isNew := true" compile publish
我需要构建依赖于特定库的不同版本的项目的不同版本。这些库版本在源级别上是兼容的。所以我想构建依赖于 com.company:mylib:1.0
的 com.company:myproject-mylib-1.0_2.12:1.0.0
和依赖于 com.company:mylib:2.0
的 com.company:myproject-mylib-2.0_2.12:1.0.0
。我能想到的一种方法是使用环境变量来存储库版本,有没有更优雅的方法?
好吧,其中一个你必须明确设置,然后另一个可以计算:
libraryDependencies += "com.company" % "mylib" % (if (name.value.endsWith("1.0")) "1.0" else "2.0")`
然后在构建过程中你可以做类似的事情:
sbt> ;compile;publish // <- e.g. for v 1.0
sbt> set name := "myproject-mylib-2.0"
sbt> ;compile;publish // <- e.g. for v 2.0
如果你想让它更有原则,你可以定义一个新的密钥:
val isNew = settingKey[Boolean]("Are we building a new version of a library")
Global / isNew := false
name := if (isNew.value) "myproject-mylib-2.0" else "myproject-mylib-1.0"
libraryDependencies += "com.company" % "mylib" % (if (isNew.value) "2.0" else "1.0")`
你会喜欢
sbt> ;compile;publish // <- for v 1.0
sbt> set isNew := true
sbt> ;compile;publish // <- for v 2.0
或从命令行
sbt compile publish "set isNew := true" compile publish