Re: How does maven handle Java module dependencies?

2017-08-28 Thread Russell Gold
Hi Tibor,

My offer to help stands; I sincerely hope that the suggested command line is 
not the way things go; in my regular projects, we have been working very hard 
to avoid the use of various —add-* switches, as they are stopgaps. Of course, 
one of my real hopes is to have all of this work with multi-release jars, with 
such builds rerunning tests with both the old and new versions :)

Regards,
Russ 


> On Aug 28, 2017, at 6:24 AM, Robert Scholte  wrote:
> 
> Hi Russ,
> 
> All maven-compiler-plugin 3.6.x are already based on this idea. So if you use 
> maven-compiler-plugin 3.6.2 (current) it'll work as explained.
> 
> And yes, surefire needs some help on this, but I like to leave Tibor in the 
> lead for this. JUnit5 and Java9 both have impact, but the focus has been 
> mainly on JUnit 5 for now.
> 
> The main missing feature it to run surefire with the modulepath[1].
> Tibor can explain it better, but this is my understanding:
> surefire creates an executable jar with a manifest file containing the 
> classpath to ensure it all fits on the cmdline.
> With Java 9 this has to be transformed an @args file, so the way to call this 
> jar will change as well.
> 
> I got some feedback from Alan Bateman as well (and he's willing to help as 
> well):
> "I assumed the challenge for test execute would be getting the CLI options 
> right. I would expect it will end up like this:
> 
> -p 
> :::
> --add-modules 
> --patch-module =
> --add-reads =junit
> --add-exports /=junit
> -m junit/org.junit.runner.JUnitCore 
> 
> which is complicated. The `--add-reads` option will depend on which test 
> framework is used. The `--add-exports` options will be repeated for each 
> package contains tests invoked by the test framework."
> 
> So there's enough to improve to make it all work.
> I would say "any help is appreciated", but I'll leave it up to Tibor.
> 
> thanks
> Robert
> 
> [1] https://issues.apache.org/jira/browse/SUREFIRE-1262
> 
> On Mon, 28 Aug 2017 04:16:21 +0200, Russell Gold  
> wrote:
> 
>> Hi Robert,
>> 
>> That sounds great. Any idea on timing of the release? What about the 
>> surefire plugin? Is there something I can do to help?  I am actively working 
>> on Java 9 issues in a few projects, including both the module system and 
>> multi-release jars, so I am very motivated to do what I can to help maven 
>> get there.
>> 
>> Thanks,
>> Russ
>> 
>>> On Aug 27, 2017, at 8:38 AM, Robert Scholte  wrote:
>>> 
>>> Hi Russ,
>>> 
>>> this is how it works:
>>> in case there's a module descriptor, the module-path with be used. With the 
>>> help of plexus-java it is possible to divide all jars over the module-path 
>>> and classpath. This mechanism is implemented in the maven-compiler-plugin 
>>> (will do an official release soon with the latest improvements), other 
>>> plugins can/should use this too.
>>> 
>>> This means that you actually don't need to change anything in your pom.xml. 
>>> With the module descriptor and all the dependencies there's enough 
>>> information to decide which jars belong on the modulepath and which on the 
>>> classpath. So in the end there's no need for new scopes anymore, although 
>>> that was my first thought as well.
>>> 
>>> To create an installer, I think you're referring to JLink. Karl Heinz is 
>>> preparing the maven-jlink-plugin.
>>> 
>>> thanks,
>>> Robert
>>> 
>>> On Sun, 27 Aug 2017 13:50:46 +0200, Russell Gold  
>>> wrote:
>>> 
 I’m sure this must have been described somewhere; is there an overall 
 direction document for supporting the java platform module system?
 
 case 1)
 
 I want to compile against another project on the module path rather than 
 the class path. I do this in order to ensure compile-time checking for 
 attempts to compile against non-exported packages.
 
 case 2)
 
 I want to test against another project on the module path. This would 
 allow me to catch reflective access attempts against that module’s 
 internals
 
 case 3)
 
 I want to use the module dependencies to create an installer, with the 
 dependent modules on the module path. In theory, if Maven understands the 
 above 2 cases, it would also be able to verify the requires clauses in my 
 project’s module-info.
 
 So how will we be doing this in maven? Is it already supported? My first 
 thought was that we need two new scopes: module (case 1) and module-test 
 (case 2), but has this already been planned?
 
 Thanks,
 Russ
 -
 To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
 For additional commands, e-mail: users-h...@maven.apache.org
>> 
>> 
>> -
>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>> For additional commands, e-mail: users-h...@maven.apache.org
> 
> -

Re: How does maven handle Java module dependencies?

2017-08-28 Thread Robert Scholte

Hi Russ,

All maven-compiler-plugin 3.6.x are already based on this idea. So if you  
use maven-compiler-plugin 3.6.2 (current) it'll work as explained.


And yes, surefire needs some help on this, but I like to leave Tibor in  
the lead for this. JUnit5 and Java9 both have impact, but the focus has  
been mainly on JUnit 5 for now.


The main missing feature it to run surefire with the modulepath[1].
Tibor can explain it better, but this is my understanding:
surefire creates an executable jar with a manifest file containing the  
classpath to ensure it all fits on the cmdline.
With Java 9 this has to be transformed an @args file, so the way to call  
this jar will change as well.


I got some feedback from Alan Bateman as well (and he's willing to help as  
well):
"I assumed the challenge for test execute would be getting the CLI options  
right. I would expect it will end up like this:


-p  
:::

--add-modules 
--patch-module =
--add-reads =junit
--add-exports /=junit
-m junit/org.junit.runner.JUnitCore 

which is complicated. The `--add-reads` option will depend on which test  
framework is used. The `--add-exports` options will be repeated for each  
package contains tests invoked by the test framework."


So there's enough to improve to make it all work.
I would say "any help is appreciated", but I'll leave it up to Tibor.

thanks
Robert

[1] https://issues.apache.org/jira/browse/SUREFIRE-1262

On Mon, 28 Aug 2017 04:16:21 +0200, Russell Gold   
wrote:



Hi Robert,

That sounds great. Any idea on timing of the release? What about the  
surefire plugin? Is there something I can do to help?  I am actively  
working on Java 9 issues in a few projects, including both the module  
system and multi-release jars, so I am very motivated to do what I can  
to help maven get there.


Thanks,
Russ

On Aug 27, 2017, at 8:38 AM, Robert Scholte   
wrote:


Hi Russ,

this is how it works:
in case there's a module descriptor, the module-path with be used. With  
the help of plexus-java it is possible to divide all jars over the  
module-path and classpath. This mechanism is implemented in the  
maven-compiler-plugin (will do an official release soon with the latest  
improvements), other plugins can/should use this too.


This means that you actually don't need to change anything in your  
pom.xml. With the module descriptor and all the dependencies there's  
enough information to decide which jars belong on the modulepath and  
which on the classpath. So in the end there's no need for new scopes  
anymore, although that was my first thought as well.


To create an installer, I think you're referring to JLink. Karl Heinz  
is preparing the maven-jlink-plugin.


thanks,
Robert

On Sun, 27 Aug 2017 13:50:46 +0200, Russell Gold  
 wrote:


I’m sure this must have been described somewhere; is there an overall  
direction document for supporting the java platform module system?


case 1)

I want to compile against another project on the module path rather  
than the class path. I do this in order to ensure compile-time  
checking for attempts to compile against non-exported packages.


case 2)

I want to test against another project on the module path. This would  
allow me to catch reflective access attempts against that module’s  
internals


case 3)

I want to use the module dependencies to create an installer, with the  
dependent modules on the module path. In theory, if Maven understands  
the above 2 cases, it would also be able to verify the requires  
clauses in my project’s module-info.


So how will we be doing this in maven? Is it already supported? My  
first thought was that we need two new scopes: module (case 1) and  
module-test (case 2), but has this already been planned?


Thanks,
Russ
-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: How does maven handle Java module dependencies?

2017-08-27 Thread Russell Gold
Hi Robert,

That sounds great. Any idea on timing of the release? What about the surefire 
plugin? Is there something I can do to help?  I am actively working on Java 9 
issues in a few projects, including both the module system and multi-release 
jars, so I am very motivated to do what I can to help maven get there.

Thanks,
Russ

> On Aug 27, 2017, at 8:38 AM, Robert Scholte  wrote:
> 
> Hi Russ,
> 
> this is how it works:
> in case there's a module descriptor, the module-path with be used. With the 
> help of plexus-java it is possible to divide all jars over the module-path 
> and classpath. This mechanism is implemented in the maven-compiler-plugin 
> (will do an official release soon with the latest improvements), other 
> plugins can/should use this too.
> 
> This means that you actually don't need to change anything in your pom.xml. 
> With the module descriptor and all the dependencies there's enough 
> information to decide which jars belong on the modulepath and which on the 
> classpath. So in the end there's no need for new scopes anymore, although 
> that was my first thought as well.
> 
> To create an installer, I think you're referring to JLink. Karl Heinz is 
> preparing the maven-jlink-plugin.
> 
> thanks,
> Robert
> 
> On Sun, 27 Aug 2017 13:50:46 +0200, Russell Gold  
> wrote:
> 
>> I’m sure this must have been described somewhere; is there an overall 
>> direction document for supporting the java platform module system?
>> 
>> case 1)
>> 
>> I want to compile against another project on the module path rather than the 
>> class path. I do this in order to ensure compile-time checking for attempts 
>> to compile against non-exported packages.
>> 
>> case 2)
>> 
>> I want to test against another project on the module path. This would allow 
>> me to catch reflective access attempts against that module’s internals
>> 
>> case 3)
>> 
>> I want to use the module dependencies to create an installer, with the 
>> dependent modules on the module path. In theory, if Maven understands the 
>> above 2 cases, it would also be able to verify the requires clauses in my 
>> project’s module-info.
>> 
>> So how will we be doing this in maven? Is it already supported? My first 
>> thought was that we need two new scopes: module (case 1) and module-test 
>> (case 2), but has this already been planned?
>> 
>> Thanks,
>> Russ
>> -
>> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
>> For additional commands, e-mail: users-h...@maven.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: How does maven handle Java module dependencies?

2017-08-27 Thread Karl Heinz Marbaise

Hi,

On 27/08/17 14:38, Robert Scholte wrote:

Hi Russ,

this is how it works:
in case there's a module descriptor, the module-path with be used. With 
the help of plexus-java it is possible to divide all jars over the 
module-path and classpath. This mechanism is implemented in the 
maven-compiler-plugin (will do an official release soon with the latest 
improvements), other plugins can/should use this too.


This means that you actually don't need to change anything in your 
pom.xml. With the module descriptor and all the dependencies there's 
enough information to decide which jars belong on the modulepath and 
which on the classpath. So in the end there's no need for new scopes 
anymore, although that was my first thought as well.


To create an installer, I think you're referring to JLink. Karl Heinz is 
preparing the maven-jlink-plugin.


This is not an installer it is a Java Run-Time Image which uses JLink 
(maven-jlink-plugin, maven-jmod-plugin)...


An example how it looks like at the moment can be seen[1] and in [2] how 
the most recent code works...


The first alpha release of maven-jlink-plugin and maven-jmod-plugin is 
planned within a few weeks...


Kind regards
Karl Heinz Marbaise

[1]: 
http://blog.soebes.de/blog/2017/06/06/howto-create-a-java-run-time-image-with-maven/
[2]: 
https://github.com/khmarbaise/jdk9-jlink-jmod-example/tree/master/maven-example





thanks,
Robert

On Sun, 27 Aug 2017 13:50:46 +0200, Russell Gold 
 wrote:


I’m sure this must have been described somewhere; is there an overall 
direction document for supporting the java platform module system?


case 1)

I want to compile against another project on the module path rather 
than the class path. I do this in order to ensure compile-time 
checking for attempts to compile against non-exported packages.


case 2)

I want to test against another project on the module path. This would 
allow me to catch reflective access attempts against that module’s 
internals


case 3)

I want to use the module dependencies to create an installer, with the 
dependent modules on the module path. In theory, if Maven understands 
the above 2 cases, it would also be able to verify the requires 
clauses in my project’s module-info.


So how will we be doing this in maven? Is it already supported? My 
first thought was that we need two new scopes: module (case 1) and 
module-test (case 2), but has this already been planned?


Thanks,
Russ
-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org





Mit freundlichem Gruß
Karl-Heinz Marbaise
--
SoftwareEntwicklung Beratung SchulungTel.: +49 (0) 2405 / 415 893
Dipl.Ing.(FH) Karl-Heinz MarbaiseUSt.IdNr: DE191347579
Hauptstrasse 177
52146 Würselen   http://www.soebes.de

-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: How does maven handle Java module dependencies?

2017-08-27 Thread Robert Scholte

Hi Russ,

this is how it works:
in case there's a module descriptor, the module-path with be used. With  
the help of plexus-java it is possible to divide all jars over the  
module-path and classpath. This mechanism is implemented in the  
maven-compiler-plugin (will do an official release soon with the latest  
improvements), other plugins can/should use this too.


This means that you actually don't need to change anything in your  
pom.xml. With the module descriptor and all the dependencies there's  
enough information to decide which jars belong on the modulepath and which  
on the classpath. So in the end there's no need for new scopes anymore,  
although that was my first thought as well.


To create an installer, I think you're referring to JLink. Karl Heinz is  
preparing the maven-jlink-plugin.


thanks,
Robert

On Sun, 27 Aug 2017 13:50:46 +0200, Russell Gold   
wrote:


I’m sure this must have been described somewhere; is there an overall  
direction document for supporting the java platform module system?


case 1)

I want to compile against another project on the module path rather than  
the class path. I do this in order to ensure compile-time checking for  
attempts to compile against non-exported packages.


case 2)

I want to test against another project on the module path. This would  
allow me to catch reflective access attempts against that module’s  
internals


case 3)

I want to use the module dependencies to create an installer, with the  
dependent modules on the module path. In theory, if Maven understands  
the above 2 cases, it would also be able to verify the requires clauses  
in my project’s module-info.


So how will we be doing this in maven? Is it already supported? My first  
thought was that we need two new scopes: module (case 1) and module-test  
(case 2), but has this already been planned?


Thanks,
Russ
-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org


-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



Re: How does maven handle Java module dependencies?

2017-08-27 Thread Russell Gold
A bit more research turned up this page 
https://www.sitepoint.com/maven-cannot-generate-module-declaration/ in which 
Robert explains why my “first thought” below is a non-starter, unless the pom 
spec is upgraded. So it sounds now as though we are waiting on ASM to read 
module-info files…? Is there really nothing to be done in the meantime?

> On Aug 27, 2017, at 7:50 AM, Russell Gold  wrote:
> 
> I’m sure this must have been described somewhere; is there an overall 
> direction document for supporting the java platform module system?
> 
> case 1)
> 
> I want to compile against another project on the module path rather than the 
> class path. I do this in order to ensure compile-time checking for attempts 
> to compile against non-exported packages. 
> 
> case 2)
> 
> I want to test against another project on the module path. This would allow 
> me to catch reflective access attempts against that module’s internals
> 
> case 3)
> 
> I want to use the module dependencies to create an installer, with the 
> dependent modules on the module path. In theory, if Maven understands the 
> above 2 cases, it would also be able to verify the requires clauses in my 
> project’s module-info.
> 
> So how will we be doing this in maven? Is it already supported? My first 
> thought was that we need two new scopes: module (case 1) and module-test 
> (case 2), but has this already been planned?
> 
> Thanks,
> Russ
> -
> To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
> For additional commands, e-mail: users-h...@maven.apache.org
> 


-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org



How does maven handle Java module dependencies?

2017-08-27 Thread Russell Gold
I’m sure this must have been described somewhere; is there an overall direction 
document for supporting the java platform module system?

case 1)

I want to compile against another project on the module path rather than the 
class path. I do this in order to ensure compile-time checking for attempts to 
compile against non-exported packages. 

case 2)

I want to test against another project on the module path. This would allow me 
to catch reflective access attempts against that module’s internals

case 3)

I want to use the module dependencies to create an installer, with the 
dependent modules on the module path. In theory, if Maven understands the above 
2 cases, it would also be able to verify the requires clauses in my project’s 
module-info.

So how will we be doing this in maven? Is it already supported? My first 
thought was that we need two new scopes: module (case 1) and module-test (case 
2), but has this already been planned?

Thanks,
Russ
-
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org