Как встроить javaagent в весеннее загрузочное приложение, используя плагин boot gradle

Я использую javaagent для своего весеннего загрузочного приложения, и в настоящее время я запускаю его через

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

Мой проект - простой проект, и я хочу встроить agent.jar в app.jar, чтобы я мог запустить его как

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

Это можно сделать через плагин boot 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?

3 ответа

Ты пробовал

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

?

Другой подход: используйте jar в качестве зависимости и переместите (или создайте другой) свой основной класс в jar приложения Spring Boot.

Грейл фляга:

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

Althought, я использую, чтобы сделать так:

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

Можно добавить как jar зависимостей из локального каталога. 'libs' - это каталог внутри вашего проекта.

зависимостей { compile fileTree(dir: 'libs', include: '*.jar') }

Другие вопросы по тегам