I considered adding an option to specify the packages to be exported.  It may 
work fine for simple cases.  It may take a prefix to avoid listing the packages 
individually.  It’s an idea on the list to implement.  On the other hand, there 
will be cases that we would have to edit module-info.java to include `uses` and 
remove `exports` or  qualify any export to a friend. 

One useful option, `jdeps β€”-check` option provides suggestion to `requires 
transitive` that may not be needed and any unused qualified exports.

After you edit module-info.java, compile it and rerun jdeps β€”-check that will 
analyze the exported API packages and suggest `requires` and `requires 
transitive`.  It requires a compilation step which would be needed to run as a 
module anyway.  

About jdeps β€”-api-only, when running on a module, it looks at the module 
descriptor and analyzes only exported API packages.  If the classes are on 
classpath (-cp), module-info.class is skipped.

Mandy

> On Mar 23, 2017, at 2:24 AM, Gunnar Morling <gun...@hibernate.org> wrote:
> 
> Hi,
> 
> I would like to suggest to add an option to jdeps for describing the
> intended exported API of descriptors created by
> --generate-module-info. This would have two benefits:
> 
> * Limiting the number of exported packages in the generated descriptor
> to the intended public API
> * Adding the "transitive" modifiers only to those "requires"
> statements whose types are used in the exported API
> 
> While it's relatively simple to rework descriptors after generation
> and remove any unwanted exports, that's not the case for removing
> superfluous "transitive" modifiers. Identifying them would require to
> parse the input JAR once more to find out whether a given dependence
> is used in public/protected signatures of the exported API or not.
> 
> If the intended exported API could be passed to jdeps - e.g. in form
> of regular expressions or some other kind of exclude/include patterns
> - no further post-processing would be needed for generating
> descriptors with a well-defined API.
> 
> I had a look at the --api-only option, but this seems only to be about
> public/protected access and not the exported packages of a module.
> 
> Thanks for your consideration,
> 
> --Gunnar

Reply via email to