5

我正在为我的 Spring Boot 应用程序使用 javaagent,目前我正在通过

java -javaagent:agent.jar -jar app.jar

我的项目是一个 gradle 项目,我想将 agent.jar 嵌入到 app.jar 中,这样我就可以运行它

java -javaagent:app.jar -jar app.jar

它可以通过这里提到的引导 maven 插件来完成 - https://jeroendruwe.be/spring-boot-and-new-relic/但是引导 gradle 插件没有替代品。我找到的最接近的是 - https://jdpgrailsdev.github.io/blog/2014/04/08/spring_boot_gradle_newrelic.html,但它没有按预期嵌入 jar。

无论如何它可以通过gradle完成吗?

4

3 回答 3

0

毕业罐:

jar {
manifest{
    attributes "Agent-Class" : "com.......agent.AgentTest"
    //attributes "Premain-Class" : "com.......agent.AgentTest"
        }
    }

虽然,我习惯这样做:

    public static void main(String[] args) throws Exception {
    String pid = "6236";
    String agentPath = "...";
    VirtualMachine virtualMachine = com.sun.tools.attach.VirtualMachine.attach(pid);
    virtualmachine.loadAgent("/home/aaa/Code/agent-1.0-SNAPSHOT.jar");
    virtualMachine.detach();
}
于 2017-12-27T03:56:20.550 回答
0

可以从本地目录添加为依赖 jar。'libs' 是项目中的目录。

依赖项 { 编译 fileTree(dir: 'libs', include: '*.jar') }

于 2017-12-26T11:10:41.937 回答
0

你试过了吗

java -Xbootclasspath=('your path'/app.jar or 'your path to libs'/agent.jar) -javaagent:'your path'/app.jar -jar 'your path'/app.jar

?

另一种方法:使用 jar 作为依赖项并在 Spring Boot 应用程序 jar 中移动(或创建另一个)您的 premain 类。

于 2017-12-27T07:18:08.520 回答