List of usage examples for org.apache.maven.project MavenProject getFile
public File getFile()
From source file:org.jboss.maven.plugins.qstools.checkers.SameVersionChecker.java
License:Apache License
@Override public Map<String, List<Violation>> check(MavenProject project, MavenSession mavenSession, List<MavenProject> reactorProjects, Log log) throws QSToolsException { try {/*from w w w . java2s . com*/ Document doc = PositionalXMLReader.readXML(new FileInputStream(project.getFile())); Node versionNode = (Node) getxPath().evaluate("/project/version", doc, XPathConstants.NODE); if (versionNode == null) { rootVersion = project.getVersion(); } else { rootVersion = versionNode.getTextContent(); } } catch (Exception e) { throw new QSToolsException(e); } return super.check(project, mavenSession, reactorProjects, log); }
From source file:org.jboss.maven.plugins.qstools.checkers.SameVersionChecker.java
License:Apache License
@Override public void checkProject(MavenProject project, Document doc, Map<String, List<Violation>> results) throws Exception { Node versionNode = (Node) getxPath().evaluate("/project/version", doc, XPathConstants.NODE); if (versionNode != null && !versionNode.getTextContent().equals(rootVersion)) { int lineNumber = XMLUtil.getLineNumberFromNode(versionNode); String msg = "This project uses a version [%s] different from the root version [%s]"; addViolation(project.getFile(), results, lineNumber, String.format(msg, versionNode.getTextContent(), rootVersion)); }//from w w w . j a v a 2 s .co m }
From source file:org.jboss.maven.plugins.qstools.common.ArtifactIdNameUtil.java
License:Apache License
public List<PomInformation> findAllIncorrectArtifactIdNames(List<MavenProject> reactorProjects, Rules rules) throws Exception { List<PomInformation> incorrectNames = new ArrayList<PomInformation>(); try {/* w w w. j a v a 2 s. c om*/ File rootDirOfQuickstarts = getRootDirOfQuickstarts(reactorProjects.get(0)); String artifactIdPrefix = rules.getArtifactIdPrefix(); for (MavenProject subProject : reactorProjects) { Document doc = PositionalXMLReader.readXML(new FileInputStream(subProject.getFile())); String expectedArtifactId = createArtifactId(artifactIdPrefix, rootDirOfQuickstarts, subProject.getBasedir()); Node actualArtifactId = ((Node) xPath.evaluate("/project/artifactId", doc, XPathConstants.NODE)); if (!expectedArtifactId.equals(actualArtifactId.getTextContent())) { int lineNumber = getLineNumberFromNode(actualArtifactId); incorrectNames.add(new PomInformation(subProject, lineNumber, expectedArtifactId, actualArtifactId.getTextContent())); } } return incorrectNames; } catch (Exception e) { throw new QSToolsException(e); } }
From source file:org.jboss.maven.plugins.qstools.common.UnusedPropertiesUtil.java
License:Apache License
public List<PomInformation> findUnusedProperties(List<MavenProject> reactorProjects, Rules rules) throws Exception { List<PomInformation> unusedPropertyInfo = new ArrayList<PomInformation>(); Map<String, List<PomInformation>> declaredProperties = new HashMap<String, List<PomInformation>>(); for (MavenProject mavenProject : reactorProjects) { Document doc = PositionalXMLReader.readXML(new FileInputStream(mavenProject.getFile())); NodeList propertiesNodes = (NodeList) xPath.evaluate("/project/properties/*", doc, XPathConstants.NODESET); NodeList allNodes = (NodeList) xPath.evaluate("//*", doc, XPathConstants.NODESET); // find all declared properties for (int x = 0; x < propertiesNodes.getLength(); x++) { Node property = propertiesNodes.item(x); String propertyName = property.getNodeName(); int lineNumber = (Integer) property.getUserData(PositionalXMLReader.BEGIN_LINE_NUMBER_KEY_NAME); PomInformation pi = new PomInformation(mavenProject, lineNumber, property.getNodeName()); if (declaredProperties.get(propertyName) == null) { declaredProperties.put(propertyName, new ArrayList<PomInformation>()); }//w w w . ja v a2 s. c o m declaredProperties.get(propertyName).add(pi); } // find all uses for properties expression Pattern p = Pattern.compile("\\$\\{\\w+(.\\w+)*(-\\w+)*\\}"); for (int x = 0; x < allNodes.getLength(); x++) { Node node = allNodes.item(x); String nodeContent = node.getTextContent(); if (p.matcher(nodeContent).matches()) { String usedProperty = node.getTextContent().replaceAll("[${}]", ""); usedProperties.add(usedProperty); } } } // search if all declared properties have been used for (String declared : declaredProperties.keySet()) { if (!declared.startsWith("project") && // Escape project configuration !rules.getIgnoredUnusedProperties().contains(declared) && // Escape ignored properties !usedProperties.contains(declared)) { unusedPropertyInfo.addAll(declaredProperties.get(declared)); } } return unusedPropertyInfo; }
From source file:org.jboss.maven.plugins.qstools.fixers.ArtifactIdNameFixer.java
License:Apache License
@Override public void fix(MavenProject project, MavenSession mavenSession, List<MavenProject> reactorProjects, Log log) throws QSToolsException { try {/*from ww w.jav a 2 s. c o m*/ Rules rules = configurationProvider.getQuickstartsRules(project.getGroupId()); List<ArtifactIdNameUtil.PomInformation> pomsWithInvalidArtifactIds = artifactIdNameUtil .findAllIncorrectArtifactIdNames(reactorProjects, rules); // Update each incorrect artifactId for (ArtifactIdNameUtil.PomInformation pi : pomsWithInvalidArtifactIds) { Document doc = PositionalXMLReader.readXML(new FileInputStream(pi.getProject().getFile())); Node artifactIdNode = (Node) xPath.evaluate("/project/artifactId", doc, XPathConstants.NODE); artifactIdNode.setTextContent(pi.getExpectedArtifactId()); XMLUtil.writeXML(doc, pi.getProject().getFile()); } // Update all the parents, to use the changed artifactId for (MavenProject subProject : reactorProjects) { Document doc = PositionalXMLReader.readXML(new FileInputStream(subProject.getFile())); Node parentArtifactIdNode = (Node) xPath.evaluate("/project/parent/artifactId", doc, XPathConstants.NODE); if (parentArtifactIdNode != null && subProject.getParentFile() != null) { Document parentDoc = PositionalXMLReader .readXML(new FileInputStream(subProject.getParentFile())); Node artifactIdNode = (Node) xPath.evaluate("/project/artifactId", parentDoc, XPathConstants.NODE); if (!parentArtifactIdNode.getTextContent().equals(artifactIdNode.getTextContent())) { parentArtifactIdNode.setTextContent(artifactIdNode.getTextContent()); } } // Update each incorrect artifactId dependency for (ArtifactIdNameUtil.PomInformation pi : pomsWithInvalidArtifactIds) { // It can have more than one occurrence on the same file NodeList artfactIdNodes = (NodeList) xPath.evaluate( "//artifactId[text()='" + pi.getActualArtifactId() + "']", doc, XPathConstants.NODESET); for (int x = 0; x < artfactIdNodes.getLength(); x++) { Node artfactIdNode = artfactIdNodes.item(x); if (artfactIdNode != null) { artfactIdNode.setTextContent(pi.getExpectedArtifactId()); } } } XMLUtil.writeXML(doc, subProject.getFile()); } } catch (Exception e) { throw new QSToolsException(e); } }
From source file:org.jboss.maven.plugins.qstools.fixers.FinalNameFixer.java
License:Apache License
@Override public void fixProject(MavenProject project, Document doc) throws Exception { String packaging = project.getPackaging(); String expectedFinalName = getConfigurationProvider().getQuickstartsRules(project.getGroupId()) .getFinalNamePatterns().get(packaging); Node finalNameNode = (Node) getxPath().evaluate("//finalName", doc, XPathConstants.NODE); String declaredFinalName = finalNameNode == null ? project.getBuild().getFinalName() : finalNameNode.getTextContent(); if (expectedFinalName != null && !expectedFinalName.equals(declaredFinalName)) { Node buildNode = (Node) getxPath().evaluate("/project/build", doc, XPathConstants.NODE); if (buildNode == null) { buildNode = doc.createElement("build"); Node projectNode = (Node) getxPath().evaluate("/project", doc, XPathConstants.NODE); projectNode.appendChild(doc.createTextNode(" ")); projectNode.appendChild(buildNode); }/*w ww.j a v a 2 s. c o m*/ finalNameNode = (Node) getxPath().evaluate("/project/build/finalName", doc, XPathConstants.NODE); if (finalNameNode == null) { finalNameNode = doc.createElement("finalName"); buildNode.insertBefore(finalNameNode, buildNode.getFirstChild()); } finalNameNode.setTextContent(expectedFinalName); } XMLUtil.writeXML(doc, project.getFile()); }
From source file:org.jboss.maven.plugins.qstools.fixers.LicenseFixer.java
License:Apache License
@Override public void fixProject(MavenProject project, Document doc) throws Exception { Node licenseURL = (Node) getxPath().evaluate("/project/licenses/license/url", doc, XPathConstants.NODE); if (licenseURL == null || !licenseURL.getTextContent().contains("apache")) { Node licensesElement = (Node) getxPath().evaluate("/project/licenses", doc, XPathConstants.NODE); // Create <licenses/> if it doesn't exists if (licensesElement == null) { licensesElement = doc.createElement("licenses"); Element projectElement = (Element) getxPath().evaluate("/project", doc, XPathConstants.NODE); projectElement.appendChild(doc.createTextNode("\n\n ")); projectElement.appendChild(licensesElement); }//from w ww. j a v a2s .c o m Element license = doc.createElement("license"); Element name = doc.createElement("name"); name.setTextContent("Apache License, Version 2.0"); Element distribution = doc.createElement("distribution"); distribution.setTextContent("repo"); Element url = doc.createElement("url"); url.setTextContent("http://www.apache.org/licenses/LICENSE-2.0.html"); license.appendChild(name); license.appendChild(distribution); license.appendChild(url); licensesElement.appendChild(doc.createTextNode("\n ")); // LF + 8 spaces licensesElement.appendChild(license); } XMLUtil.writeXML(doc, project.getFile()); }
From source file:org.jboss.maven.plugins.qstools.fixers.MavenCompilerFixer.java
License:Apache License
@Override public void fixProject(MavenProject project, Document doc) throws Exception { String compilerSource = getConfigurationProvider().getQuickstartsRules(project.getGroupId()) .getExpectedCompilerSource(); ensurePropertiesElementExists(doc);//from ww w. j a v a 2 s . c om ensurePropertySet(doc, "maven.compiler.target", compilerSource); ensurePropertySet(doc, "maven.compiler.source", compilerSource); Node compilerNode = (Node) getxPath().evaluate("//plugin[artifactId='maven-compiler-plugin']", doc, XPathConstants.NODE); Node compilerConfigNode = (Node) getxPath() .evaluate("//plugin[artifactId='maven-compiler-plugin']/./configuration", doc, XPathConstants.NODE); if (compilerNode != null && compilerConfigNode == null) { XMLUtil.removePreviousWhiteSpace(compilerNode); compilerNode.getParentNode().removeChild(compilerNode); } else if (compilerConfigNode != null) { removeConfigIfPresent(compilerConfigNode, "target"); removeConfigIfPresent(compilerConfigNode, "source"); } // Get comment over the element Node commentNode = null; if (compilerNode != null && compilerNode.getPreviousSibling() != null && compilerNode.getPreviousSibling() != null && compilerNode.getPreviousSibling().getPreviousSibling().getNodeType() == Node.COMMENT_NODE) { commentNode = compilerNode.getPreviousSibling().getPreviousSibling(); } // Remove compiler plugin if it doesn't have any configuration if (compilerConfigNode != null && !XMLUtil.hasChildElements(compilerConfigNode)) { // If the element had a comment, remove it too. if (commentNode != null) { XMLUtil.removePreviousWhiteSpace(commentNode); commentNode.getParentNode().removeChild(commentNode); } XMLUtil.removePreviousWhiteSpace(compilerNode); compilerNode.getParentNode().removeChild(compilerNode); } XMLUtil.writeXML(doc, project.getFile()); }
From source file:org.jboss.maven.plugins.qstools.fixers.PomElementOrderFixer.java
License:Apache License
@Override public void fixProject(MavenProject project, Document doc) throws Exception { List<String> pomElementsOrder = getConfigurationProvider().getQuickstartsRules(project.getGroupId()) .getPomOrder();//from w w w .j a v a2 s. c om Map<String, Node> elementsFound = pomOrderUtil.getElementsOrder(project, doc, pomElementsOrder); List<String> elementsList = new ArrayList<String>(elementsFound.keySet()); for (String element : elementsList) { Node commentNode = null; Node elementNode = (Node) getxPath().evaluate("/project/" + element, doc, XPathConstants.NODE); // Get comment over the element if (elementNode.getPreviousSibling() != null && elementNode.getPreviousSibling().getNodeType() == Node.COMMENT_NODE) { commentNode = elementNode.getPreviousSibling(); } for (String anotherElement : elementsList) { if (elementsList.indexOf(element) < elementsList.indexOf(anotherElement)) { Node anotherElementNode = (Node) getxPath().evaluate("/project/" + anotherElement, doc, XPathConstants.NODE); XMLUtil.removePreviousWhiteSpace(anotherElementNode); anotherElementNode.getParentNode().insertBefore(elementNode, anotherElementNode); // If the element had a comment, move it too. if (commentNode != null) { XMLUtil.removePreviousWhiteSpace(commentNode); elementNode.getParentNode().insertBefore(commentNode, elementNode); } } } } XMLUtil.writeXML(doc, project.getFile()); doc = PositionalXMLReader.readXML(new FileInputStream(project.getFile())); for (String element : elementsList) { Node commentNode = null; Node elementNode = (Node) getxPath().evaluate("/project/" + element, doc, XPathConstants.NODE); if (elementNode.getChildNodes().getLength() > 1) { commentNode = null; // Get comment over the element if (elementNode.getPreviousSibling() != null && elementNode.getPreviousSibling().getPreviousSibling() != null && elementNode .getPreviousSibling().getPreviousSibling().getNodeType() == Node.COMMENT_NODE) { commentNode = elementNode.getPreviousSibling().getPreviousSibling(); XMLUtil.removePreviousWhiteSpace(commentNode); elementNode.getParentNode().insertBefore(doc.createTextNode("\n\n "), commentNode); } else { XMLUtil.removePreviousWhiteSpace(elementNode); elementNode.getParentNode().insertBefore(doc.createTextNode("\n\n "), elementNode); } } } XMLUtil.writeXML(doc, project.getFile()); }
From source file:org.jboss.maven.plugins.qstools.fixers.PomNameFixer.java
License:Apache License
@Override public void fixProject(MavenProject project, Document doc) 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); if (nameNode == null) { nameNode = doc.createElement("name"); Node projectNode = (Node) getxPath().evaluate("/project", doc, XPathConstants.NODE); projectNode.appendChild(doc.createTextNode(" ")); projectNode.appendChild(nameNode); }/* w ww. j a va 2 s .c o m*/ nameNode.setTextContent(pattern); XMLUtil.writeXML(doc, project.getFile()); } }