如何在不修改build.sbt的情况下打包Scala项目指定目录?
仅打包指定目录的Jar包(无需修改build.sbt)
方法一:通过sbt命令行临时配置过滤打包内容
直接在命令行执行带临时设置的sbt打包命令,过滤掉不需要的路径:
sbt 'set mappings in (Compile, package) := (mappings in (Compile, package)).value.filter { case (file, path) => path.startsWith("com/foo/bar/foo1/") }' package
执行后生成的Jar包会只保留com/foo/bar/foo1/路径下的所有类文件,符合你期望的结构。
方法二:手动编译后用jar命令打包
如果觉得命令行设置太繁琐,可以手动处理编译后的类文件:
- 先编译整个项目:
sbt compile - 进入编译后的类文件目录(替换
<scala-version>为你项目使用的Scala版本,比如2.13.10或3.3.1):cd target/scala-<scala-version>/classes - 用
jar命令仅打包指定目录:
这条命令会在jar cvf ../../some-specific-package.jar com/foo/bar/foo1/target目录下生成some-specific-package.jar,结构完全符合你的需求。
内容的提问来源于stack exchange,提问作者coder mate
相关产品推荐
相关产品推荐

