Reusing module name token `*` in -d

forax at univ-mlv.fr forax at univ-mlv.fr
Sat Jan 21 13:32:58 UTC 2017


----- Mail original -----
> De: "Nicolai Parlog" <nipa at codefx.org>
> À: forax at univ-mlv.fr
> Cc: jigsaw-dev at openjdk.java.net
> Envoyé: Samedi 21 Janvier 2017 13:08:24
> Objet: Re: Reusing module name token `*` in -d

> Hi Remi.

Hi Nicolai,

> 
>> My advice is to not try to fight the module layout, it's like
>> trying to fight ocean waves, it's better to surf on it.
> 
> My personal opinion is that the proposed layout with a src folder at
> the top is not going to see a lot of adoption.
> 
> The main reason for that is that I think each sub-project/module
> should have a directory structure just to itself to store sources,
> tests, resources, configuration, build scripts, documentation, source
> control info, etc. The fact that most build tool and IDEs understand
> this structure by default underlines that thought. And not only does
> the proposed structure not add any benefits (that I can see), it also
> comes at a considerable costs because (a) all tools have to be taught
> "the new way" and (b) a migration is a lot of work.
> 
> So I believe the `<module>/src/{main,test}/{java,resources,whatever}`
> structure is here to stay.

Ah, i see why you have a problem,
  a jigsaw module != a sub project

A sub project with your layout will contain several modules if you prefer.
A jigsaw module is more lightweight that the other kind of ''modules'' you usually find in Java and features like restricted export or uses/provides also force several modules to be compiled together. 

> 
>> And yes it means that if you want to modularize an already
>> existing project, you have to change its layout to be jigsaw
>> compatible
> 
> I disagree.
> 
> I'm not sure how essential it is for tools to have the compiled
> classes land in  `<module>/target/classes`. If it is important, they
> could not have compiled several sub-projects at the same time anyways
> (unless I'm missing something). If they already put all compiled
> classes into the same folder, then multi-module builds will work just
> fine for them.
> 
> Not being able to do multi-module builds into
> `<module>/target/classes` or similar is hence no new limitation from
> Java 9 and compiling modules one by one can be done for arbitrary
> directory structures.

see my comment above about not being able to compile multiple modules in isolation.

also Java has never supported an arbitrary layout, packages has to be organized in a certain way and now that jigsaw modules are part of the language.
I think the problem is more that what you call a module may not be what Java calls a module.

> 
> At the same time it looks to me that the concept of a module name
> token opens up the possibility to create a feature that didn't exist
> before and allows tools to compile many modules at once where they
> couldn't before.
> 
> so long ... Nicolai

cheers,
Rémi

> 
> 
> 
> On 21.01.2017 11:37, Remi Forax wrote:
>> Hi Nicolai, the runtime (ModuleFinder) is able to read exploded
>> modules, .class in folders, not only modules in jars, so the layout
>> on disk is more or less fixed.
>> 
>> My advice is to not try to fight the module layout, it's like
>> trying to fight ocean waves, it's better to surf on it. And yes it
>> means that if you want to modularize an already existing project,
>> you have to change its layout to be jigsaw compatible, this is
>> exactly what was done for the jdk.
>> 
>> regards, Rémi
>> 
>> ----- Mail original -----
>>> De: "Nicolai Parlog" <nipa at codefx.org> À:
>>> jigsaw-dev at openjdk.java.net Envoyé: Samedi 21 Janvier 2017
>>> 11:00:35 Objet: Reusing module name token `*` in -d
>> 
>>> Hi!
>>> 
>>> Another feature request from the trenches regarding multi-module
>>> compilation. (It is possible that there was a similar thread a
>>> couple of days/weeks (?) back but I didn't find it.)
>>> 
>>> It would be nice to have the ability to specify module specific
>>> target folders, so they do not automatically end up in
>>> `<whatever-was-given-to-d>/<module-name>`.
>>> 
>>> It seems obvious (which could very well make it stupid) to reuse
>>> the asterisk here and allow something like
>>> 
>>> javac --module-path mods --module-source-path
>>> "./*/src/main/java" -d "./*/target/classes" -module
>>> initial.module
>>> 
>>> I have not thought through how this might or might not work with
>>> multiple module source paths. It looks like the only tractable
>>> approach would be to not allow more than one -d element.
>>> 
>>> so long ... Nicolai
>>> 
>>> 
>>> 
>>> --
>>> 
>>> PGP Key:
>>> http://keys.gnupg.net/pks/lookup?op=vindex&search=0xCA3BAD2E9CCCD509
>>>
>>>
>>> 
> Web:
>>> http://codefx.org a blog about software development
>>> https://www.sitepoint.com/java high-quality Java/JVM content
>>> http://do-foss.de Free and Open Source Software for the City of
>>> Dortmund
>>> 
>>> Twitter: https://twitter.com/nipafx
>> 
> 
> --
> 
> PGP Key:
>    http://keys.gnupg.net/pks/lookup?op=vindex&search=0xCA3BAD2E9CCCD509
> 
> Web:
>    http://codefx.org
>        a blog about software development
>    https://www.sitepoint.com/java
>        high-quality Java/JVM content
>    http://do-foss.de
>        Free and Open Source Software for the City of Dortmund
> 
> Twitter:
>     https://twitter.com/nipafx


More information about the jigsaw-dev mailing list