public List execute()

in maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java [190:225]


    public List<MojoDescriptor> execute(PluginToolsRequest request)
            throws ExtractionException, InvalidPluginDescriptorException {
        Map<String, MojoAnnotatedClass> mojoAnnotatedClasses = scanAnnotations(request);

        Optional<Integer> maxClassVersion = mojoAnnotatedClasses.values().stream()
                .map(MojoAnnotatedClass::getClassVersion)
                .max(new ClassVersionComparator());
        if (maxClassVersion.isPresent()) {
            String requiredJavaVersion = CLASS_VERSION_TO_JAVA_STRING.get(maxClassVersion.get());
            if (StringUtils.isBlank(request.getRequiredJavaVersion())
                    || new ComparableVersion(request.getRequiredJavaVersion())
                                    .compareTo(new ComparableVersion(requiredJavaVersion))
                            < 0) {
                request.setRequiredJavaVersion(requiredJavaVersion);
            }
        }
        JavaProjectBuilder builder = scanJavadoc(request, mojoAnnotatedClasses.values());
        Map<String, JavaClass> javaClassesMap = discoverClasses(builder);

        final JavadocLinkGenerator linkGenerator;
        if (request.getInternalJavadocBaseUrl() != null
                || (request.getExternalJavadocBaseUrls() != null
                        && !request.getExternalJavadocBaseUrls().isEmpty())) {
            linkGenerator = new JavadocLinkGenerator(
                    request.getInternalJavadocBaseUrl(),
                    request.getInternalJavadocVersion(),
                    request.getExternalJavadocBaseUrls(),
                    request.getSettings());
        } else {
            linkGenerator = null;
        }

        populateDataFromJavadoc(builder, mojoAnnotatedClasses, javaClassesMap, linkGenerator);

        return toMojoDescriptors(mojoAnnotatedClasses, request.getPluginDescriptor());
    }