On 12/12/22 7:26 AM, Alan Bateman wrote:
On 03/12/2022 18:15, Matej Turcel wrote:
:

So far, jdeps with the --api-only flag seems like the perfect tool, except
there is a little problem -- we have packages (dozens of them) which
exist in multiple modules. For example, package `com.foo` exists in
three separate modules (meaning each of these modules has a class in that package). That means package-private "stuff" (members + constructor/method signatures) is a part of module's API. So to infer correct types of gradle module dependencies using jdeps, we need jdeps to consider package-private
stuff a part of the API.

The scenario seems a bit unusual in that API elements with package access aren't usually considered to be part of the API. Does the javadoc published for users of these components include the API elements with package access?  I realize Gradle may define "module" to mean something else but for the Java platform, a module is a set of packages.

I haven't seen any opinions from others but my initial reaction is that it wouldn't be a good idea to change --api-only to consider API elements with package access to be part of the API. If jdeps were changed then it would need a new option.


I also agree that it's not a good idea to change --api-only as this option is meant to find dependencies from exported packages and the module's API.

I considered in the past to provide options similar to javadoc -package, -private, -protected, -public that specify if private/package/protected/public types and members are shown.

--api-only is like javadoc -protected and it analyzes protected/public types and members.   I'm open to add jdeps options similar to javadoc -package, -private, -protected, -public but a different name since jdeps -package is used already.   More consideration would be needed if this should restrict to exported packages and how to select other packages.

Mandy

Reply via email to