Bill has the heart of it, yes.

I should have also mentioned that this ties into java-library plugin
configuration, notably that the `compile` configuration is deprecated.
For dependences that we do not wish to leak, we will need to use
`implementation`.  For dependencies which we intentionally elect to share
with our consumers, we should use `api`.

For modularity, it should not break one module's ability to build for
another module to declare a `compile` configuration to be `implementation`,
unless of course that dependency is an active and necessary component part
of that module's consumption.  In that case, it should be declared part of
the modules `api`.
In this vein and as Bill pointed out, a module should have an accurate
representation of its own build-time dependencies.

In time, this will allow a much improved build experience, since
`implementation` and `api` are positioned for better granularity of
incremental building.

On Fri, Sep 28, 2018 at 10:23 AM, Robert Houghton <rhough...@pivotal.io>
wrote:

> Hi Bill,
>
> We are using a Gradle plug-in to identify dependencies that are unused, or
> are declared in the wrong module or scope.
> This is called out by the Gradle documents on improving build [
> https://guides.gradle.org/performance/#avoid_unnecessary_and_unused_
> dependencies].
> The plug-in documentation is here [
> https://github.com/nebula-plugins/gradle-lint-plugin/
> wiki/Unused-Dependency-Rule
> ]
>
> Thank you,
> -Robert Houghton
>
> On Fri, Sep 28, 2018 at 10:18 AM Bill Burcham <bburc...@pivotal.io> wrote:
>
> > From the PR, Anthony, it seems to me that Patrick is proposing that each
> > build.gradle be explicit about mentioning the "things" it depends on. For
> > example:
> >
> > [image: image.png]
> >
> > Look at how geode-connectors goes from mentioning a few dependencies to
> > mentioning many more. The value of this is that it ostensibly shows us
> all
> > the things that geode-connectors actually depends on.
> >
> > The challenge I see is two-fold:
> >
> > • as with Java imports and "unused imports", there is the risk of listing
> > more dependencies than we actually need
> > • there's also the risk that we still don't have a complete list of
> > dependencies
> >
> > Patrick: do you have tool support for this? Is there a tool that can
> > identify or even remove unused dependencies? What process do you use for
> > finding these heretofore hidden dependencies? Did you run gradle
> > app:dependencies?
> >
>

Reply via email to