On 06/26/2016 11:22 AM, Jochen Theodorou wrote:
On 26.06.2016 09:14, Mr Andersson wrote:
On 06/24/2016 10:40 PM, Jochen Theodorou wrote:
On 24.06.2016 17:41, Mr Andersson wrote:
[...]
If you want to convince me of switching, i am still looking/waiting
for
someone to offer cyclic dependency support between modules, since
without it, my code is getting more complex than need be.
then you probably do not want modules, but just multiple source
folders... because what advantages are left of modules if they are
cyclic?
Access rights. Even if a module/package is a cyclic, unless another
module has specifically declared that you can access it, can you access
it. It is like packages, but with access rules attached to them, which
does not exist currently.
How exactly are you using that? I know only dependencies, no module
level access rights, since I guess you do not talk about jdk9 jigsaw.
And how do these translate to runtime?
No, in the runtime there are no checks. As you know, currently a module
in maven can only access another if it declares a dependency on
another. This might be happening at compile time in Maven where a
missing import will raise an error because of a missing jar file.
I am arguing for a maven like dependency manager, that would build a
Java like package structure based on the modules it imports. So module A
and module B would go into one package, where by default ( in Java )
they can access each other as they please. But to prevent say B from
accessing A, you need to check that B actually has a dependency declared
on A, and then raise an error. This would occur at build time.
Imagine like a one big module project, that only consists of root
packages, each mimicking a module. That would work fine for me, and
enable cyclic dependencies to work, but I can not as of now enforce
rules on access rights, which if I turn the project to someone else,
someone might start using packages across and destroy any extraction of
one module, without extracting all project/modules.
I am not sure how Intelllij does it, but in Intellij modules can have
cyclic dependencies between them. The only problem is that Intellij only
offers it inside Intellij and does not offer a maven like dependency
manager to build a project, declare dependencies from a config, download
dependencies and what not.
bye Jochen