I've added comments to the pull request itself. /Anders
On Sun, Oct 28, 2012 at 10:42 PM, Olivier Lamy <ol...@apache.org> wrote: > Hi, > So have a look at those changes > https://github.com/sonatype/plexus-compiler/pull/10. > This break backward comp but as it will be easier in the future to > improve the compiler result without breaking backward comp. > > > > > 2012/10/19 Olivier Lamy <ol...@apache.org>: >> I think this change makes sense. >> But I know at least one external dependency: >> http://groovy.codehaus.org/Groovy-Eclipse+compiler+plugin+for+Maven >> >> I don't know if Andrew is listening here ? >> >> 2012/10/19 Anders Hammar <and...@hammar.net>: >>>> Changing the version number to 2.0 is not good enough to make >>>> incompatible changes, due to the working of dependency resolution. >>> >>> Sure it is, out of a configuration management perspective. Out of a >>> Maven dep resolution perspective it might not be optimal. Preserving >>> backwards compatibility is always desirable but sometimes it might >>> just not be possible or might come at a high cost. Not saying it's the >>> case here, but just generally speaking. >>> >>>> Maven will, of course, cheerfully and silently substitute 2.0 for 1.2 >>>> in a dependency tree, with unhappy result. You have to, of course, >>>> change the G or the A, and the package names, to allow interoperation. >>> >>> Wee, that would be even worse as Maven would then treat it as two >>> different artifacts while they contain the same classes. So only the >>> first one on the classpath will be used. >>> >>> But I understand the worries and that's why I asked if it known to be >>> used by anything other than m-compiler-p. If it isn't, and as we >>> control m-compiler-p, there is no problem doing backwards incompatible >>> changes. >>> I might be remembering wrong, but I think that someone proposed moving >>> the code to Apache Maven space and we could do the changes then >>> instead. >>> >>> Just to shed some light on why I think we should do this: >>> In some cases there aren't an error message returned by the compiler >>> even though the compilation did/should fail. Such a case is IIRC if >>> "-Werror" is configured, where compilation fails on warnings as well. >>> Today the plexus-compiler handles this by adding a fake error message >>> so that m-compiler-p will see an error message in the returned list of >>> messages. And then fail the plugin execution. Just not a pretty >>> solution which is actually currently buggy (stopped working in v1.9.2 >>> of plexus-compiler e.g.). >>> >>> /Anders >>> >>> >>>> >>>> I'm not trying to convince you do to this for plexus compiler, but I >>>> hate to leave an email thread lying about that gives the impression >>>> that bumping the version number a long distance is all it takes. >>>> >>>> >>>>> >>>>> /Anders >>>>> >>>>> On Fri, Oct 19, 2012 at 12:56 PM, Arnaud Héritier <aherit...@gmail.com> >>>>> wrote: >>>>>> +1 to bump the compiler to 3.0 with this change >>>>>> >>>>>> On Fri, Oct 19, 2012 at 12:30 PM, Olivier Lamy <ol...@apache.org> wrote: >>>>>> >>>>>>> So as no objections it's now merged. >>>>>>> I bumped plexus-compiler version to 2.0-SNAPSHOT. >>>>>>> >>>>>>> As maven-compiler-plugin has a lot of changes (including incremental >>>>>>> stuff) I wonder about bump version to 3.0-SNAPSHOT ? >>>>>>> >>>>>>> 2012/10/18 Olivier Lamy <ol...@apache.org>: >>>>>>> > just FYI I have created a branch here >>>>>>> > https://github.com/sonatype/plexus-compiler/tree/PLXCOMP-1 >>>>>>> > This supports 1.5 and javax.tools if available in the user env. >>>>>>> > >>>>>>> > I have noticed some perf degradation testing the pull request >>>>>>> > https://github.com/sonatype/plexus-compiler/pull/6. >>>>>>> > Using JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); >>>>>>> > for each compilation is very slower. >>>>>>> > >>>>>>> > So I have tried to mimic similar stuff as done with current Javacc >>>>>>> > (the reuseStrategy see >>>>>>> > >>>>>>> http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerReuseStrategy >>>>>>> > ). NOTE that's a *very* basic pool mechanism :-). >>>>>>> > >>>>>>> > As I have no idea if the compiler is threadsafe or not (it's not >>>>>>> > documented to be thread safe in javadoc but at least javadoc samples >>>>>>> > says it can be reused for future compilation). Tests on my env (osx + >>>>>>> > java 1.6.0_37) looks to say yes. >>>>>>> > >>>>>>> > In compiler plugin (not committed yet), I have added a flag to disable >>>>>>> > use of javax.tools usage (as it if that breaks on some os/jdk users >>>>>>> > will be able to disable it even if that's detected to be usable) >>>>>>> > >>>>>>> > WDYT ? >>>>>>> > >>>>>>> > 2012/10/1 Stephen Connolly <stephen.alan.conno...@gmail.com>: >>>>>>> >> On 28 September 2012 18:15, John Casey <jdca...@commonjava.org> >>>>>>> >> wrote: >>>>>>> >> >>>>>>> >>> On 9/28/12 12:08 PM, Mark Struberg wrote: >>>>>>> >>> >>>>>>> >>>> +1 >>>>>>> >>>> >>>>>>> >>>> Imo this comes hand in hand with moving maven-core to 1.6 as well >>>>>>> >>>> and >>>>>>> a >>>>>>> >>>> version bump to mvn-3.2.0 or even mvn-3.5.0 >>>>>>> >>>> >>>>>>> >>>> We might create a documentation page about "Strategies for >>>>>>> >>>> targeting >>>>>>> >>>> older Java versions" which outlines the animal-sniffer, etc >>>>>>> >>>> >>>>>>> >>>> LieGrue, >>>>>>> >>>> strub >>>>>>> >>>> >>>>>>> >>> >>>>>>> >>> I think the plugin could be a sort of advance guard for the core >>>>>>> itself, >>>>>>> >>> since people can still use the core + the older version of the >>>>>>> >>> compiler >>>>>>> >>> plugin to run on 1.5... >>>>>>> >>> >>>>>>> >>> I wouldn't want to get mired in a discussion about when we're going >>>>>>> >>> to >>>>>>> >>> move the core up to 1.6, since that's a bit more work. >>>>>>> >>> >>>>>>> >>> >>>>>>> >> There is the Toolchains issue. >>>>>>> >> >>>>>>> >> At present, AFAIK we can use Toolchains to run Maven with Java 1.6 >>>>>>> >> and >>>>>>> >> compile with Java 1.3. >>>>>>> >> >>>>>>> >> Surefire supports running tests via toolchains down to Java 1.3 IIRC >>>>>>> >> >>>>>>> >> If we are doing something that makes this kind of thing impossible >>>>>>> >> *even >>>>>>> >> via toolchains* then my feeling is that I am -1. >>>>>>> >> >>>>>>> >> If we can find a way (more indirection please, it solves all problems >>>>>>> don't >>>>>>> >> you know) to allow this to work *and* retain toolchains support for >>>>>>> >> compiling with JDK 1.3 then +1. >>>>>>> >> >>>>>>> >> >>>>>>> >>> >>>>>>> >>> >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>>> ----- Original Message ----- >>>>>>> >>>> >>>>>>> >>>>> From: John Casey <jdca...@commonjava.org> >>>>>>> >>>>> To: Maven Developers List <dev@maven.apache.org> >>>>>>> >>>>> Cc: >>>>>>> >>>>> Sent: Friday, September 28, 2012 6:53 PM >>>>>>> >>>>> Subject: PLXCOMP-1 and improving compiler-message parsing >>>>>>> >>>>> >>>>>>> >>>>> Hi everyone, >>>>>>> >>>>> >>>>>>> >>>>> There's a new patch to the plexus-compiler libraries which >>>>>>> >>>>> improves >>>>>>> the >>>>>>> >>>>> parsing of the output messages, especially for annotation >>>>>>> >>>>> processing. >>>>>>> >>>>> Previously, a lot of non-error messages caused plexus-compiler >>>>>>> >>>>> (and >>>>>>> >>>>> thereby, >>>>>>> >>>>> Maven) to think a compilation error had occurred. The patch fixes >>>>>>> this >>>>>>> >>>>> by using >>>>>>> >>>>> the javax.tools APIs to work with in-process compilation. >>>>>>> >>>>> >>>>>>> >>>>> The patch is here: >>>>>>> >>>>> >>>>>>> >>>>> https://github.com/sonatype/**plexus-compiler/pull/6< >>>>>>> https://github.com/sonatype/plexus-compiler/pull/6> >>>>>>> >>>>> >>>>>>> >>>>> >>>>>>> >>>>> The issue is here (it's been out there for a LONG time, as you can >>>>>>> see: >>>>>>> >>>>> >>>>>>> >>>>> http://jira.codehaus.org/**browse/PLXCOMP-1< >>>>>>> http://jira.codehaus.org/browse/PLXCOMP-1> >>>>>>> >>>>> >>>>>>> >>>>> >>>>>>> >>>>> The javax.tools APIs are JDK 1.6+ IIRC, so merging this patch >>>>>>> >>>>> would >>>>>>> >>>>> effectively >>>>>>> >>>>> drag the future of the maven-compiler-plugin up to requiring JDK >>>>>>> >>>>> 1.6. >>>>>>> >>>>> Personally, since JDK 1.5 has been out almost as long as I've been >>>>>>> coding >>>>>>> >>>>> (well, not too far), I don't see the problem. Remember, we're not >>>>>>> asking >>>>>>> >>>>> people to upgrade their production VM, only the build-time >>>>>>> version...and >>>>>>> >>>>> we have >>>>>>> >>>>> documented strategies for targeting older VM versions >>>>>>> >>>>> successfully. >>>>>>> >>>>> >>>>>>> >>>>> We might look at strategies for degrading gracefully in case >>>>>>> >>>>> someone >>>>>>> is >>>>>>> >>>>> using >>>>>>> >>>>> JDK 1.5, but IMO we need to be very careful about this. For >>>>>>> instance, I >>>>>>> >>>>> wouldn't want people to wind up with unexplained, random new >>>>>>> >>>>> errors >>>>>>> >>>>> because >>>>>>> >>>>> they accidentally set their $PATH wrong. But maybe we could give >>>>>>> them a >>>>>>> >>>>> large >>>>>>> >>>>> warning then switch over to forked-mode compilation in this case? >>>>>>> >>>>> >>>>>>> >>>>> I'd really hate to see this patch go unmerged because we're stuck >>>>>>> >>>>> supporting JDK 1.5...or if we do reject it on these grounds, >>>>>>> >>>>> maybe we >>>>>>> >>>>> need to >>>>>>> >>>>> talk about when it's reasonable to jump ship on 1.5 if not now? >>>>>>> >>>>> >>>>>>> >>>>> I'd LIKE to merge this patch, release plexus-compiler, and >>>>>>> >>>>> document >>>>>>> how >>>>>>> >>>>> to >>>>>>> >>>>> use it as a plugin-level dependency...then make the move to 1.6 >>>>>>> >>>>> for >>>>>>> the >>>>>>> >>>>> compiler >>>>>>> >>>>> plugin. >>>>>>> >>>>> >>>>>>> >>>>> Thoughts? >>>>>>> >>>>> >>>>>>> >>>>> -john >>>>>>> >>>>> >>>>>>> >>>>> -- John Casey >>>>>>> >>>>> Developer, PMC Member - Apache Maven (http://maven.apache.org) >>>>>>> >>>>> GitHub - http://github.com/jdcasey >>>>>>> >>>>> >>>>>>> >>>>> ------------------------------**------------------------------** >>>>>>> >>>>> --------- >>>>>>> >>>>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.**org< >>>>>>> dev-unsubscr...@maven.apache.org> >>>>>>> >>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>> >>>>> >>>>>>> >>>>> >>>>>>> >>>> >>>>>>> ------------------------------**------------------------------**--------- >>>>>>> >>>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.**org< >>>>>>> dev-unsubscr...@maven.apache.org> >>>>>>> >>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>> >>>> >>>>>>> >>>> >>>>>>> >>> >>>>>>> >>> -- >>>>>>> >>> John Casey >>>>>>> >>> Developer, PMC Member - Apache Maven (http://maven.apache.org) >>>>>>> >>> GitHub - http://github.com/jdcasey >>>>>>> >>> >>>>>>> >>> >>>>>>> ------------------------------**------------------------------**--------- >>>>>>> >>> To unsubscribe, e-mail: dev-unsubscribe@maven.apache.**org< >>>>>>> dev-unsubscr...@maven.apache.org> >>>>>>> >>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>> >>> >>>>>>> >>> >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> > -- >>>>>>> > Olivier Lamy >>>>>>> > Talend: http://coders.talend.com >>>>>>> > http://twitter.com/olamy | http://linkedin.com/in/olamy >>>>>>> >>>>>>> >>>>>>> >>>>>>> -- >>>>>>> Olivier Lamy >>>>>>> Talend: http://coders.talend.com >>>>>>> http://twitter.com/olamy | http://linkedin.com/in/olamy >>>>>>> >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org >>>>>>> For additional commands, e-mail: dev-h...@maven.apache.org >>>>>>> >>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> ----- >>>>>> Arnaud Héritier >>>>>> 06-89-76-64-24 >>>>>> http://aheritier.net >>>>>> Mail/GTalk: aherit...@gmail.com >>>>>> Twitter/Skype : aheritier >>>>> >>>>> --------------------------------------------------------------------- >>>>> 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 >>> >> >> >> >> -- >> Olivier Lamy >> Talend: http://coders.talend.com >> http://twitter.com/olamy | http://linkedin.com/in/olamy > > > > -- > Olivier Lamy > Talend: http://coders.talend.com > http://twitter.com/olamy | http://linkedin.com/in/olamy > > --------------------------------------------------------------------- > 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