java - sbt 程序集 fatjar 中的spectjweaver/javaagent

标签 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-assemble,将aspectjweaver 打包到我的fatjar 中,并以这种方式运行它?如果重要的话,我的应用程序是一个使用 Scala 的 Spray 应用程序,使用 sbt 构建。

约束

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

最佳答案

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

我能想到的导致这种方法出现问题的唯一原因是您需要在构建过程的控制之外编织连接点。

关于java - sbt 程序集 fatjar 中的spectjweaver/javaagent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35615577/

相关文章:

Java——为常用包创建Jar文件

scala - 隐式转换导致栈溢出

scala - 解决sbt插件超时问题

java - 如何在Play项目中添加Play Ebean?

java - 将Mysql数据检索到Netbeans中的JTable

java - 将按钮保持在边界内

java - Android AsyncTask,警告 : "Unchecked generics array creation for varargs parameter"

scala - 理解 Scala 解析器组合器中的波形符

scala - 如何将字符串连接到 Spark 中的列?

scala - sbt 中特定于 Scala 版本的源目录是什么?