public Map scan()

in maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/scanner/DefaultMojoAnnotationsScanner.java [89:124]


    public Map<String, MojoAnnotatedClass> scan(MojoAnnotationsScannerRequest request) throws ExtractionException {
        Map<String, MojoAnnotatedClass> mojoAnnotatedClasses = new HashMap<>();

        try {
            String mavenApiVersion = null;
            for (Artifact dependency : request.getDependencies()) {
                scan(mojoAnnotatedClasses, dependency.getFile(), request.getIncludePatterns(), dependency, true);
                if (request.getMavenApiVersion() == null
                        && dependency.getGroupId().equals("org.apache.maven")
                        && (dependency.getArtifactId().equals("maven-plugin-api")
                                || dependency.getArtifactId().equals("maven-api-core"))) {
                    String version = dependency.getVersion();
                    if (mavenApiVersion != null && !Objects.equals(version, mavenApiVersion)) {
                        throw new UnsupportedOperationException("Mixing Maven 3 and Maven 4 plugins is not supported."
                                + " Fix your dependencies so that you depend either on maven-plugin-api for a Maven 3 plugin,"
                                + " or maven-api-core for a Maven 4 plugin.");
                    }
                    mavenApiVersion = version;
                }
            }
            request.setMavenApiVersion(mavenApiVersion);

            for (File classDirectory : request.getClassesDirectories()) {
                scan(
                        mojoAnnotatedClasses,
                        classDirectory,
                        request.getIncludePatterns(),
                        request.getProject().getArtifact(),
                        false);
            }
        } catch (IOException e) {
            throw new ExtractionException(e.getMessage(), e);
        }

        return mojoAnnotatedClasses;
    }