code: @Override
      public PluginState startPlugin(String pluginId) {
          checkPluginId(pluginId);
  
          PluginWrapper pluginWrapper = getPlugin(pluginId);
          PluginDescriptor pluginDescriptor = pluginWrapper.getDescriptor();
          PluginState pluginState = pluginWrapper.getPluginState();
          if (PluginState.STARTED == pluginState) {
              log.debug("Already started plugin '{}'", getPluginLabel(pluginDescriptor));
              return PluginState.STARTED;
          }
  
          if (!resolvedPlugins.contains(pluginWrapper)) {
              log.warn("Cannot start an unresolved plugin '{}'", getPluginLabel(pluginDescriptor));
              return pluginState;
          }
  
          if (PluginState.DISABLED == pluginState) {
              // automatically enable plugin on manual plugin start
              if (!enablePlugin(pluginId)) {
                  return pluginState;
              }
          }
  
          for (PluginDependency dependency : pluginDescriptor.getDependencies()) {
              startPlugin(dependency.getPluginId());
          }
  
          try {
              log.info("Start plugin '{}'", getPluginLabel(pluginDescriptor));
              pluginWrapper.getPlugin().start();
              pluginWrapper.setPluginState(PluginState.STARTED);
              startedPlugins.add(pluginWrapper);
  
              firePluginStateEvent(new PluginStateEvent(this, pluginWrapper, pluginState));
          } catch (PluginException e) {
              log.error(e.getMessage(), e);
          }
  
          return pluginWrapper.getPluginState();
      }
docs: Start the specified plugin and its dependencies.