如何部署具有第三方libs依赖项的javaagent

如何部署具有第三方libs依赖项的javaagent,java,tomcat,manifest,javassist,javaagents,Java,Tomcat,Manifest,Javassist,Javaagents,我们编写了一个javaagent来帮助开发人员进行调试。但是,在发布这个工具之前,我们仍然对java代理的部署有一些疑问 用户可以将代理与一些tomcat应用程序一起使用。代理使用Premain方法转换类。我们使用Javassist3.18.2-GA插入代码。目前,我们将javassist.jar添加到MANIFEST.MF中的引导类路径中。我们将代理和javassist.jar放在tomcat的lib目录中 问题是: 至少,它是有效的。但是,这是为tomcat应用程序部署代理和依赖项的正确方法

我们编写了一个javaagent来帮助开发人员进行调试。但是,在发布这个工具之前,我们仍然对java代理的部署有一些疑问

用户可以将代理与一些tomcat应用程序一起使用。代理使用Premain方法转换类。我们使用Javassist3.18.2-GA插入代码。目前,我们将javassist.jar添加到MANIFEST.MF中的引导类路径中。我们将代理和javassist.jar放在tomcat的lib目录中

问题是:

  • 至少,它是有效的。但是,这是为tomcat应用程序部署代理和依赖项的正确方法吗
  • 因为大多数tomcat应用程序都使用hibernate,而hibernate也使用Javassist3.18.2-GA,所以现在还可以。但据我所知,3.20与3.18.2并不完全兼容。建议有人将javassist更新到更高版本,代理或应用程序是否会因为两个不同javassist之间的冲突而崩溃

  • 添加javaagent并在VM的类路径上运行。因此,您有以下选项:

  • 在启动VM时将依赖项添加到类路径,就像部署普通应用程序时一样。对于像Tomcat这样的应用程序容器,这将是此类依赖项的适当目录
  • 使用类似fatjar的工具将依赖项与代理捆绑在一起。这样,您还可以使用Maven Shade插件将依赖项转移到不同的命名空间中,以避免版本冲突
  • 在运行实际的代理应用程序之前,使用手动附加依赖项