From continuum-commits-return-3559-apmail-maven-continuum-commits-archive=maven.apache.org@maven.apache.org Mon Oct 15 20:06:39 2007 Return-Path: Delivered-To: apmail-maven-continuum-commits-archive@www.apache.org Received: (qmail 79476 invoked from network); 15 Oct 2007 20:06:39 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 Oct 2007 20:06:39 -0000 Received: (qmail 14305 invoked by uid 500); 15 Oct 2007 20:06:26 -0000 Delivered-To: apmail-maven-continuum-commits-archive@maven.apache.org Received: (qmail 14279 invoked by uid 500); 15 Oct 2007 20:06:26 -0000 Mailing-List: contact continuum-commits-help@maven.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: continuum-dev@maven.apache.org Delivered-To: mailing list continuum-commits@maven.apache.org Received: (qmail 14266 invoked by uid 99); 15 Oct 2007 20:06:26 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 15 Oct 2007 13:06:26 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 15 Oct 2007 20:06:38 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id D73941A9832; Mon, 15 Oct 2007 13:06:17 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r584884 - in /maven/continuum/trunk/continuum-core/src: main/java/org/apache/maven/continuum/ main/java/org/apache/maven/continuum/execution/maven/m2/ main/java/org/apache/maven/continuum/utils/ test/java/org/apache/maven/continuum/utils/ Date: Mon, 15 Oct 2007 20:06:17 -0000 To: continuum-commits@maven.apache.org From: evenisse@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071015200617.D73941A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: evenisse Date: Mon Oct 15 13:06:16 2007 New Revision: 584884 URL: http://svn.apache.org/viewvc?rev=584884&view=rev Log: Add plugins, reports plugins and extensions as continuum dependencies to resolve correctly the projects build order Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/utils/ProjectSorterTest.java Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java?rev=584884&r1=584883&r2=584884&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/DefaultContinuum.java Mon Oct 15 13:06:16 2007 @@ -1324,7 +1324,7 @@ return new ArrayList(); } - return ProjectSorter.getSortedProjects( projects ); + return ProjectSorter.getSortedProjects( projects, getLogger() ); } // ---------------------------------------------------------------------- Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java?rev=584884&r1=584883&r2=584884&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/execution/maven/m2/DefaultMavenBuilderHelper.java Mon Oct 15 13:06:16 2007 @@ -31,9 +31,12 @@ import org.apache.maven.continuum.project.builder.ContinuumProjectBuildingResult; import org.apache.maven.model.Dependency; import org.apache.maven.model.Developer; +import org.apache.maven.model.Extension; import org.apache.maven.model.Model; import org.apache.maven.model.Notifier; +import org.apache.maven.model.Plugin; import org.apache.maven.model.Profile; +import org.apache.maven.model.ReportPlugin; import org.apache.maven.model.Scm; import org.apache.maven.model.io.xpp3.MavenXpp3Writer; import org.apache.maven.profiles.DefaultProfileManager; @@ -260,6 +263,51 @@ for ( Iterator i = mavenProject.getDependencies().iterator(); i.hasNext(); ) { Dependency dependency = (Dependency) i.next(); + + ProjectDependency cd = new ProjectDependency(); + + cd.setGroupId( dependency.getGroupId() ); + + cd.setArtifactId( dependency.getArtifactId() ); + + cd.setVersion( dependency.getVersion() ); + + dependencies.add( cd ); + } + + for ( Iterator i = mavenProject.getBuildPlugins().iterator(); i.hasNext(); ) + { + Plugin dependency = (Plugin) i.next(); + + ProjectDependency cd = new ProjectDependency(); + + cd.setGroupId( dependency.getGroupId() ); + + cd.setArtifactId( dependency.getArtifactId() ); + + cd.setVersion( dependency.getVersion() ); + + dependencies.add( cd ); + } + + for ( Iterator i = mavenProject.getReportPlugins().iterator(); i.hasNext(); ) + { + ReportPlugin dependency = (ReportPlugin) i.next(); + + ProjectDependency cd = new ProjectDependency(); + + cd.setGroupId( dependency.getGroupId() ); + + cd.setArtifactId( dependency.getArtifactId() ); + + cd.setVersion( dependency.getVersion() ); + + dependencies.add( cd ); + } + + for ( Iterator i = mavenProject.getBuildExtensions().iterator(); i.hasNext(); ) + { + Extension dependency = (Extension) i.next(); ProjectDependency cd = new ProjectDependency(); Modified: maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java?rev=584884&r1=584883&r2=584884&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java (original) +++ maven/continuum/trunk/continuum-core/src/main/java/org/apache/maven/continuum/utils/ProjectSorter.java Mon Oct 15 13:06:16 2007 @@ -21,6 +21,7 @@ import org.apache.maven.continuum.model.project.Project; import org.apache.maven.continuum.model.project.ProjectDependency; +import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.util.dag.CycleDetectedException; import org.codehaus.plexus.util.dag.DAG; import org.codehaus.plexus.util.dag.TopologicalSorter; @@ -55,7 +56,7 @@ *
  • do a topo sort on the graph that remains.
  • * */ - public static List getSortedProjects( Collection projects ) + public static List getSortedProjects( Collection projects, Logger logger ) throws CycleDetectedException { DAG dag = new DAG(); @@ -66,6 +67,11 @@ { String id = getProjectId( project ); + if ( dag.getVertex( id ) != null ) + { + logger.warn( "Project '" + id + "' is duplicated in the reactor" ); + } + dag.addVertex( id ); projectMap.put( id, project ); @@ -75,12 +81,12 @@ { String id = getProjectId( project ); - // Parent - ProjectDependency parent = project.getParent(); - - if ( parent != null ) + // Dependencies + for ( Object o : project.getDependencies() ) { - String dependencyId = getDependencyId( parent ); + ProjectDependency dependency = (ProjectDependency) o; + + String dependencyId = getDependencyId( dependency ); if ( dag.getVertex( dependencyId ) != null ) { @@ -88,16 +94,21 @@ } } - // Dependencies - for ( Object o : project.getDependencies() ) - { - ProjectDependency dependency = (ProjectDependency) o; + // Parent + ProjectDependency parent = project.getParent(); - String dependencyId = getDependencyId( dependency ); + if ( parent != null ) + { + String parentId = getDependencyId( parent ); - if ( dag.getVertex( dependencyId ) != null ) + if ( dag.getVertex( parentId ) != null ) { - dag.addEdge( id, dependencyId ); + // Parent is added as an edge, but must not cause a cycle - so we remove any other edges it has in conflict + if ( dag.hasEdge( parentId, id ) ) + { + dag.removeEdge( parentId, id ); + } + dag.addEdge( id, parentId ); } } } Modified: maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/utils/ProjectSorterTest.java URL: http://svn.apache.org/viewvc/maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/utils/ProjectSorterTest.java?rev=584884&r1=584883&r2=584884&view=diff ============================================================================== --- maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/utils/ProjectSorterTest.java (original) +++ maven/continuum/trunk/continuum-core/src/test/java/org/apache/maven/continuum/utils/ProjectSorterTest.java Mon Oct 15 13:06:16 2007 @@ -57,7 +57,7 @@ c2.setDependencies( Collections.singletonList( generateProjectDependency( c1 ) ) ); list.add( c2 ); - List sortedList = ProjectSorter.getSortedProjects( list ); + List sortedList = ProjectSorter.getSortedProjects( list, null ); assertNotNull( sortedList ); @@ -92,7 +92,7 @@ c2.setDependencies( Collections.singletonList( generateProjectDependency( c1 ) ) ); list.add( c2 ); - List sortedList = ProjectSorter.getSortedProjects( list ); + List sortedList = ProjectSorter.getSortedProjects( list, null ); assertNotNull( sortedList );