Index: NbMerge.java =================================================================== RCS file: /cvs/nbbuild/antsrc/org/netbeans/nbbuild/NbMerge.java,v retrieving revision 1.14 diff -r1.14 NbMerge.java 10c10 < * Code is Sun Microsystems, Inc. Portions Copyright 1997-2000 Sun --- > * Code is Sun Microsystems, Inc. Portions Copyright 1997-2002 Sun 31a32,34 > * > * 2002-07-31: Rudolf Balada Added build success granularity (Issue 9701), > * fixed modules can't fail, "modules" can fail 35a39 > private Vector fixedmodules = new Vector (); 39a44,46 > private Vector failedmodules = new Vector (); // List of failed modules > private Vector builtmodules = new Vector (); // list of successfully built modules > private boolean failonerror = true; // false = enable build success granularity 44a52,63 > > public void setFailOnError (boolean b) { > failonerror = b; > } > > /** Comma-separated list of fixed modules to include. */ > public void setFixedModules (String s) { > StringTokenizer tok = new StringTokenizer (s, ", "); > fixedmodules = new Vector (); > while (tok.hasMoreTokens ()) > fixedmodules.addElement (tok.nextToken ()); > } 120a140,153 > > if (( modules.size() > 0 ) && ( fixedmodules.size() == 0 ) && (! failonerror)) { > log("Unable to build without fixedmodules set", project.MSG_WARN); > log("Moving modules list to fixed modules list", project.MSG_WARN); > fixedmodules.addAll(modules); > modules.removeAllElements(); > } > > if (( failonerror ) && ( modules.size() > 0 )) { > // failonerror is enable => build success granularity is disabled > // though move all modules to fixedmodules > fixedmodules.addAll(modules); > modules.removeAllElements(); > } 123a157 > // build fixed modules first 130,132c164,166 < for (int i = 0; i < modules.size (); i++) { < String module = (String) modules.elementAt (i); < dummy.addDependency (targetprefix + module); --- > for (int i = 0; i < fixedmodules.size (); i++) { > String fixedmodule = (String) fixedmodules.elementAt (i); > dummy.addDependency (targetprefix + fixedmodule); 136,143c170,215 < < /* Done in build.xml < Delete delete = (Delete) project.createTask ("delete"); < delete.setDir (dest); < delete.init (); < delete.setLocation (location); < delete.execute (); < */ --- > builtmodules.addAll(fixedmodules); // add already built fixed modules to the list > log(fixedmodules.toString(), project.MSG_DEBUG); > log(builtmodules.toString(), project.MSG_DEBUG); > > String module; > if ( ! failonerror ) { > // set "unless" attribute on built targets > if ( fixedmodules.size() > 0 ) { > for (int i = 0; i < fixedmodules.size (); i++) { > module = (String) fixedmodules.elementAt (i); > project.setProperty("built-" + targetprefix + module, "1" ); > ((Target) project.getTargets().get(targetprefix + module)).setUnless( "built-" + targetprefix + module ); > log("Setting \"unless\" attribute on target " + targetprefix + module, project.MSG_VERBOSE); > } > } > > // build the rest of modules > for (int i = 0; i < modules.size (); i++) { > module = (String) modules.elementAt (i); > try { > dummy = new Target (); > dummyName = "granularnbmerge-" + target.getName () + "-" + module; > while (targets.contains (dummyName)) > dummyName += "-x"; > dummy.setName (dummyName); > dummy.addDependency (targetprefix + module); > project.addTarget (dummy); > project.executeTarget (dummyName); > project.setProperty("built-" + targetprefix + module, "1"); > ((Target) project.getTargets().get(targetprefix + module)).setUnless("built-" + targetprefix + module); > log("Setting \"unless\" attribute on target " + targetprefix + module, project.MSG_VERBOSE); > builtmodules.addElement(module); > } catch (BuildException BE) { > if (failonerror) { > // backward compatibility with NbMerge.java > throw new BuildException(BE.getMessage(), location ); > } else { > log("Caught BuildException during execution of target " + targetprefix + module, project.MSG_INFO); > log(BE.toString()); > BE.printStackTrace(); > failedmodules.addElement(module); > } > } > } > } > 155a228,229 > > // merge the data 158,159c232,233 < for (int i = 0; i < modules.size (); i++) { < String module = (String) modules.elementAt (i); --- > for (int i = 0; i < builtmodules.size (); i++) { > module = (String) builtmodules.elementAt (i); 182a257,279 > > // display build success status > if (builtmodules.size() > 0 ) { > log("builtmodules=\"" + builtmodules.toString() + "\""); > if (failedmodules.size() > 0 ) { > log("SOME MODULES FAILED TO BUILD, BUT THEIR BuildException WAS CAUGHT."); > log("failedmodules=\"" + failedmodules.toString() + "\""); > } > > // enable build of used targets for other processes > // unset the unless attribute > if ( ! failonerror ) { > for (int i = 0; i < builtmodules.size (); i++) { > module = (String) builtmodules.elementAt (i); > project.setProperty("built-" + targetprefix + module, "" ); > ((Target) project.getTargets().get(targetprefix + module)).setUnless( null ); > log("Unsetting \"unless\" attribute on target " + targetprefix + module, project.MSG_VERBOSE); > } > } > } else { > throw new BuildException("No modules were built", location); > } >