docs: @Override
      public void execute() throws BuildException {
  
          if (skip) {
              return;
          }
  
          if (source == null) {
              log("source attribute is required but was not set");
              return;
          }
  
          // attempt to parse the url
          URL sourceURL;
          try {
              sourceURL = URLUtil.parseURL(source);
          } catch (IllegalArgumentException e) {
              log(String.format("Invalid schema source provided: %s", source));
              return;
          }
  
          // if url is a file, ensure it exists
          if (URLUtil.parseProtocol(sourceURL.toString()) == URLProtocol.FILE) {
              File sourceFile = new File(sourceURL.getFile());
              if (!sourceFile.exists()) {
                  log(sourceFile.getAbsolutePath() + " cannot be found");
                  return;
              }
          }
  
          if (targetDirectory == null) {
              log("targetDirectory attribute is required but was not set");
              return;
          }
  
          ClassLoader extendedClassloader = buildExtendedClassloader();
          Thread.currentThread().setContextClassLoader(extendedClassloader);
  
          try {
              Jsonschema2Pojo.generate(this);
          } catch (IOException e) {
              throw new BuildException("Error generating classes from JSON Schema file(s) " + source, e);
          }
      }