加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 如何发布到SBT的多个存储库?

发布时间:2020-12-16 09:10:34 所属栏目:安全 来源:网络整理
导读:我正在升级Nexus版本.作为此过程的一部分,我设置了一个新的Nexus实例,它将与旧的Nexus实例并行运行. 在迁移到新实例时,我想彻底测试并检查新的实例,然后再将旧的实例插头.这要求我临时修改发布工作流程,以使sbt将工件发布到Nexus实例. 我非常怀疑以下代码实
我正在升级Nexus版本.作为此过程的一部分,我设置了一个新的Nexus实例,它将与旧的Nexus实例并行运行.

在迁移到新实例时,我想彻底测试并检查新的实例,然后再将旧的实例插头.这要求我临时修改发布工作流程,以使sbt将工件发布到Nexus实例.

我非常怀疑以下代码实际工作:

publishTo <<= (version) {
       version: String =>
       if (version.trim.endsWith("SNAPSHOT")) Some("snapshots" at "http://maven1.dev.net:8081/nexus/content/" + "repositories/snapshots/")
       else Some("releases" at "http://maven1.dev.net:8081/nexus/content/" + "repositories/releases/")
    },credentials += Credentials("Sonatype Nexus Repository Manager","maven1.dev.net","release-eng","release"),publishTo <<= (version) {
       version: String =>
       if (version.trim.endsWith("SNAPSHOT")) Some("snapshots" at "http://maven2.dev.net:8081/nexus/content/" + "repositories/snapshots/")
       else Some("releases" at "http://maven2.dev.net:8081/nexus/content/" + "repositories/releases/")
    },"maven2.dev.net",

我也试着调查一个名为sbt-multi-publish的插件,但我也无法编译和使用它.

解决方法

使用 Commands和 How to change a version setting inside a single sbt command?我可以定义一个新的命令 – myPublishTo – 在执行原始发布任务之前更改publishTo设置:

def myPublishTo = Command.command("myPublishTo") { state =>
  val extracted = Project.extract(state)
  Project.runTask(
    publish in Compile,extracted.append(List(publishTo := Some(Resolver.file("file",target.value / "xxx"))),state),true
  )
  Project.runTask(
    publish in Compile,target.value / "yyy"))),true
  )
  state
}

commands += myPublishTo

这样,执行myPublishTo作为任何其他命令/任务.

您还可以在build.sbt中定义几个别名 – pxxx,pyyy和pxy – 将使用…执行一系列命令.

addCommandAlias("pxxx","; set publishTo := Some(Resolver.file("file",target.value / "xxx")) ; publish") ++
addCommandAlias("pyyy",target.value / "yyy")) ; publish") ++
addCommandAlias("pxy","; pxxx ; pyyy")

在sbt控制台中,您可以执行任何其他命令/任务.

[sbt-0-13-1]> alias
    pxxx = ; set publishTo := Some(Resolver.file("file",target.value / "xxx")) ; publish
    pyyy = ; set publishTo := Some(Resolver.file("file",target.value / "yyy")) ; publish
    pxy = ; pxxx ; pyyy
[sbt-0-13-1]> pxy
[info] Defining *:publishTo
[info] The new value will be used by *:otherResolvers,*:publishConfiguration
[info] Reapplying settings...
[info] Set current project to sbt-0-13-1 (in build file:/Users/jacek/sandbox/so/sbt-0.13.1/)
...
[info]  published sbt-0-13-1_2.10 to /Users/jacek/sandbox/so/sbt-0.13.1/target/xxx/default/sbt-0-13-1_2.10/0.1-SNAPSHOT/sbt-0-13-1_2.10-0.1-SNAPSHOT-javadoc.jar
[success] Total time: 1 s,completed Jan 9,2014 11:20:48 PM
[info] Defining *:publishTo
[info] The new value will be used by *:otherResolvers,*:publishConfiguration
[info] Reapplying settings...
...
[info]  published sbt-0-13-1_2.10 to /Users/jacek/sandbox/so/sbt-0.13.1/target/yyy/default/sbt-0-13-1_2.10/0.1-SNAPSHOT/sbt-0-13-1_2.10-0.1-SNAPSHOT-javadoc.jar
[success] Total time: 0 s,2014 11:20:49 PM

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读