Have a look at how JaCoCo does it, as AFAICT it has exactly the same needs: https://www.eclemma.org/jacoco/trunk/doc/maven.html (source code: https://github.com/jacoco/jacoco/tree/master/jacoco-maven-plugin/src/org/jacoco/maven )
TL;DR: prepare-agent goal sets a property that you can then use to configure Surefire. On Tue, Oct 16, 2018 at 6:23 PM James Owen <[email protected]> wrote: > Hi, > > I am currently trying to write a custom plugin that does two things > > 1. Attach a java agent to the JVM when the tests are running, causing > some instrumentation to be logged > 2. Analyze the logged instrumentation and report back to the user > > I have the second part working, but I'm completely stumped by the first > part. My understanding is that applying JVM arguments during tests is > the responsibility of surefire, using the argLine configuration > parameters - so I am trying to write a mojo that will add those > parameters on the fly if they are not already there. > > As it stands, I have written a mojo (InjectAgentMojo) that does the > following: > > * Get the project from a parameter > * Look up the surefire plugin using > project.getPlugin(org.apache.maven.plugins:maven-surefire-plugin) > * Create a configuration with the required elements, and attach it > using setConfiguration > > However, this does not seem to have any effect, and the configuration is > not being used. I am calling the mojo in the INITIALIZE phase of my test > project, but it seems that the configuration has already been set > elsewhere by then. > > Does anyone have any ideas that would make this possible? Specifically: > > * Is there a way for maven plugins to set the configuration of other > plugins at runtime? > * Is there another way this could be done - writing a plugin for > surefire or something? > > After a couple of days of experimenting/googling, I appear to have hit a > brick wall. > > Thanks in advance for any help. > > James Owen > >
