plugin should not flag all 'provided' scope dependencies as errors
hgschmie opened this issue · comments
When using google auto (https://github.com/google/auto/tree/master/value), the presto maven plugin flags it with:
[ERROR] Failed to execute goal com.facebook.presto:presto-maven-plugin:0.3:check-spi-dependencies (default-check-spi-dependencies) on project owl-presto-connector:
[ERROR]
[ERROR] Presto plugin dependency com.google.auto.value:auto-value must not have scope 'provided'. It is not part of the SPI and will not be available at runtime.
[ERROR] -> [Help 1]
[ERROR]
Google auto value is an annotation processor that executes at compile time and is not needed at run time. Presto should not flag this dependency as erroneous.
Right now, I need to use version 0.4 of the plugin and add
<configuration
<allowedProvidedDependencies>com.google.auto.value:auto-value</allowedProvidedDependencies>
</configuration>
to the plugin configuration.
I see that the purpose of this plugin seems to be "the other way around" than I thought: Not to ensure that SPI dependencies are scoped as "provided" and not "compile" but to circumvent the "cut'n'paste dependency, oops I got one that is provided scoped and did not notice). So you want to enforce to only ever the SPI deps are in provide scope, nothing else.
How about introducing a whitelist and add a couple of well known deps? The google auto family seems to be prime candidates. E.g., we are starting to put pressure on teams at $dayjob to not write their own value classes anymore but use AutoValue exclusively. I am planning to use it for all the handle classes in my connector and while the 'allowedProvidedDependencies' config is a workable compromise, it feels kludgy.
The maven-compiler-plugin
now has <annotationProcessorPaths>
which might be what you want for the AutoValue.