code: @Override
      public void execute() throws BuildException {
          if (path == null)
              throw new BuildException("Path isn't defined");
  
          if (descriptors == null)
              throw new BuildException("Descriptors isn't defined");
  
          if (descriptors.getData() == null)
              throw new BuildException("No descriptor defined");
  
          ClassLoader oldCl = Thread.currentThread().getContextClassLoader();
          try {
              if (classpathRef != null || classpath != null) {
                  org.apache.tools.ant.types.Path p = new org.apache.tools.ant.types.Path(getProject());
  
                  if (classpathRef != null) {
                      org.apache.tools.ant.types.Reference reference = new org.apache.tools.ant.types.Reference(
                          getProject(), classpathRef);
                      p.setRefid(reference);
                  }
  
                  if (classpath != null) {
                      p.append(classpath);
                  }
  
                  ClassLoader cl = getProject().createClassLoader(oldCl, p);
                  Thread.currentThread().setContextClassLoader(cl);
              }
  
              final List<Descriptor> data = descriptors.getData();
              for (Descriptor d : data) {
                  d.applyNamespaces();
              }
  
              List<Javadoc> javadoc = null;
              if (javadocs != null) {
                  javadoc = javadocs.getData();
              }
  
              final MetadataParser metadataParser = new MetadataParser();
              metadataParser.parse(path, data, javadoc, verbose);
          } catch (Throwable t) {
              throw new BuildException(t.getMessage(), t);
          } finally {
              Thread.currentThread().setContextClassLoader(oldCl);
          }
      }
docs: Execute Ant task
  
  @throws BuildException
  If an error occurs