lucene/test-framework/pom.xml.template and solr/core/src/test/pom.xml.template aren't modified, but likely should be - I think the specializations there can be removed.
They cannot be completely removed:
- test-frameworks executes test-checks on the standard src/mainfolder (this is also special in Ant build). But the solution is much easier here: It just inherits the shared execution, but changes the goal to "check" instead of "testCheck". The config is inherited, so it executes the test configuration on the src/main folder (like in Ant)
- solr/core/src/test/pom.xml is special, because it still excludes the imported-commons-csv tests. I simplified this by also inheriting the config, just adding the exclude. This is similar to what Ant does.
lucene/benchmark/pom.xml.template and lucene/demo/pom.xml.template should probably have lucene.txt added to their <signaturesFiles>.
- I solved this in a similar way by inheriting the parent configuration and just "overriding" the bundledSignatures config (without jdk-system-out).
Also, if I understand how things are setup, the new annotation suppresses all forms of forbiddenapi checking, as compared to the previous configuration, where there were multiple executions, and exceptions were targetted at a particular check (e.g. sysout), but didn't prevent other checks from running. In the maven build this represents a loss of coverage everywhere the annoatations are used, doesn't it? Not sure about the Ant build.
Yes and No You are right, we miss some coverage (also in Ant build), but we get more coverage on the other side, because we can exclude in a more fine-granular way (on method level). I thought about this already, one solution might be (but lets keep this for later): For the very common sysout-stuff, we can add a separate @SuppressForbiddenSysout so we can scan in 2 executions. We should discuss this in a separate issue. I did not want to add too many annotations yet.
On the other hand, because we can now work more fine-granular, I would suggest to refactor the code a bit and move the "violations" to separate methods (like I did in the DocSetPerf tester) and only exclude those, so we don't have to exclude the whole method. For the command line tools, we might add a private method to the class containing the main method called "printout(String)" that is suppressed.