Issue with qualified exports
Peter Levart
peter.levart at gmail.com
Thu Jul 21 10:00:47 UTC 2016
On 07/21/2016 10:55 AM, Alan Bateman wrote:
> On 21/07/2016 09:14, Peter Levart wrote:
>
>> Also,
>>
>> While it is expected that qualified exports are mostly used among
>> modules that are more tightly coupled and are therefore more likely
>> compiled together, some tools that invoke compiler (for example
>> Maven), have a strategy to compile one module at a time,
>> incrementally building the artifacts as the dependency tree instructs
>> (because they must insert other building steps before or after
>> compilation of each module, such as generating sources, etc...).
>>
>> So we have a problem here if such tool wants to 1st compile module A
>> alone and then compile B which has a "requires" dependency on A,
>> because A also has a qualified "export" dependency on B. An option
>> like below could enable such separate compilation.
>>
> Single module compilation should be fine, assuming the source to the
> referenced module is found (-modulesourcepath). We have exactly this
> with the JDK build where modules are compiled in reverse topology
> order. However, fair point about Maven projects, as qualified exports
> are going to be problematic if they are separate projects as opposed
> to a multi-module project.
They don't even have to be separate projects and you already have a
problem when you step into the directory representing the module "A"
and invoke mvn compile. In this case you are building just module A as a
separate project. So each maven multi-module project is also a set of
subsets of its modules and each such subset can be compiled in isolation...
The question is also should Maven then list module B as a dependency of
A in A's pom.xml ? How can it otherwise find out the name of B's
artifact? Jigsaw module names are not Maven artifact names and Maven
does not allow circular dependencies!
Regards, Peter
>
> -Alan
More information about the jigsaw-dev
mailing list