[ http://jira.codehaus.org/browse/MCOMPILER-65?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=133396#action_133396 ]
Benjamin Bentmann commented on MCOMPILER-65: -------------------------------------------- bq. Does this replace the compiler plugin somehow? No, the toolchains will only help the Compiler Plugin to locate a JDK (javac, boot class path). For more information/questions, please use the comments thread of the wiki article, where Milos Klient, the author of the proposal, can hopefully shed some more light on your concerns. > Intelligent fork or bootclasspath based on desired target JDK > ------------------------------------------------------------- > > Key: MCOMPILER-65 > URL: http://jira.codehaus.org/browse/MCOMPILER-65 > Project: Maven 2.x Compiler Plugin > Issue Type: Improvement > Reporter: David Smiley > > I work with Maven on a few projects, some jdk 1.4, some jdk 1.5. The only > way to get a consistent compiled build is to fork the compiler so that a > particular jdk is used, it's not necessarily enough to set the "source" and > "target" params on the compiler plugin ( see > http://madbean.com/2006/target14/ ) for an explanation. I say not > necessarily in part not just on the info in that referred URL, but we really > can't and shouldn't assume that maven itself is using a particular jdk > either. I think this is a big deal and I would guess that the maven team > would also think it's a big deal based on a cornerstone philosophy of > repeatable builds. -- Builds that shouldn't come with special instructions > to do some magic (like run maven in a certain VM or set certain system > properties). > This issue needs to be more prominently displayed in the maven documentation, > both for the plugin and most certainly this FAQ entry: > http://maven.apache.org/general.html#Compiling-J2SE-5 -- if only it were > that simple. > I have an idea for a solution that involves only forking when necessary and > if not that possibly setting the bootclasspath. The idea is to avoid > forking, and to avoid setting bootclasspath if neither are necessary. And of > course the result is a compiler configuration that can and should be as > simple as setting the "target" param to get a repeatable build no matter what > JDK maven is running under. > 1. Standardize on the system property names for the java homes, i.e. > JAVA_1_4_HOME JAVA_1_5_HOME etc. Furthermore... this *should* be set in the > user's settings.xml. Yes this means installation requires another step but I > see no way around that unless maven were to try and figure out these based on > operating-specific logic. > 2. Based on the "source" and "target" parameters, determine wether (a) > Maven's current VM can be used as-is without setting bootclasspath for javac > (b) Maven's current VM can be used but needs to set the bootclasspath for > javac, or (c) fork and use an external javac. If (a) can be chosen then the > standardized property names don't need to be consulted. In (b) the java home > is needed for the bootclasspath, and in (c) to fork javac. Also, ensure that > the choice of a,b,c is somehow displayed in the maven output so the developer > knows. > Implementation note: I noticed that the maven compiler plugin uses Ant > heavily to do its job. In light of that, implementing this feature might > instead involve enhancing the ant side to have this feature and then making > minor changes on the maven side to accommodate them. -- 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