Daniel Collins created BEAM-13504:
-------------------------------------

             Summary: Remove provided/compileOnly deps not intended for 
external use
                 Key: BEAM-13504
                 URL: https://issues.apache.org/jira/browse/BEAM-13504
             Project: Beam
          Issue Type: Task
          Components: build-system
            Reporter: Daniel Collins


There are a lot of compileOnly deps in place to make certain libraries lighter. 
In many cases, these don't actually reduce the size of the resulting binary, 
and are a result of an overriding strategy where the types of the 
implementation are needed in the loading library.

In the short term, these can all be replaced by `implementation`, with the 
downside that jars will have extra explicit dependencies, and the upside that 
users will not experience runtime errors due to missing dependencies. In the 
longer term, we should restructure these libraries (sql being the worst 
offender) to use serviceLoaders or other strategies that do not require naming 
the types of the overriders within the same package that the interface is 
declared.

The one exception to this is libraries that we intend to use whatever version 
the user puts on the classpath at runtime without expressing a version 
preference, such as hadoop or kafka. We should still consider if this has value 
though, as users are still free to explicitly override the dependency version 
we choose, even if we declare an `implementation` dependency on it.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to