Как использовать команду publish-local SBT для репозитория maven?

Первый проект - это проект 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>[email protected]:scalanlp/breeze.git</url>
    <connection>scm:git:[email protected]:scalanlp/breeze.git</connection>
  </scm>
  <developers>
    <developer>
      <id>dlwh</id>
      <name>David Hall</name>
      <url>http://www.dlwh.org/</url>
    </developer>
  </developers>)

person Mark    schedule 09.04.2015    source источник
comment
Не могли бы вы проверить задачу publishM2? В его документации говорится: «Публикует артефакты в локальном репозитории Maven».   -  person Ajay Padala    schedule 09.04.2015
comment
@AjayPadala Ага, я думаю, это ответ. Есть ли случаи, когда лучше ответить в комментарии? Я все еще изучаю этикет StackOverflow, но уверен, что отвечать тем же ответом после того, как вы предоставили его в форме комментария, - это недоброжелательно.   -  person Dale Wijnand    schedule 09.04.2015
comment
Я тоже не уверен, сам новичок в этом. сменил на ответ :)   -  person Ajay Padala    schedule 09.04.2015


Ответы (2)


Воспользуйтесь задачей publishM2. В его документации сказано: «Публикует артефакты в локальном репозитории Maven».

sbt publishM2
person Ajay Padala    schedule 09.04.2015

Вот документы, в которых говорится publishM2 в соответствии с ответом Аджая:

Задача publishLocal выполнит публикацию в «локальном» репозитории Ivy ...

Как и publishLocal, задача publishM2 опубликует локальный репозиторий Maven пользователя. По умолчанию это расположение, указанное в $ HOME / .m2 / settings.xml или в $ HOME / .m2 / repository /. Другая сборка потребует, чтобы Resolver.mavenLocal выходил из нее:

резолверы + = Resolver.mavenLocal

person Witold Kaczurba    schedule 12.05.2021