Example usage for org.apache.maven.model.building ModelBuildingRequest getValidationLevel

List of usage examples for org.apache.maven.model.building ModelBuildingRequest getValidationLevel

Introduction

In this page you can find the example usage for org.apache.maven.model.building ModelBuildingRequest getValidationLevel.

Prototype

int getValidationLevel();

Source Link

Document

Gets the level of validation to perform on processed models.

Usage

From source file:com.doublefx.maven.utils.flexmojos.mavenValidator.FlexMojosCompatibleModelValidator.java

License:Apache License

@Override
public void validateEffectiveModel(Model model, ModelBuildingRequest request, ModelProblemCollector problems) {
    validateStringNotEmpty("modelVersion", problems, Severity.ERROR, model.getModelVersion(), model);

    validateId("groupId", problems, model.getGroupId(), model);

    validateId("artifactId", problems, model.getArtifactId(), model);

    validateStringNotEmpty("packaging", problems, Severity.ERROR, model.getPackaging(), model);

    if (!model.getModules().isEmpty()) {
        if (!"pom".equals(model.getPackaging())) {
            addViolation(problems, Severity.ERROR, "packaging", null, "with value '" + model.getPackaging()
                    + "' is invalid. Aggregator projects " + "require 'pom' as packaging.", model);
        }/*from w ww . j  av a2 s. c om*/

        for (int i = 0, n = model.getModules().size(); i < n; i++) {
            String module = model.getModules().get(i);
            if (StringUtils.isBlank(module)) {
                addViolation(problems, Severity.WARNING, "modules.module[" + i + "]", null,
                        "has been specified without a path to the project directory.",
                        model.getLocation("modules"));
            }
        }
    }

    validateStringNotEmpty("version", problems, Severity.ERROR, model.getVersion(), model);

    Severity errOn30 = getSeverity(request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0);

    validateEffectiveDependencies(problems, model.getDependencies(), false, request);

    DependencyManagement mgmt = model.getDependencyManagement();
    if (mgmt != null) {
        validateEffectiveDependencies(problems, mgmt.getDependencies(), true, request);
    }

    if (request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0) {
        Set<String> modules = new HashSet<String>();
        for (int i = 0, n = model.getModules().size(); i < n; i++) {
            String module = model.getModules().get(i);
            if (!modules.add(module)) {
                addViolation(problems, Severity.ERROR, "modules.module[" + i + "]", null,
                        "specifies duplicate child module " + module, model.getLocation("modules"));
            }
        }

        Severity errOn31 = getSeverity(request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_1);

        validateBannedCharacters("version", problems, errOn31, model.getVersion(), null, model,
                ILLEGAL_VERSION_CHARS);

        Build build = model.getBuild();
        if (build != null) {
            for (Plugin p : build.getPlugins()) {
                validateStringNotEmpty("build.plugins.plugin.artifactId", problems, Severity.ERROR,
                        p.getArtifactId(), p);

                validateStringNotEmpty("build.plugins.plugin.groupId", problems, Severity.ERROR, p.getGroupId(),
                        p);

                validatePluginVersion("build.plugins.plugin.version", problems, p.getVersion(), p.getKey(), p,
                        request);

                validateBoolean("build.plugins.plugin.inherited", problems, errOn30, p.getInherited(),
                        p.getKey(), p);

                validateBoolean("build.plugins.plugin.extensions", problems, errOn30, p.getExtensions(),
                        p.getKey(), p);

                validateEffectivePluginDependencies(problems, p, request);
            }

            validateResources(problems, build.getResources(), "build.resources.resource", request);

            validateResources(problems, build.getTestResources(), "build.testResources.testResource", request);
        }

        Reporting reporting = model.getReporting();
        if (reporting != null) {
            for (ReportPlugin p : reporting.getPlugins()) {
                validateStringNotEmpty("reporting.plugins.plugin.artifactId", problems, Severity.ERROR,
                        p.getArtifactId(), p);

                validateStringNotEmpty("reporting.plugins.plugin.groupId", problems, Severity.ERROR,
                        p.getGroupId(), p);

                validateStringNotEmpty("reporting.plugins.plugin.version", problems, errOn31, p.getVersion(),
                        p.getKey(), p);
            }
        }

        for (Repository repository : model.getRepositories()) {
            validateRepository(problems, repository, "repositories.repository", request);
        }

        for (Repository repository : model.getPluginRepositories()) {
            validateRepository(problems, repository, "pluginRepositories.pluginRepository", request);
        }

        DistributionManagement distMgmt = model.getDistributionManagement();
        if (distMgmt != null) {
            if (distMgmt.getStatus() != null) {
                addViolation(problems, Severity.ERROR, "distributionManagement.status", null,
                        "must not be specified.", distMgmt);
            }

            validateRepository(problems, distMgmt.getRepository(), "distributionManagement.repository",
                    request);
            validateRepository(problems, distMgmt.getSnapshotRepository(),
                    "distributionManagement.snapshotRepository", request);
        }
    }
}

From source file:com.doublefx.maven.utils.flexmojos.mavenValidator.FlexMojosCompatibleModelValidator.java

License:Apache License

private void validateEffectiveDependencies(ModelProblemCollector problems, List<Dependency> dependencies,
        boolean management, ModelBuildingRequest request) {
    Severity errOn30 = getSeverity(request, ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_3_0);
    String prefix = management ? "dependencyManagement.dependencies.dependency." : "dependencies.dependency.";

    for (Dependency d : dependencies) {
        this.validateEffectiveDependency(problems, d, management, prefix, request);
        if (request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0) {
            this.validateBoolean(prefix + "optional", problems, errOn30, d.getOptional(), d.getManagementKey(),
                    d);//from  ww  w .j a va 2s .  co  m
            if (!management) {
                this.validateVersion(prefix + "version", problems, errOn30, d.getVersion(),
                        d.getManagementKey(), d);
                this.validateEnum(prefix + "scope", problems, Severity.WARNING, d.getScope(),
                        d.getManagementKey(), d, "merged", "external", "internal", "caching", "rsl", "theme",
                        "provided", "compile", "runtime", "test", "system");
            }
        }
    }

}

From source file:com.doublefx.maven.utils.flexmojos.mavenValidator.FlexMojosCompatibleModelValidator.java

License:Apache License

private void validateEffectiveDependency(ModelProblemCollector problems, Dependency d, boolean management,
        String prefix, ModelBuildingRequest request) {
    this.validateId(prefix + "artifactId", problems, Severity.ERROR, d.getArtifactId(), d.getManagementKey(),
            d);/*from ww w  .ja  va 2 s. c o  m*/
    this.validateId(prefix + "groupId", problems, Severity.ERROR, d.getGroupId(), d.getManagementKey(), d);
    if (!management) {
        this.validateStringNotEmpty(prefix + "type", problems, Severity.ERROR, d.getType(),
                d.getManagementKey(), d);
        this.validateStringNotEmpty(prefix + "version", problems, Severity.ERROR, d.getVersion(),
                d.getManagementKey(), d);
    }

    if ("system".equals(d.getScope())) {
        String systemPath = d.getSystemPath();
        if (StringUtils.isEmpty(systemPath)) {
            addViolation(problems, Severity.ERROR, prefix + "systemPath", d.getManagementKey(), "is missing.",
                    d);
        } else {
            File exclusion = new File(systemPath);
            if (!exclusion.isAbsolute()) {
                addViolation(problems, Severity.ERROR, prefix + "systemPath", d.getManagementKey(),
                        "must specify an absolute path but is " + systemPath, d);
            } else if (!exclusion.isFile()) {
                String msg = "refers to a non-existing file " + exclusion.getAbsolutePath();
                systemPath = systemPath.replace('/', File.separatorChar).replace('\\', File.separatorChar);
                String jdkHome = request.getSystemProperties().getProperty("java.home", "") + File.separator
                        + "..";
                if (systemPath.startsWith(jdkHome)) {
                    msg = msg + ". Please verify that you run Maven using a JDK and not just a JRE.";
                }

                addViolation(problems, Severity.WARNING, prefix + "systemPath", d.getManagementKey(), msg, d);
            }
        }
    } else if (StringUtils.isNotEmpty(d.getSystemPath())) {
        addViolation(problems, Severity.ERROR, prefix + "systemPath", d.getManagementKey(),
                "must be omitted. This field may only be specified for a dependency with system scope.", d);
    }

    if (request.getValidationLevel() >= ModelBuildingRequest.VALIDATION_LEVEL_MAVEN_2_0) {

        for (Exclusion exclusion1 : d.getExclusions()) {
            this.validateId(prefix + "exclusions.exclusion.groupId", problems, Severity.WARNING,
                    exclusion1.getGroupId(), d.getManagementKey(), exclusion1);
            this.validateId(prefix + "exclusions.exclusion.artifactId", problems, Severity.WARNING,
                    exclusion1.getArtifactId(), d.getManagementKey(), exclusion1);
        }
    }

}

From source file:com.doublefx.maven.utils.flexmojos.mavenValidator.FlexMojosCompatibleModelValidator.java

License:Apache License

private static Severity getSeverity(ModelBuildingRequest request, int errorThreshold) {
    return getSeverity(request.getValidationLevel(), errorThreshold);
}