【问题标题】:How to use command "publish-local" of SBT to maven repo?如何使用 SBT 的命令“publish-local”到 maven repo?
【发布时间】:2015-06-14 13:23:46
【问题描述】:

第一个项目是 SBT 项目。命令“publish-local”仅将 jar 发布到本地 .ivy 存储库。但是,另一个项目是 Maven 项目。我希望 SBT“发布本地”到 Maven 存储库。所以另一个项目可以从 .m2 存储库中引用它们。不知道怎么办?

这里是 build.sbt:

organization := "org.scalanlp"

name := "breeze-parent"

lazy val root = project.in( file(".") )
.aggregate(math, natives, viz, macros).dependsOn(math, viz)

lazy val macros = project.in( file("macros"))

lazy val math = project.in( file("math")).dependsOn(macros)

lazy val natives = project.in(file("natives")).dependsOn(math)

lazy val viz = project.in( file("viz")).dependsOn(math)

lazy val benchmark = project.in(file("benchmark")).dependsOn(math, natives)

scalaVersion := Common.scalaVersion

crossScalaVersions  := Common.crossScalaVersions

addCompilerPlugin("org.scalamacros" %% "paradise" % "2.0.1" cross CrossVersion.full)

publishMavenStyle := true

publishTo <<= version { (v: String) =>
  val nexus = "https://oss.sonatype.org/"
  if (v.trim.endsWith("SNAPSHOT"))
    Some("snapshots" at nexus + "content/repositories/snapshots")
  else
    Some("releases"  at nexus + "service/local/staging/deploy/maven2")
}

publishArtifact in Test := false

pomIncludeRepository := { _ => false }

pomExtra := (
  <url>http://scalanlp.org/</url>
  <licenses>
    <license>
      <name>Apache 2</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
      <distribution>repo</distribution>
    </license>
  </licenses>
  <scm>
    <url>git@github.com:scalanlp/breeze.git</url>
    <connection>scm:git:git@github.com:scalanlp/breeze.git</connection>
  </scm>
  <developers>
    <developer>
      <id>dlwh</id>
      <name>David Hall</name>
      <url>http://www.dlwh.org/</url>
    </developer>
  </developers>)

【问题讨论】:

  • 你能检查一下'publishM2'任务吗?它的文档说“将工件发布到本地 Maven 存储库”
  • @AjayPadala 是的,我认为这就是答案。有没有最好在评论中回答的情况?我仍在学习 StackOverflow 礼仪,但我敢肯定,在您以评论形式提供相同的答案后,以相同的答案做出回应是不友好的。
  • 我也不确定,我自己对此很陌生。改为答案:)

标签: maven sbt scala-breeze


【解决方案1】:

请使用publishM2 任务。它的文档说“将工件发布到本地 Maven 存储库”。

sbt publishM2

【讨论】:

    【解决方案2】:

    根据 Ajay 的回答,这里是 publishM2 的文档:

    publishLocal 任务将发布到“本地”Ivy 存储库...

    和publishLocal类似,publishM2任务会发布用户的Maven 本地存储库。这是在指定的位置 $HOME/.m2/settings.xml 或 $HOME/.m2/repository/ 默认情况下。其他 build 需要 Resolver.mavenLocal 来解决它:

    解析器 += Resolver.mavenLocal

    【讨论】:

      猜你喜欢
      • 2013-07-13
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-18
      相关资源
      最近更新 更多