List of usage examples for org.apache.maven.project MavenProject getFile
public File getFile()
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; }