首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何发布快照时,使用sbt与绑定-sbt插件?

我如何发布快照时,使用sbt与绑定-sbt插件?
EN

Stack Overflow用户
提问于 2015-06-11 09:00:44
回答 1查看 957关注 0票数 4

我最近发布了一个绑定包,并将其添加到jcenter,这使我能够将快照发布到oss.jfrog.org。我正在使用绑定-sbt插件来发布。

为了发布快照,我在我的build.sbt中添加了以下指令:

代码语言:javascript
复制
publishTo := {
  if (isSnapshot.value)
    Some("OJO" at "https://oss.jfrog.org/oss-snapshot-local/")
  else
    publishTo.value /* Value set by bintray-sbt plugin */
}

问题是,当我尝试发布快照时,会得到以下错误:

代码语言:javascript
复制
[error] (*:bintrayRelease) failed to release richard-w/play-reactivemongo@0.2-SNAPSHOT: {"message":"Resource not found for path 'Richard-W/maven/play-reactivemongo'"}

这基本上意味着,绑定-sbt连接到发布TaskKey中。当遇到此错误时,发布过程已经准备就绪,但这似乎是不干净和烦琐的。禁用自动发布可以消除错误,但它会产生毫无意义的警告。

我现在的问题是:在发布快照时,我可以以某种方式禁用build.sbt中的bintray插件吗?如果这不起作用,我如何配置sbt,使其在不使用bintray的情况下发布到绑定托盘。当我尝试的时候,我从来没有得到正确的URL模式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-04 11:43:40

在同一问题上挣扎了一段时间。没有成功地配置SBT-bin托盘,但是正确地配置了bin托盘urls。这是我的代码:

代码语言:javascript
复制
object implicits {

  val bintrayUser = sbt.settingKey[String]("Bintray user name")
  val bintrayRepository = sbt.settingKey[String]("Bintray repository name")
  val bintrayPackage = sbt.settingKey[String]("Bintray package name")

  implicit class RichProject(project: Project) {

    def publish: Project = project.settings(
      bintrayUser := "your default user",
      bintrayRepository := "your repository",
      bintrayPackage := name.value,
      credentials += {
        if (isSnapshot.value) {
          Credentials((Path.userHome: RichFile) / ".ivy2/nexus.credentials")
        } else {
          Credentials((Path.userHome: RichFile) / ".ivy2/bintray.credentials")
        }
      },
      publishTo := {
        if (isSnapshot.value) {
          Some(("snapshots": RepositoryName) at "snapshots repo url")
        } else {
          Some(("releases": RepositoryName) at s"https://api.bintray.com/maven/${bintrayUser.value}/${bintrayRepository.value}/${bintrayPackage.value}/;publish=1")
        }
      }
    )    
  }

另外,注意我添加了一些绑定库配置的键。您可以在子项目中设置这些键并覆盖默认值。

我使用这些属性如下:

代码语言:javascript
复制
def library1: Project = publish.settings(
  organization := "io.library1",
  bintrayPackage := s"library1-${name.value}"
)

然后,在build.sbt中,我可以做到:

代码语言:javascript
复制
import implicits._
lazy val `library1-part1` = project.library1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30776184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档