prestodb / presto-maven-plugin

Maven packaging and lifecycle for Presto plugins

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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.