[ http://jira.codehaus.org/browse/MCOMPILER-57?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dennis Lundberg closed MCOMPILER-57. ------------------------------------ Resolution: Fixed Patch applied with slight modifications. Thank you! > State default source (1.3) and target (1.1) in the documentation > ---------------------------------------------------------------- > > Key: MCOMPILER-57 > URL: http://jira.codehaus.org/browse/MCOMPILER-57 > Project: Maven 2.x Compiler Plugin > Issue Type: Improvement > Affects Versions: 2.1 > Reporter: Gisbert Amm > Assignee: Dennis Lundberg > Priority: Trivial > Attachments: MCOMPILER-57-maven-compiler-plugin.patch > > > The documentation does currently say nothing about the compiler defaults, > especially source and target version, which is 1.3 and 1.1 (byte code 45.3). > It would be helpful to add this information to the docs to make the defaults > obvious. > Respective mailing list content: > This has been discussed several times on this list. > IMO, the default compilation target being 1.1 (or another hard-defined > version) meets the rule of least surprise. You can argue that you > don't like 1.1 and you'd prefer 1.3 or even 1.5 but that is another > discussion. > In contrast, the rule of most surprise would be "my build changes when > I change my JDK" or "my build changes when I build things on different > machines". This is the absolute worst thing you can run into when > trying to standardize and control your build process. > If you want to target a specific JDK, then simply add the compiler > configuration in your poms. If you feel this has not been documented > sufficiently, then post a RFE in Jira and someone will add some text > to the proper page(s) on the site. > Wayne > On 8/15/07, Gisbert Amm <[EMAIL PROTECTED]> wrote: > >> Searching for version issues, I had a closer look at the *.class files > >> generated by Maven2 with the default compiler settings and found that > >> the first bytes of them are "cafe babe 0003 002D ...", which is byte > >> code version 45.3 = Java 1.1. > >> > >> First I was believing that I had this (target 1.1) configured somewhere > >> by accident. However, I didn't find any such configuration, therefore I > >> dug into the plexus-compiler source and found the following in > >> plexus-site/plexus-components/plexus-compiler/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java: > >> > >> // TODO: this could be much improved > >> if ( StringUtils.isEmpty( config.getTargetVersion() ) ) > >> { > >> // Required, or it defaults to the target of your JDK (eg 1.5) > >> args.add( "-target" ); > >> args.add( "1.1" ); > >> } > >> else > >> { > >> args.add( "-target" ); > >> args.add( config.getTargetVersion() ); > >> } > >> > >> if ( !suppressSource( config ) && StringUtils.isEmpty( > >> config.getSourceVersion() ) ) > >> { > >> // If omitted, later JDKs complain about a 1.1 target > >> args.add( "-source" ); > >> args.add( "1.3" ); > >> } > >> > >> Is there any particular reason why target is set to 1.1 here? IMHO, it > >> breaks the rule of least surprise for I am certainly expecting that the > >> generated byte code by default has the version of the JDK I'm using the > >> compiler of. The comment "Required, or it defaults to the target of your > >> JDK" doesn't give any reason. Does anybody know, why this default is set? > >> > >> At least it should be mentioned on > >> http://maven.apache.org/plugins/maven-compiler-plugin/howto.html to make > >> it obvious to users. Otherwise people might have problems and need a > >> long time to find out what's going on (see > >> http://www.nabble.com/Odd-Compilation-Issue-tf1566644s177.html#a4287495 > >> for an example). > >> > >> Regards, > >> Gisbert -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira