Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use command "publish-local" of SBT to maven repo?

The first project is a SBT project. Command "publish-local" only publishes jars to local .ivy repository. But, another project is a maven project. I want SBT "publish-local" to maven repository. So another project can reference them from .m2 repository. I don't know how to do?

Here is 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>) 
like image 915
Mark Avatar asked Apr 09 '15 08:04

Mark


People also ask

How do I publish to local SBT?

To use publishing, you need to specify the repository to publish to and the credentials to use. Once these are set up, you can run publish . The publishLocal action is used to publish your project to your Ivy local file repository, which is usually located at $HOME/. ivy2/local/ .

How do I access my local Maven repository?

1) Maven Local Repository By default, maven local repository is %USER_HOME%/. m2 directory. For example: C:\Users\SSS IT\. m2.


2 Answers

Please use the publishM2 task. Its documentation says "Publishes artifacts to the local Maven repository".

sbt publishM2 
like image 96
Ajay Padala Avatar answered Sep 24 '22 19:09

Ajay Padala


Here is the docs that says publishM2 as per Ajay answer:

  • https://www.scala-sbt.org/1.x/docs/Publishing.html

The publishLocal task will publish to the “local” Ivy repository ...

Similar to publishLocal, publishM2 task will publish the user’s Maven local repository. This is at the location specified by $HOME/.m2/settings.xml or at $HOME/.m2/repository/ by default. Another build would require Resolver.mavenLocal to resolve out of it:

resolvers += Resolver.mavenLocal

like image 38
Witold Kaczurba Avatar answered Sep 25 '22 19:09

Witold Kaczurba