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
<[email protected] <mailto:[email protected]>> 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 <
[email protected]
<mailto:[email protected]>> 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