FWIW, I do not like 'minjava'. OTOH 'java7' is clear, not why not just stick to 'java#'?
Gary On Mon, Apr 13, 2015 at 10:19 AM, Paul Benedict <pbened...@apache.org> wrote: > This is the example project structure I had in mind: > > mvjar-example/ > minjava/ > src/main/java > src/test/java > java7/ > src/main/java > src/test/java > java8/ > src/main/java > src/test/java > > The "minjava" and "java7" and "java8" are not special names (just names to > denote what kind of Java source is inside). As Herve noted, "minjava" would > contain the source minimum Java version; "java7" would contain the java > 7-specific sources, and "java8" would contain the java 8-specific sources. > > I don't see any added difficulty with regard to testing. If you already > have code that tests a specific Java X version, just extract that into its > own test case file and place it in the appropriate project. At most all > you're doing is minor refactoring. > > This will create three JARs of course (or at least today). I don't see that > as a big deal since authors may decide to distribute this way where MVJAR > isn't supported (like pre-Java 9 JVMs). However, if we can bind up all the > jars into one in a post-processing phrase, you can then meet the MVJAR > specification. > > PS: I really don't know if an "mvjar" type is necessary. Honestly, I hope > it's not. I thought it was needed in the beginning, but am not sure > anymore. Opinions appreciated. > > > > Cheers, > Paul > > On Mon, Apr 13, 2015 at 1:28 AM, nicolas de loof <nicolas.del...@gmail.com > > > wrote: > > > I expect we could run the unit test suite on JDK 6 / 7 / 8 in parallel > with > > 7/8 specific code being used for the JDK that do support them, so I > wonder > > such a multi-module setup would work in this scenario, or would need yet > > another maven module for tests :'( > > > > 2015-04-12 23:33 GMT+02:00 Hervé BOUTEMY <herve.bout...@free.fr>: > > > > > Le samedi 11 avril 2015 21:42:50 Paul Benedict a écrit : > > > > I've been giving this subject lots of thought in some of spare time. > > IMO, > > > > the most straightforward way of meeting the requirement of the MVJAR > is > > > to > > > > break up one's JAR project into separate modules. One module would > > > contain > > > > the version independent code, and then other modules would be per > Java > > > > version. > > > more precisely: the first module would contain the source for minimum > > Java > > > version: sometimes, it will contain code that won't run with later JRE > > > > > > > This kind of slicing is necessary because you do need different > > > > kinds of compiler directives (like -source), different JREs to run > unit > > > > tests differently, and most importantly, the different JREs to allow > > > > debugging according to the Java version you want to test. > > > > > > > > The other piece that doesn't yet exist is a way to bundle the modules > > > into > > > > one jar. Perhaps this can be accomplished by introducing a new > "mvjar" > > > > Maven type. > > > I didn't imagine this scenario: no Maven plugins updates nor IDE, > "just" > > a > > > new > > > feature to merge multiple modules into on MV jar > > > > > > interesting idea, in fact: this would seriously reduce the impact on > > > tooling, > > > even if the result is less compact, ie creates a lot of Maven modules > > > > > > and I am wondering what unit tests will look like for additional > > versions: > > > the > > > good thing is that they can be tweaked easily. Then bad thing is that > we > > > may > > > end up in copy/pasting them > > > > > > Regards, > > > > > > Hervé > > > > > > > > > > > Paul > > > > > > > > > > > > Cheers, > > > > Paul > > > > > > > > On Sat, Apr 11, 2015 at 9:37 AM, Hervé BOUTEMY < > herve.bout...@free.fr> > > > > > > > > wrote: > > > > > Le samedi 11 avril 2015 15:35:02 Kristian Rosenvold a écrit : > > > > > > Technically we support "main" scoped sources in java6 and "test" > > > > > > scoped sources in java7 today, but the feature is largely > unusable > > > > > > since IDE support is totally missing. Even IntelliJ does not > > support > > > > > > it (https://youtrack.jetbrains.com/issue/IDEA-85478 and other > > > issues) > > > > > > > > > > > > :( > > > > > > > > > > > > There might be some hope of gaining some kind of traction to both > > > > > > source and main-level support of multi-language-level modules. > > Maybe > > > > > > something like (src/main/java and src/test/java = "default > > language" > > > > > > level) while src/[main|test]/java-8 would be a specific language > > > > > > level. This sounds infinitely cool, > > > > > > > > > > yes, that's what I did in plexus-utils jdep-238 branch > > > > > > > https://github.com/codehaus-plexus/plexus-utils/tree/jep-238/src/main > > > > > > > > > > > but also like a great can of worms > > > > > > > > > > > > :) > > > > > > > > > > yes, I fear it's not so easy for IDEs... > > > > > > > > > > > I assume minimum compiler requirement would be java-8 for a > project > > > > > > > > > > > > with src/main/java-8 ? > > > > > > > > > > yes, I think that's what makes such support hard at the moment: > > require > > > > > the > > > > > highest JDK, and signature for every lower JDK to avoid newer APIs > > > > > unless JDK 9 can safely compile for any older target, checking the > > API > > > > > (without having to run Animal Sniffer after that) > > > > > > > > > > Regards, > > > > > > > > > > Hervé > > > > > > > > > > > K > > > > > > > > > > > > 2015-04-11 15:11 GMT+02:00 Hervé BOUTEMY <herve.bout...@free.fr > >: > > > > > > > Le samedi 11 avril 2015 10:54:34 Kristian Rosenvold a écrit : > > > > > > >> IDE support for multiple source trees seems quite far off ? > > > > > > > > > > > > > > IDE support for current situation, where we mix multiple Java > API > > > > > > > > > > versions > > > > > > > > > > > > in one single source tree, is even more far off! > > > > > > > > > > > > > > With separate source trees, IDE support starts like we are at > the > > > > > > > > > > moment = > > > > > > > > > > > > no IDE support > > > > > > > > > > > > > > but IDEs that want to do something about it have a chance: > that's > > > the > > > > > > > > > > big > > > > > > > > > > > > difference IMHO > > > > > > > > > > > > > > Regards, > > > > > > > > > > > > > > Hervé > > > > > > > > > > > > > >> Kristian > > > > > > >> > > > > > > >> 2015-04-11 8:51 GMT+02:00 Hervé BOUTEMY < > herve.bout...@free.fr > > >: > > > > > > >> > Hi, > > > > > > >> > > > > > > > >> > Yesterday at DevoxxFR, Carlos Sanchez, Arnaud Héritier, > > Nicolas > > > de > > > > > > > > > > Loof > > > > > > > > > > > >> > and me met Brian Goetz and discussed about the objective of > > JEP > > > 238 > > > > > > > > > > and > > > > > > > > > > > >> > what we could get from such a feature. > > > > > > >> > > > > > > > >> > Having a face to face explanation in front of a white board > > gave > > > > > > >> > interesting ideas: then, *as library maintainer*, I tried to > > > > > > >> > modifiy > > > > > > >> > plexus-utils code to use MVJAR for Java 7 enhancement that > are > > > > > > >> > currently > > > > > > >> > triggerred through reflection > > > > > > >> > > > > > > > >> > > > > > > > >> > Here is the result [1]: > > > > > > >> > > > > > > > >> > I extracted 2 little xxxMv classes containing only the few > > > methods > > > > > > > > > > that > > > > > > > > > > > >> > had to be enhanced when runing on Java 7, replacing the > > > > > > >> > > > > > > > >> > if (Java7Detector.isJava7()) { > > > > > > >> > > > > > > > >> > // java 7 > > > > > > >> > > > > > > > >> > } else { > > > > > > >> > > > > > > > >> > // Java 5 > > > > > > >> > > > > > > > >> > } > > > > > > >> > > > > > > > >> > stanza with the default Java 5 code in the main > src/main/java > > > > > > >> > source > > > > > > >> > tree > > > > > > >> > and Java 7 reimplementation in src/main/java-7 source tree > > > > > > >> > > > > > > > >> > and I did cleanup: removed Java7Detector and moved NioFiles > to > > > this > > > > > > >> > java-7 > > > > > > >> > specific source tree > > > > > > >> > > > > > > > >> > > > > > > > >> > the result is a main src/main/java source tree that can be > > > compiled > > > > > > >> > with > > > > > > >> > JDK 5 and a src/main/java-7 source tree that is minimal to > be > > > > > > > > > > compiled > > > > > > > > > > > >> > with JDK 7 > > > > > > >> > > > > > > > >> > > > > > > > >> > I still didn't try to update pom.xml to see what > > > > > > > > > > maven-compiler-plugin > > > > > > > > > > > >> > and > > > > > > >> > maven-jar-plugin configurations could look like. > > > > > > >> > > > > > > > >> > and I don't know if javac will be enhanced to do the 2 > > > compilations > > > > > > > > > > in > > > > > > > > > > > >> > 1 > > > > > > >> > command like "javac -target 1.5 src/main/java -target 1.7 > > > > > > >> > src/main/java-7" > > > > > > >> > or if it'l have to launch 2 javac one after the other > > > > > > >> > > > > > > > >> > I didn't look at maven-jar-plugin to see if it uses "jar" > > > command > > > > > > > > > > that > > > > > > > > > > > >> > will be enhanced to mix multiple target/classes or if it > uses > > > > > > > > > > JarFile > > > > > > > > > > > >> > class then will need to code the mix > > > > > > >> > > > > > > > >> > and I don't know if javac will have tru crossplatform > > > compilation > > > > > > >> > option, > > > > > > >> > to avoid using 2 JDKs (ie JDK 5 for compiling java 5 code > and > > > being > > > > > > >> > sure > > > > > > >> > there is no Java 7 API reference, and JDK 7 for the java 7 > > part) > > > > > > >> > > > > > > > >> > > > > > > > >> > I see there will be impact on tooling, and if javac does a > > part > > > of > > > > > > > > > > the > > > > > > > > > > > >> > job, > > > > > > >> > this will be a lot easier to implement at Maven level > > > > > > >> > > > > > > > >> > > > > > > > >> > But at the moment, my objective was not from Maven point of > > view > > > > > > >> > but > > > > > > >> > library developper point of view: show a real world case of > > how > > > an > > > > > > >> > existing library could be refactored to use the feature, > > > expecting > > > > > > > > > > that > > > > > > > > > > > >> > the new source code would be easier to maintain > > > > > > >> > > > > > > > >> > > > > > > > >> > WDYT? > > > > > > >> > > > > > > > >> > Regards, > > > > > > >> > > > > > > > >> > Hervé > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > > > > > > > >> > [1] > > > > > > > > > > > > > > https://github.com/codehaus-plexus/plexus-utils/tree/jep-238/src/main/j > > > > > > > > > > > >> > av > > > > > > >> > a-7/org/codehaus/plexus/util> > > > > > > >> > > > > > > > >> > Le jeudi 19 mars 2015 23:38:32 Robert Scholte a écrit : > > > > > > >> >> Hi, > > > > > > >> >> > > > > > > >> >> we've been asked to give our opinion on the JEP 238: > > > Multi-Version > > > > > > > > > > JAR > > > > > > > > > > > >> >> Files > > > > > > >> >> > > > > > > >> >> Here's a quote from Rory O'Donnels e-mail: > > > > > > >> >> --- > > > > > > >> >> > > > > > > >> >> It's goal is to extend the JAR file format to allow > > multiple, > > > > > > >> >> JDK > > > > > > >> >> > > > > > > >> >> release-specific versions of class > > > > > > >> >> > > > > > > >> >> files to coexist in a single file. An additional goal is > to > > > > > > > > > > backport > > > > > > > > > > > >> >> the > > > > > > >> >> > > > > > > >> >> run-time changes to > > > > > > >> >> > > > > > > >> >> JDK 8u60, thereby enabling JDK 8 to consume multi-version > > > JARs. > > > > > > > > > > For > > > > > > > > > > > >> >> a > > > > > > >> >> > > > > > > >> >> detailed discussion, > > > > > > >> >> > > > > > > >> >> please see the corresponding thread on the core-libs-dev > > > mailing > > > > > > >> >> list. > > > > > > >> >> [1] > > > > > > >> >> > > > > > > >> >> Please keep in mind that a JEP in the Candidate state is > > > merely > > > > > > > > > > an > > > > > > > > > > > >> >> idea > > > > > > >> >> > > > > > > >> >> worthy of consideration > > > > > > >> >> > > > > > > >> >> by JDK Release Projects and related efforts; there is no > > > > > > > > > > commitment > > > > > > > > > > > >> >> that > > > > > > >> >> > > > > > > >> >> it will be delivered in > > > > > > >> >> > > > > > > >> >> any particular release. > > > > > > >> >> > > > > > > >> >> Comments, questions, and suggestions are welcome on the > > > > > > > > > > corelibs-dev > > > > > > > > > > > >> >> mailing list. (If you > > > > > > >> >> > > > > > > >> >> haven’t already subscribed to that list then please do so > > > first, > > > > > > >> >> > > > > > > >> >> otherwise your message will be > > > > > > >> >> > > > > > > >> >> discarded as spam.) > > > > > > >> >> > > > > > > >> >> [0] http://openjdk.java.net/jeps/238 > > > > > > >> >> [1] > > > > > > > > > > > > http://mail.openjdk.java.net/pipermail/core-libs-dev/2015-February/031 > > > > > > > > > > > >> >> 461 > > > > > > >> >> .ht ml > > > > > > >> >> > > > > > > >> >> --- > > > > > > >> >> > > > > > > >> >> IIUC the original request was to have different version of > > the > > > > > > >> >> same > > > > > > >> >> class > > > > > > >> >> within the same artifact. On the mailinglist I noticed a > more > > > > > > >> >> interesting > > > > > > >> >> idea: you need a mechanism to map Classes, Methods or > Fields > > > from > > > > > > > > > > one > > > > > > > > > > > >> >> version to the other. > > > > > > >> >> > > > > > > >> >> From a Maven perspective I don't see that much issues with > > the > > > > > > >> >> original > > > > > > >> >> > > > > > > >> >> idea. You should already be able to do it right now with a > > lot > > > of > > > > > > >> >> execution-blocks. > > > > > > >> >> However, I don't see how users would maintain different > > > version of > > > > > > > > > > the > > > > > > > > > > > >> >> same class (within an IDE). > > > > > > >> >> To me this all looks quite complex for rare cases. > > > > > > >> >> If you really want multiple JDK versions of the same > > artifact, > > > I > > > > > > > > > > would > > > > > > > > > > > >> >> probably split them into classified artifacts. > > > > > > >> >> > > > > > > >> >> Any other comments? > > > > > > >> >> > > > > > > >> >> thanks, > > > > > > >> >> Robert > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > > > > > >> >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > > > > >> >> For additional commands, e-mail: dev-h...@maven.apache.org > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > > > > > >> > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > > > > >> > For additional commands, e-mail: dev-h...@maven.apache.org > > > > > > >> > > > > > > >> > > > --------------------------------------------------------------------- > > > > > > >> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > > > > >> For additional commands, e-mail: dev-h...@maven.apache.org > > > > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > > > > > For additional commands, e-mail: dev-h...@maven.apache.org > > > > > > > > > > > > > > --------------------------------------------------------------------- > > > > > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > > > > For additional commands, e-mail: dev-h...@maven.apache.org > > > > > > > > > > > --------------------------------------------------------------------- > > > > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > > > For additional commands, e-mail: dev-h...@maven.apache.org > > > > > > > > > --------------------------------------------------------------------- > > > To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org > > > For additional commands, e-mail: dev-h...@maven.apache.org > > > > > > > > > -- E-Mail: garydgreg...@gmail.com | ggreg...@apache.org Java Persistence with Hibernate, Second Edition <http://www.manning.com/bauer3/> JUnit in Action, Second Edition <http://www.manning.com/tahchiev/> Spring Batch in Action <http://www.manning.com/templier/> Blog: http://garygregory.wordpress.com Home: http://garygregory.com/ Tweet! http://twitter.com/GaryGregory