如何使用boot gradle插件在java启动应用程序中嵌入javaagent

问题描述 投票:2回答:3

我正在使用javaagent作为我的春季启动应用程序,目前我通过它运行它

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

我的项目是一个gradle项目,我想在app.jar中嵌入agent.jar,以便我可以运行它

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

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

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

java spring-boot javaagents spring-boot-gradle-plugin
3个回答
0
投票

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

dependencies {compile fileTree(dir:'libs',include:'* .jar')}


0
投票

gradle jar:

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();
}

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类。

© www.soinside.com 2019 - 2024. All rights reserved.