sbt-assembly fatjar

时间:2016-02-24 23:51:01

标签: java scala sbt aspectj sbt-assembly

我有一个库,要求我使用aspectjweaver jar指定javaagent。 例如

java -jar  -javaagent:/some/location/aspectjweaver-1.8.2.jar myFatJar.jar

这很好用。但是,我的fatjar将运行的环境没有aspectjweaver-1.8.2.jar,我不能把它放在那里(获得一个更可配置的环境可能是我以后的路线)。

有没有办法,最好使用sbt-assembly,将aspectjweaver打包到我的fatjar中,并以这种方式运行?如果重要,我的应用程序是使用Scala的Spray,使用sbt。

构建

约束

  • 不能有单独的jar
  • 可以指定任意java命令
  • 完全控制构建过程

1 个答案:

答案 0 :(得分:2)

如果你已经完全控制了构建过程,为什么不使用编译时编织而不是加载时编织?然后,您只需将AspectJ运行时库 aspectjrt.jar 打包到您的胖罐中,就可以解决问题了。您甚至可以避免在应用程序启动时运行时编织的开销。

我能想到使这种方法成为问题的唯一原因是你需要在构建过程的控制之外编织连接点。