Как встроить 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') }