per-module module-source-path for javac

Jonathan Gibbons jonathan.gibbons at oracle.com
Fri Dec 16 17:21:58 UTC 2016


Thank you for noting the additional use case of CLASS_OUTPUT.

-- Jon


On 12/16/16 8:57 AM, Nikolay Chashnikov wrote:
> Hi Jonathan,
>
> thank you, glad to hear it.
>
> Regarding API design: we already have 
> JavaFileManager#getLocationForModule which takes Location and 
> moduleName, so it looks logical to add setLocationForModule which 
> takes location, moduleName and list of paths, as you suggested. It 
> would be useful not only for MODULE_SOURCE_PATH, but also for example 
> for CLASS_OUTPUT to allow users specify output directories on 
> per-module basis. In this way, 'setLocation' method can be used to 
> specify paths for all modules at once if they follow the same naming 
> scheme, and 'setLocationForModule' can be used if locations of modules 
> don't follow any common scheme.
>
> On Fri, Dec 16, 2016 at 5:50 PM, Jonathan Gibbons 
> <jonathan.gibbons at oracle.com <mailto:jonathan.gibbons at oracle.com>> wrote:
>
>     Nikolay,
>
>     We are looking at this.
>
>     One aspect of the problem we have to take into account is that
>     currently, the JavaFileManager API does not special case the
>     module source path (yes, I know the *implementation* special cases
>     it, even at the handleOption level) and so we need to come up with
>     a way providing and specifying the functionality you are looking
>     for in a way that fits in with the overall design.
>
>     -- Jon
>
>
>
>     On 12/16/16 5:05 AM, Nikolay Chashnikov wrote:
>
>         Any comments?
>
>         On Mon, Dec 12, 2016 at 8:29 PM, Nikolay Chashnikov <
>         nikolay.chashnikov at jetbrains.com
>         <mailto:nikolay.chashnikov at jetbrains.com>> wrote:
>
>             Hello,
>
>             we're actively working on support for Jigsaw in IntelliJ
>             IDEA. Some time
>             ago we asked (see this post
>             <http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-October/009713.html
>             <http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-October/009713.html>>)
>             about restrictions in --module-source-path parameter of
>             javac command line.
>             It appears that currently javac has rather strict
>             requirements regarding
>             layout of the source files of multi-module projects on the
>             disk: module
>             sources must be located under a directory which name is
>             equal to the
>             (qualified) module name, and locations of source
>             directories for different
>             modules must follow some common scheme. It's ok for new
>             projects, but it
>             complicates migration of existing projects to Jigsaw: you
>             not only need to
>             create module-info.java files, get rid of split packages,
>             etc, but also
>             most probably you'll need to rearrange directories
>             containing the sources.
>             For me, the latter looks like an unnecessary complication,
>             it may make
>             migration to Jigsaw more difficult, especially for big
>             projects developed
>             by large teams. I think it would be great to allow users
>             to specify
>             module-source-path for each module individually.
>
>             Given that the implementation
>             (com.sun.tools.javac.file.Locations.
>             ModuleSourcePathLocationHandler) already stores paths for
>             different
>             modules separately, it seems to be rather easy to expose
>             ability to specify
>             module-source-path on per-module basis to
>             StandardJavaFileManager's API.
>             The change in API suggested by Jonathan Gibbons (see this post
>             <http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-October/009781.html
>             <http://mail.openjdk.java.net/pipermail/jigsaw-dev/2016-October/009781.html>>)
>             looks good, it will allow us to support arbitrary layout
>             of sources in
>             IntelliJ IDEA. Do you plan to implement it? How can we
>             help you with that?
>
>             --
>             Nikolay Chashnikov
>             Team Lead
>             JetBrains
>             http://www.jetbrains.com
>             The Drive to Develop
>
>
>
>
>
>
>
> -- 
> Nikolay Chashnikov
> JetBrains
> http://www.jetbrains.com
> The Drive to Develop



More information about the jigsaw-dev mailing list