code: protected Resource[][] grabResources(FileSet[] filesets) 
      {
          //
          // Get the list of resources being added/updated by calling Zip.grabResources
          //
          Resource [][] resources = super.grabResources(filesets);
  
          //
          // Iterate through the resources for each input FileSet, looking for an associated
          // manifest file.
          //
          for (int i = 0; i < filesets.length; i++)
          {
              if (resources[i].length == 0)
                  continue;
  
              File base = filesets[i].getDir(getProject());
              Resource [] setResources = resources[i];
  
              for (int j = 0; j < setResources.length; j++)
              {
                  File manifestFile = 
                      fileUtils.resolveFile(base, setResources[j].getName() + ".manifest");
                  if (manifestFile.exists())
                      manifestFiles.add(manifestFile);
              }
          }
  
          return resources;
      }
docs: Step #1: Wrap the implementation of Zip.grabResources.  This method identifies the
  set of resources to be stored in the JAR file.   For each added/updated resource,
  the overrided method will look for an associated .manifest file that any
  JAR manifest data to add/update in the JAR manifest.