簡體   English   中英

如何在Scala中使用SBT創建jar?

[英]How to create a jar using SBT in Scala?

我的項目目錄如下:

src/main/resources/ 
src/main/scala/

我想包裝一個罐子,所以當我將其解壓縮時將如下所示:

project.jar  ->   com.project   <class file>
             ->   META-INF/MANIFEST.MF  -> Class-Path: ./lib/dependence1.jar ./lib/dependence2.jar

因此,需要某種方式將依賴項jar復制到lib目錄。

如何配置build.sbt文件?

使用本機SBT package命令將僅包含您的代碼,而沒有依賴項。

如果要在uber-jar包含所有依賴項,那么我建議您看一下sbt-assembly插件。

這是一個示例項目( build.sbt文件):

import sbt.Keys._
import sbt._
import AssemblyKeys._

name := "ToyProject"


lazy val coreLibrary = Project("ProjectName", file(".")).settings(customAssemblyOptions: _*).settings(
  version := "0.1-SNAPSHOT"
)


lazy val customAssemblyOptions = sbtassembly.Plugin.assemblySettings ++ Seq(
    test in assembly := {},
    assemblyOption in assembly ~= { _.copy(includeScala = false) }, // Do not package Scala (suggested)
    assemblyMergeStrategy in assembly := { // to Exclude spesific files (not entire Jars)
        case PathList("lib", "static", "Windows", xs @ _*) => MergeStrategy.discard
        case _ => MergeStrategy.first
    },
    excludedJars in assembly <<= (fullClasspath in assembly) map {
      cp =>
        cp filter {
          c => List(
            "example-2.1.jar", // Remove these jars in case you want to keep all jars from being added to the uber jar. 
            "example-3.3.jar"
          ) exists {
            c.data.getName contains _
          }
        }
    }
  )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM