Reusing module name token `*` in -d
Nicolai Parlog
nipa at codefx.org
Sat Jan 21 13:55:50 UTC 2017
Hi!
> 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.
That's interesting. As far as I understood up to now a single POM (to
fall back on a known build tool) will by default correspond to a
single module. Isn't that so? Or in other words how would I use Maven
or Gradle to effortlessly create multiple artifacts?
so long ... Nicolai
On 21.01.2017 14:32, forax at univ-mlv.fr wrote:
> ----- 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
>
--
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