How does a Maven plugin know when to re-run?
How does a Maven plugin know when to re-run when a clean isn't part of execution?
That is, when I do mvn install as opposed to mvn clean install, how does it know which files have changed and which plugins it should/shouldn't run?
I ask because I seem to have a troublesome plugin that seems to be missing some changes and I don't want to "recompile the world" every single time and I also don't want to have to actively think when to do a clean or not.
After some investigation I have found there is no universal way this is done. The general idea is that timestamps of sources and targets are compared, but some plugins aren't "smart" enough to know what the sources are.
The specific problem I was running into was the cxf-codegen-plugin not considering that the .wsdl files may depend on .xsd files. So if the .xsd file was modified, meaning the compiled code would change if it ran again, but it did not run the plugin.