Example usage for org.apache.maven.project MavenProject getFile

List of usage examples for org.apache.maven.project MavenProject getFile

Introduction

In this page you can find the example usage for org.apache.maven.project MavenProject getFile.

Prototype

public File getFile() 

Source Link

Usage

From source file:org.jboss.maven.plugins.qstools.checkers.LicenseChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    Node licenseURL = (Node) getxPath().evaluate("/project/licenses/license/url", doc, XPathConstants.NODE);
    if (licenseURL == null || !licenseURL.getTextContent().contains("apache")) {
        addViolation(project.getFile(), results, 0, "File doesn't the 'Apache License, Version 2.0' license");
    }//from   www  .  j a v a2s  .co m

}

From source file:org.jboss.maven.plugins.qstools.checkers.MavenApprovedRepositoriesChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    Rules rules = getConfigurationProvider().getQuickstartsRules(project.getGroupId());
    if (!rules.isCheckerIgnored(MavenCentralRepositoryChecker.class)) {
        this.setCheckerMessage("This checker was ignored because MavenCentralRepositoryChecker is active.");
    } else {// w w w  .ja va 2 s .  co m
        Node repositoriesNode = (Node) getxPath().evaluate("/project/repositories", doc, XPathConstants.NODE);
        // only valid for top-level projects
        if (!projectUtil.isSubProjec(project)) {
            String complement = "- Please, run mvn org.jboss.maven.plugins:qstools:" + Utils.getQStoolsVersion()
                    + ":repositories to fix it";
            if (repositoriesNode == null) {
                addViolation(project.getFile(), results, 0,
                        "pom.xml doesn't contain a <repository /> section.");
            } else {
                NodeList ids = (NodeList) getxPath().evaluate("/project/repositories/repository/id", doc,
                        XPathConstants.NODESET);
                Set<String> approvedIds = rules.getMavenApprovedRepositories().keySet();
                for (int x = 0; x < ids.getLength(); x++) {
                    String id = ids.item(x).getTextContent();
                    if (!approvedIds.contains(id)) {
                        int lineNumber = XMLUtil.getLineNumberFromNode(ids.item(x));
                        addViolation(project.getFile(), results, lineNumber, "The following id [" + id
                                + "] is not an approved JBoss Maven Repository Id." + complement);
                    }
                }
                NodeList urls = (NodeList) getxPath().evaluate("/project/repositories/repository/url", doc,
                        XPathConstants.NODESET);
                Collection<String> approvedUrlsRaw = rules.getMavenApprovedRepositories().values();
                Set<String> approvedUrls = new HashSet<String>();
                for (String rawValue : approvedUrlsRaw) {
                    approvedUrls.add(rawValue.split("[|]")[0]);
                }
                for (int x = 0; x < ids.getLength(); x++) {
                    String url = urls.item(x).getTextContent();
                    if (!approvedUrls.contains(url)) {
                        int lineNumber = XMLUtil.getLineNumberFromNode(urls.item(x));
                        addViolation(project.getFile(), results, lineNumber, "The following url [" + url
                                + "] is not an approved JBoss Maven Repository URL." + complement);
                    }
                }
            }
        }
    }
}

From source file:org.jboss.maven.plugins.qstools.checkers.MavenCentralRepositoryChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    for (Dependency dependency : project.getDependencies()) {
        Artifact dependencyArtifact = repositorySystem.createProjectArtifact(dependency.getGroupId(),
                dependency.getArtifactId(), dependency.getVersion());
        ArtifactResolutionRequest arr = new ArtifactResolutionRequest();

        List<ArtifactRepository> remoteRepositories = new ArrayList<ArtifactRepository>();
        remoteRepositories.add(repositorySystem.createDefaultRemoteRepository());

        arr.setArtifact(dependencyArtifact).setRemoteRepositories(remoteRepositories)
                .setLocalRepository(getMavenSession().getLocalRepository());
        ArtifactResolutionResult result = repositorySystem.resolve(arr);
        Node dependencyNode = (Node) getxPath().evaluate(
                "//artifactId[text() ='" + dependency.getArtifactId() + "']", doc, XPathConstants.NODE);
        int lineNumber = XMLUtil.getLineNumberFromNode(dependencyNode);
        if (!result.isSuccess()) {
            addViolation(project.getFile(), results, lineNumber,
                    dependency + " doesn't comes from Maven Central Repository");
        }/*from  w  w w . j  av  a 2  s.c  o m*/
    }
}

From source file:org.jboss.maven.plugins.qstools.checkers.MavenCompilerChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    String compilerSource = getConfigurationProvider().getQuickstartsRules(project.getGroupId())
            .getExpectedCompilerSource();
    String target = project.getProperties().getProperty("maven.compiler.target");
    String compiler = project.getProperties().getProperty("maven.compiler.source");
    if (target == null || compiler == null) {
        addViolation(project.getFile(), results, 1,
                "pom.xml should define <maven.compiler.source/> and <maven.compiler.target/> properties");
    } else if (!target.equals(compilerSource) || !compiler.equals(compilerSource)) {
        addViolation(project.getFile(), results, 1,
                "<maven.compiler.source/> and <maven.compiler.target/> should be set to " + compilerSource);
    }//from w  w w .  ja  v a 2  s  .c om
    Node compilerNode = (Node) getxPath().evaluate(
            "/project/build/plugins/plugin[artifactId='maven-compiler-plugin']", doc, XPathConstants.NODE);
    Node compilerConfigNode = (Node) getxPath().evaluate(
            "/project/build/plugins/plugin[artifactId='maven-compiler-plugin']/./configuration", doc,
            XPathConstants.NODE);
    int lineNumber = compilerConfigNode == null ? -1 : XMLUtil.getLineNumberFromNode(compilerConfigNode);
    if (compilerNode != null && compilerConfigNode == null) {
        addViolation(project.getFile(), results, lineNumber,
                "You should NOT declare 'maven-compile-plugin' without any configuration");
    } else if (compilerConfigNode != null) {
        NodeList configs = compilerConfigNode.getChildNodes();
        for (int i = 0; i < configs.getLength(); i++) {
            Node config = configs.item(i);
            if (config.getNodeName().equals("source") || config.getNodeName().equals("target")) {
                lineNumber = compilerConfigNode == null ? -1 : XMLUtil.getLineNumberFromNode(config);
                addViolation(project.getFile(), results, lineNumber,
                        "You should not define 'source' or 'target' for 'maven-compiler-plugin'");
            }
        }
    }
}

From source file:org.jboss.maven.plugins.qstools.checkers.ModuleDefinedChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    File rootDir = project.getBasedir();
    List<String> submodules = new ArrayList<String>();
    for (File f : rootDir.listFiles()) {
        if (f.isDirectory() && isProjectSubdir(f)) {
            submodules.add(f.getName());
        }//w w  w .  j a v  a2  s  . c o m
    }
    submodules.removeAll(
            getConfigurationProvider().getQuickstartsRules(project.getGroupId()).getIgnoredModules());
    for (String dir : submodules) {
        boolean contains = project.getModules().contains(dir);
        if (!contains) {
            //If doesn't contains, look in other profiles
            for (Profile profile : project.getModel().getProfiles()) {
                contains = profile.getModules().contains(dir);
                if (contains) {
                    break;
                }
            }
        }
        if (!contains) {
            String msg = "The following dir [%s] is not listed as one of project submodules";
            addViolation(project.getFile(), results, 0, String.format(msg, dir));
        }
    }
}

From source file:org.jboss.maven.plugins.qstools.checkers.PomElementOrderChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    List<String> pomElementsOrder = getConfigurationProvider().getQuickstartsRules(project.getGroupId())
            .getPomOrder();/*from   w  w w  .j  a  v  a  2s .  co m*/
    Map<String, Node> elementsFound = pomOrderUtil.getElementsOrder(project, doc, pomElementsOrder);

    // Compare found elements order
    String previousElement = null;
    for (String element : elementsFound.keySet()) {
        int lineNumber = XMLUtil.getLineNumberFromNode(elementsFound.get(element));
        if (previousElement != null) {
            int previousElementLineNumber = XMLUtil.getLineNumberFromNode(elementsFound.get(previousElement));
            if (lineNumber < previousElementLineNumber) {
                String msg = "Element [%s] is not in the correct order: " + pomElementsOrder
                        + ". It shoud come after [%s] on line %s";
                addViolation(project.getFile(), results, lineNumber,
                        String.format(msg, element, previousElement, previousElementLineNumber));
            }
        }
        previousElement = element;
    }
}

From source file:org.jboss.maven.plugins.qstools.checkers.PomNameChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    Rules rules = getConfigurationProvider().getQuickstartsRules(project.getGroupId());
    String pattern = pomNameUtil.getExpectedPattern(project, rules);
    if (!pattern.equals(project.getName())) {
        Node nameNode = (Node) getxPath().evaluate("/project/name", doc, XPathConstants.NODE);
        int lineNumber = XMLUtil.getLineNumberFromNode(nameNode);
        String msg = "Project uses name [%s] but should use the define name: %s";
        addViolation(project.getFile(), results, lineNumber, String.format(msg, project.getName(), pattern));
    }//ww w . j  av  a2s .  c o m

}

From source file:org.jboss.maven.plugins.qstools.checkers.PropertiesNameChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    Properties recommendedPropertiesNames = getConfigurationProvider().getQuickstartsRules(project.getGroupId())
            .getPropertiesNames();/* www.j  av  a2 s.c o m*/
    NodeList dependencies = (NodeList) getxPath().evaluate("//dependencies/dependency| //plugins/plugin ", doc,
            XPathConstants.NODESET);
    // Iterate over all Declared Dependencies
    for (int x = 0; x < dependencies.getLength(); x++) {
        Node dependency = dependencies.item(x);
        MavenDependency mavenDependency = getDependencyProvider().getDependencyFromNode(project, dependency);
        String groupId = mavenDependency.getGroupId();
        String artifactId = mavenDependency.getArtifactId();
        String version = mavenDependency.getDeclaredVersion() == null ? null
                : mavenDependency.getDeclaredVersion().replaceAll("[${}]", "");
        String groupArtifactId = groupId + "|" + artifactId;

        if (groupId != null && artifactId != null && version != null // If the dependency has a GAV
        // that we manage
                && (recommendedPropertiesNames.containsKey(groupArtifactId)
                        || recommendedPropertiesNames.containsKey(groupId))) {
            String recommendedNameGA = (String) recommendedPropertiesNames.get(groupArtifactId);
            String recommendedNameG = (String) recommendedPropertiesNames.get(groupId);
            boolean wrongVersionName = false;
            if (recommendedNameGA != null && !recommendedNameGA.equals(version)) {
                wrongVersionName = true;
            }
            // Just check GroupId only if don't find GroupId+ArtifactId
            if (recommendedNameGA == null && recommendedNameG != null && !recommendedNameG.equals(version)) {
                wrongVersionName = true;
            }
            if (wrongVersionName) {
                int lineNumber = XMLUtil.getLineNumberFromNode(dependency);
                String msg = "Version for [%s:%s:%s] isn't using the recommended property name: %s";
                // GroupId + ArtifacIt has precedence
                String recommendedName = recommendedNameGA != null ? recommendedNameGA : recommendedNameG;
                addViolation(project.getFile(), results, lineNumber, String.format(msg, groupId, artifactId,
                        mavenDependency.getDeclaredVersion(), recommendedName));
            }
        }
    }
}

From source file:org.jboss.maven.plugins.qstools.checkers.RepositoryDeclarationChecker.java

License:Apache License

@Override
public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results)
        throws Exception {
    Node repositoriesNode = (Node) getxPath().evaluate("//project/repositories", doc, XPathConstants.NODE);
    if (repositoriesNode != null) {
        int lineNumber = XMLUtil.getLineNumberFromNode(repositoriesNode);
        addViolation(project.getFile(), results, lineNumber,
                ("You should NOT declare <repositories/> on your pom.xml"));
    }//from   w  ww. j av a 2  s  . co  m
}

From source file:org.jboss.maven.plugins.qstools.checkers.SamePropertyValueChecker.java

License:Apache License

@Override
public Map<String, List<Violation>> check(MavenProject project, MavenSession mavenSession,
        List<MavenProject> reactorProjects, Log log) throws QSToolsException {
    Map<String, List<Violation>> results = new TreeMap<String, List<Violation>>();
    Rules rules = configurationProvider.getQuickstartsRules(project.getGroupId());
    try {/*from w  ww . j  a  v a  2s  . co m*/
        if (rules.isCheckerIgnored(this.getClass())) {
            checkerMessage = "This checker is ignored for this groupId in config file.";
        } else {
            // iterate over all reactor projects to iterate on all declared properties
            for (MavenProject mavenProject : reactorProjects) {
                Document doc = PositionalXMLReader.readXML(new FileInputStream(mavenProject.getFile()));
                NodeList propertiesNodes = (NodeList) xPath.evaluate("/project/properties/*", doc,
                        XPathConstants.NODESET);
                // find all declared properties
                for (int x = 0; x < propertiesNodes.getLength(); x++) {
                    Node property = propertiesNodes.item(x);
                    String propertyName = property.getNodeName();
                    String propertyValue = property.getTextContent();

                    // skip ignored property
                    if (rules.getIgnoredDifferentValuesProperties().contains(propertyName)) {
                        continue;
                    }

                    if (projectProperties.get(propertyName) == null) {
                        projectProperties.put(propertyName, propertyValue);
                    } else if (projectProperties.get(propertyName) != null
                            && !projectProperties.get(propertyName).equals(propertyValue)) {
                        // The property was used but with an different value
                        int lineNumber = (Integer) property
                                .getUserData(PositionalXMLReader.BEGIN_LINE_NUMBER_KEY_NAME);
                        String rootDirectory = (mavenSession.getExecutionRootDirectory() + File.separator)
                                .replace("\\", "\\\\");
                        String fileAsString = mavenProject.getFile().getAbsolutePath().replace(rootDirectory,
                                "");
                        if (results.get(fileAsString) == null) {
                            results.put(fileAsString, new ArrayList<Violation>());
                        }
                        String msg = "Property [%s] was declared with a value [%s] that differ from previous value [%s]";
                        results.get(fileAsString).add(new Violation(getClass(), lineNumber, String.format(msg,
                                propertyName, propertyValue, projectProperties.get(propertyName))));
                        violationsQtd++;
                    }
                }
            }
            if (getCheckerMessage() != null) {
                log.info("--> Checker Message: " + getCheckerMessage());
            }
            if (violationsQtd > 0) {
                log.info("There are " + violationsQtd + " checkers violations");
            }
        }

    } catch (Exception e) {
        throw new QSToolsException(e);
    }
    return results;
}