Publish SBT project to local directory

前端 未结 2 737
终归单人心
终归单人心 2021-01-02 01:21

I am trying to publish some of my SBT projects on my personal webserver. As far as I know you usually export a SBT project as a Maven directory including a POM.xml, that con

2条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-02 01:50

    I figured out how you can do this. This solution creates a local Ivy repository, which is compatible with Maven.

    You have to set the following values in your build.sbt:

    name := "project-name"
    
    organization := "org.example"
    
    version := "0.0.0"
    
    scalaVersion := "2.9.2"
    
    publishTo := Some(Resolver.file("file", new File("/path/to/your/releases"))
    

    After that, you can publish your release

    sbt publish
    

    This will print something like the following lines

    [info] Set current project to project-name (in build file:/path/to/your/project/)
    [info] Updating {file:/path/to/your/project/}default-2e51ea...
    [info] Packaging /path/to/your/project/target/scala-2.9.2/project-name_2.9.2-0.0.0-S
    NAPSHOT-sources.jar ...
    [info] Resolving org.scala-lang#scala-library;2.9.2 ...
    [info] Done packaging.
    [info] Done updating.
    [info] :: delivering :: org.example#project-name_2.9.2;0.0.0 :: 0.0.0 :: release :: Tue Jul 24 15:41:04 CEST 2012
    [info]  delivering ivy file to /path/to/your/project/target/scala-2.9.2/ivy-0.0.0.xml
    [info] Wrote /path/to/your/project/target/scala-2.9.2/project-name_2.9.2-0.0.0.pom
    [info] Packaging /path/to/your/project/target/scala-2.9.2/project-name_2.9.2-0.0.0.jar ...
    [info] Done packaging.
    [info]  published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0.pom
    [info]  published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0.jar
    [info]  published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0-sources.jar
    [info]  published project-name_2.9.2 to /path/to/your/releases/org/example/project-name_2.9.2/0.0.0-SNAPSHOT/project-name_2.9.2-0.0.0-javadoc.jar
    [success] Total time: 1 s, completed 24.07.2012 15:41:05
    

    You can put the generated files on any web server (e.g. http://repo.example.org/) and use it in the build script of another project by adding the following lines to your build.sbt:

    resolvers += "Personal repository" at "http://repo.example.org/"
    
    libraryDependencies += "org.example" % "project-name" % "0.0.0"
    

    For more information, see SBT: Getting Started Library Dependencies and SBT: Publishing.

提交回复
热议问题