On 03/30/2016 02:45 PM, [email protected] wrote:
------------------------------------------------------------------------ *De: *"Ali Ebrahimi" <[email protected]> *À: *"Remi Forax" <[email protected]> *Cc: *"Alan Bateman" <[email protected]>, "Jonathan Gibbons" <[email protected]>, "jigsaw-dev" <[email protected]> *Envoyé: *Mercredi 30 Mars 2016 17:12:22 *Objet: *Re: modulepath and classpath mixture So, do you suggest partial modules or module fragments?A kind of exploded module with sources available in more than one directory. Classes are still in one modular jar with one module-info.class (so at runtime, there is only one module).Why we make things so complex for writing single test method. I think testing is an essential part of development, so modular java should have first class support for that. I don't see command line options as developer friendly solution, even things gets worse when have dozen of modules.That's another question, i think we first need to agree that we just want to have the main code and the test code into different directory and then we can see if javac -Xmodule is the best syntax or if by example -modulesourcepath can accept to have several directories that describe the same module.
-modulesourcepath can accept several source directories that together comprise the source for a single module. If nothing else, you can see this utilized in the JDK build, where the source structure for a module may contain subdirectories for platform-independent classes, platform-specific classes, and dynamically generated classes.
The primary constraints are that there is only one module-info.java file, and the mapping to a class output directory.
There is nothing to prevent you recompiling an entire module, including test code, to create a new version of the module, including the test code. If you so choose.
-- Jon
cheers, Rémi On Wed, Mar 30, 2016 at 6:42 PM, Remi Forax <[email protected] <mailto:[email protected]>> wrote: Alan, Jon, i think javac -Xmodule should merge the module-info.java from the existing module and the one declared in the directory, with the current semantics of the module-info, merging of modules is easy and with no corner cases, so for testing, the test will be able to declare their own dependencies inside their own module-info.java. Proposed semantics for merging, - do the union of the required modules - if one required module is required publicly, it will be required publicly. - do the union of the exported packages - if one exported package is restricted, do the union of the restriction - do the union of the uses. - do the union of the provides. so merging two modules is symmetric and will always succeed. Rémi ----- Mail original ----- > De: "Alan Bateman" <[email protected] <mailto:[email protected]>> > À: "Russell Gold" <[email protected] <mailto:[email protected]>> > Cc: "jigsaw-dev" <[email protected] <mailto:[email protected]>> > Envoyé: Mercredi 30 Mars 2016 15:45:03 > Objet: Re: modulepath and classpath mixture > > On 30/03/2016 13:28, Russell Gold wrote: > > : > > > > > > So if the tests and main code are both in directories, which they have been > > up to now in Maven, why would there be a problem? Both would be in the > > unnamed module and able to access one another. > > > There shouldn't any issue there, it should just work as it has always done. > > The thread here has meandered a bit but I think the scenario under > discussion is tests for a module that need to nestmate with the module > under test. The tests are in their own test tree. The tests are compiled > separately from the module they test and may have additional dependences > (such as on TestNG or JUnit for example). When compiling or running then > the tests need to access public types in non-exported packages and maybe > package private members too. The support for this has been in jake for a > long time but involves command line options that many developers or > build environments won't immediately grok. In particular the tests have > to be compiled "as if" they augment the already compiled module - that > is what javac -Xmodule is about. There is no need to co-locate source > files or class files of course. When run then the -Xpatch option is what > brings the tests and the module classes together. If we get the tools > right then most developers won't ever see this of course. > > One other thing to say that we've already been through some of this with > the JDK tests. The jtreg test harness that we use for the JDK tests has > been updated (thanks to Jon Gibbons) with useful support for modules > [1]. It's enough for us to write tests that use JDK-internal APIs or > write tests that nestmate with types in system modules so that they get > access to package private type or public types in non-exported packages. > It has rudimentary support for user modules too. Additional dependences > are still an issue but our tests don't require additional dependences > beyond TestNG. The test harness employs a bit of hackery to get things > done, important when starting out, but I expect will go away in time. > > -Alan. > > [1] > http://hg.openjdk.java.net/code-tools/jtreg/raw-file/tip/src/share/doc/javatest/regtest/tag-spec.html > > >--Best Regards, Ali Ebrahimi
