private MavenPluginPaths findPluginPaths(final PluginType pluginType) throws PluginSourceNotMatchException {
        final MavenArtifactFinder mavenArtifactFinder;
        try {
            mavenArtifactFinder = MavenArtifactFinder.create(this.getLocalMavenRepository());
        } catch (final FileNotFoundException ex) {
            throw new PluginSourceNotMatchException(ex);
        }

        if (pluginType.getSourceType() == PluginSource.Type.DEFAULT) {
            final MavenPluginType nonDefaultMavenPluginType = MavenPluginType.createFromDefaultPluginType(
                    "plugins.", this.category, (DefaultPluginType) pluginType, this.embulkSystemProperties);
            if (nonDefaultMavenPluginType != null) {
                try {
                    return mavenArtifactFinder.findMavenPluginJarsWithDirectDependencies(nonDefaultMavenPluginType, this.category);
                } catch (final FileNotFoundException ex) {
                    logger.warn("Plugin {} specified in \"plugins.{}.{}\" was not found. Falling back to \"plugins.default.{}.{}\".",
                                nonDefaultMavenPluginType.getFullName(),
                                this.category,
                                pluginType.getName(),
                                this.category,
                                pluginType.getName(),
                                ex);
                    // Pass-through.
                }
            }

            final MavenPluginType defaultMavenPluginType = MavenPluginType.createFromDefaultPluginType(
                    "plugins.default.", this.category, (DefaultPluginType) pluginType, this.embulkSystemProperties);
            if (defaultMavenPluginType != null) {
                try {
                    return mavenArtifactFinder.findMavenPluginJarsWithDirectDependencies(defaultMavenPluginType, this.category);
                } catch (final FileNotFoundException ex) {
                    logger.warn("Plugin {} specified in \"plugins.default.{}.{}\" was not found.",
                                defaultMavenPluginType.getFullName(),
                                this.category,
                                pluginType.getName(),
                                ex);
                    throw new PluginSourceNotMatchException(ex);
                }
            }
        } else if (pluginType.getSourceType() == PluginSource.Type.MAVEN) {
            final MavenPluginType mavenPluginType = (MavenPluginType) pluginType;
            try {
                return mavenArtifactFinder.findMavenPluginJarsWithDirectDependencies(mavenPluginType, this.category);
            } catch (final FileNotFoundException ex) {
                throw new PluginSourceNotMatchException(ex);
            }
        }
        throw new PluginSourceNotMatchException();
    }
Caches Maven-based plugin's loaded classes such as embulk-ruby's Embulk::PluginRegistry.

<p>See {@code /embulk-ruby/lib/embulk/plugin_registry.rb}.
embulk-core/src/main/java/org/embulk/plugin/maven/MavenPluginRegistry.java