public void testProjectInheritance() throws Exception { File localRepo = getLocalRepositoryPath(); System.out.println("Local repository is at: " + localRepo.getAbsolutePath()); File pom0 = new File(localRepo, "p0/pom.xml"); File pom1 = new File(pom0.getParentFile(), "p1/pom.xml"); File pom2 = new File(pom1.getParentFile(), "p2/pom.xml"); File pom3 = new File(pom2.getParentFile(), "p3/pom.xml"); File pom4 = new File(pom3.getParentFile(), "p4/pom.xml"); File pom5 = new File(pom4.getParentFile(), "p5/pom.xml"); System.out.println("Location of project-4's POM: " + pom4.getPath()); // load everything... MavenProject project0 = getProject(pom0); MavenProject project1 = getProject(pom1); MavenProject project2 = getProject(pom2); MavenProject project3 = getProject(pom3); MavenProject project4 = getProject(pom4); MavenProject project5 = getProject(pom5); assertEquals("p4", project4.getName()); // ---------------------------------------------------------------------- // Value inherited from p3 // ---------------------------------------------------------------------- assertEquals("2000", project4.getInceptionYear()); // ---------------------------------------------------------------------- // Value taken from p2 // ---------------------------------------------------------------------- assertEquals("mailing-list", project4.getMailingLists().get(0).getName()); // ---------------------------------------------------------------------- // Value taken from p1 // ---------------------------------------------------------------------- assertEquals("scm-url/p2/p3/p4", project4.getScm().getUrl()); // ---------------------------------------------------------------------- // Value taken from p4 // ---------------------------------------------------------------------- assertEquals("Codehaus", project4.getOrganization().getName()); // ---------------------------------------------------------------------- // Value taken from super model // ---------------------------------------------------------------------- assertEquals("4.0.0", project4.getModelVersion()); Build build = project4.getBuild(); List plugins = build.getPlugins(); Map validPluginCounts = new HashMap(); String testPluginArtifactId = "maven-compiler-plugin"; // this is the plugin we're looking for. validPluginCounts.put(testPluginArtifactId, 0); // these are injected if -DperformRelease=true validPluginCounts.put("maven-deploy-plugin", 0); validPluginCounts.put("maven-javadoc-plugin", 0); validPluginCounts.put("maven-source-plugin", 0); Plugin testPlugin = null; for (Iterator it = plugins.iterator(); it.hasNext(); ) { Plugin plugin = (Plugin) it.next(); String pluginArtifactId = plugin.getArtifactId(); if (!validPluginCounts.containsKey(pluginArtifactId)) { fail("Illegal plugin found: " + pluginArtifactId); } else { if (pluginArtifactId.equals(testPluginArtifactId)) { testPlugin = plugin; } Integer count = (Integer) validPluginCounts.get(pluginArtifactId); if (count.intValue() > 0) { fail("Multiple copies of plugin: " + pluginArtifactId + " found in POM."); } else { count = count.intValue() + 1; validPluginCounts.put(pluginArtifactId, count); } } } List executions = testPlugin.getExecutions(); assertEquals(1, executions.size()); }
/** Create the generated part of the NOTICE file based on the resolved license data */ protected String generateNoticeLines( Map<String, String> resolvedLicenses, Map<String, Artifact> resolvedArtifacts) { final StringBuilder builder = new StringBuilder(); final MessageFormat messageFormat = getNoticeMessageFormat(); for (final Map.Entry<String, String> resolvedEntry : resolvedLicenses.entrySet()) { final Artifact artifact = resolvedArtifacts.get(resolvedEntry.getKey()); final MavenProject mavenProject = loadProject(artifact); String line = null; if (mavenProject != null) { String copyright = ""; if (mavenProject.getOrganization() != null && mavenProject.getOrganization().getName() != null && mavenProject.getInceptionYear() != null) { final MessageFormat copyrightMessageFormat = getCopyrightMessageFormat(); final Calendar calendar = Calendar.getInstance(); copyright = copyrightMessageFormat.format( new Object[] { mavenProject.getInceptionYear(), Integer.toString(calendar.get(Calendar.YEAR)), mavenProject.getOrganization().getName(), (mavenProject.getOrganization().getUrl() != null ? "(" + mavenProject.getOrganization().getUrl() + ")" : "") }); } line = messageFormat.format( new Object[] { resolvedEntry.getKey(), resolvedEntry.getValue(), (mavenProject.getGroupId() != null ? mavenProject.getGroupId() : ""), (mavenProject.getArtifactId() != null ? mavenProject.getArtifactId() : ""), (mavenProject.getVersion() != null ? mavenProject.getVersion() : ""), (mavenProject.getOrganization() != null ? (mavenProject.getOrganization().getName() != null ? mavenProject.getOrganization().getName() : "") : ""), (mavenProject.getOrganization() != null ? (mavenProject.getOrganization().getUrl() != null ? mavenProject.getOrganization().getUrl() : "") : ""), (copyright != null ? copyright : "") }); } else { line = messageFormat.format(new Object[] {resolvedEntry.getKey(), resolvedEntry.getValue()}); } builder.append(line).append(IOUtils.LINE_SEPARATOR); } return builder.toString(); }