Ich weiß, dass ich eine Bean von InstrumentationLoadTimeWeaver wie unten erstellen kann.
@Bean
public LoadTimeWeaver loadTimeWeaver() {
return new InstrumentationLoadTimeWeaver();
}
und es funktioniert gut, wenn ich --javaagent: hinzufüge.
Befehl
java --javaagent:~/.m2/repository/org/springframework/spring-instrument//spring-instrument-.jar -jar myjar.jar
Bei dem oben genannten Ansatz gibt es zwei Probleme:
- Ich muss die von Spring-Boot verwaltete Version fest codieren. starter-parent.
- Hinzufügen von Javaagent bei mehreren Bereitstellungsskripten sowie IDE-Konfiguration.
dev.aspectj
agent-embedder-maven-plugin
1.0
embed-agent
embed
org.springframework
spring-instrument
Aber es funktioniert nicht, während die Tests ausgeführt werden, und ich muss zwei Konfigurationen verwalten
- Verwenden Sie explizit Javaagent für Test
- Plugin zum Ausführen von JAR für die Bereitstellung verwenden
Derzeit führe ich einen Test durch, indem ich die Konfiguration zum Surefire-Plugin wie folgt hinzufüge -
org.apache.maven.plugins
maven-surefire-plugin
3.2.3
--add-opens java.base/java.lang=ALL-UNNAMED
-javaagent:${user.home}/.m2/repository/org/springframework/spring-instrument/${spring-instrument.version}/spring-instrument-${spring-instrument.version}.jar
Bearbeiten -
Außerdem aktiviert der Testcode zu diesem Zeitpunkt das Weben nicht, was dazu führt, dass Tests fehlschlagen.
Ich habe ein GitHub-Repo (Link) und eine Pull-Anfrage (Link) hinzugefügt, die Probleme für weitere Hilfe verursacht.