Jacoco code coverage report varies between local and sonar

I think you should configure Sonar JaCoCo settings for the same project(s) that you are actually running JaCoCo for. Maybe the different percentages are caused by different base sets of sources (e.g. single project vs. multiple projects, or includes such as ‘com/**’ used for the plain report but not for Sonar). You should be able to determine this by comparing the reports. Also I recommend to switch to the new ‘sonar-runner’ plugin.