我在Scala(一种测试实用程序)中有一个项目,目前仅以sbt run
方式使用。但是对于某些演示,我想以不需要sbt
或scala
预安装的形式(仅JVM
)进行准备。
首先,我尝试使用sbt-assembly
插件但很快就会因重复输入而迷失方向。所以现在我很好奇我是否可以简单地将其编译为:
jar
- 包含应用程序本身的文件; lib
目录包含原始依赖关系jar集。我希望在这种情况下,在清单中的Main-Class
和Class-Path: ./lib/*
字段的帮助下运行会很容易 - 我错了吗?如果这是正确的,我该如何实现?
更新:最后我征服了sbt-assembly
方法(似乎是这样),所以现在问题并不那么迫切(尽管我仍然很想扩展我对使用sbt的了解)。
答案 0 :(得分:0)
执行sbt-assembly
时,所有依赖项,应用程序和资源都将打包到一个jar文件中。
您可以通过以下方式覆盖运行时的配置属性:
java -cp conf/:myAppDemo.jar App.run.mainClass
将配置属性文件放在conf文件夹中。
答案 1 :(得分:0)
Sbt one jar插件可以解决更多依赖项冲突,然后assembly插件
另请查看assembly插件的合并部分,它可以帮助您解决log4j.xml
重复等问题。如果两个具有相同类路径的类具有不同内容的问题,请尝试排除一些重复的依赖项(library management)