You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by ke...@apache.org on 2005/09/07 17:00:41 UTC
svn commit: r279336 -
/maven/components/trunk/sandbox/maven-it-plugin/src/main/java/org/apache/maven/plugin/it/ForkMojo.java
Author: kenney
Date: Wed Sep 7 07:59:36 2005
New Revision: 279336
URL: http://svn.apache.org/viewcvs?rev=279336&view=rev
Log:
Building maven projects works; it runs all integration test projects,
and when one fails (FAIL_AT_END) the build of this project fails too.
Modified:
maven/components/trunk/sandbox/maven-it-plugin/src/main/java/org/apache/maven/plugin/it/ForkMojo.java
Modified: maven/components/trunk/sandbox/maven-it-plugin/src/main/java/org/apache/maven/plugin/it/ForkMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/sandbox/maven-it-plugin/src/main/java/org/apache/maven/plugin/it/ForkMojo.java?rev=279336&r1=279335&r2=279336&view=diff
==============================================================================
--- maven/components/trunk/sandbox/maven-it-plugin/src/main/java/org/apache/maven/plugin/it/ForkMojo.java (original)
+++ maven/components/trunk/sandbox/maven-it-plugin/src/main/java/org/apache/maven/plugin/it/ForkMojo.java Wed Sep 7 07:59:36 2005
@@ -18,14 +18,15 @@
import java.io.File;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
-import org.apache.maven.artifact.repository.DefaultArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.MavenExecutionResponse;
import org.apache.maven.execution.MavenSession;
+import org.apache.maven.execution.ReactorManager;
+import org.apache.maven.lifecycle.LifecycleExecutionException;
+import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.profiles.DefaultProfileManager;
@@ -34,6 +35,7 @@
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.settings.Settings;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.util.dag.CycleDetectedException;
/**
* @goal fork
@@ -46,6 +48,11 @@
extends AbstractMojo
{
/**
+ * @parameter expression="${component.org.apache.maven.lifecycle.LifecycleExecutor}"
+ */
+ private LifecycleExecutor lifecycleExecutor;
+
+ /**
* @parameter expression="${session}"
*/
private MavenSession session;
@@ -55,7 +62,6 @@
*/
private Settings settings;
-
/**
* @parameter expression="${project}"
*/
@@ -64,71 +70,103 @@
/**
* @parameter expression="${project.basedir}/src/it/"
*/
- private File projectsDir;
-
-
- private ArtifactRepository artifactRepo;
-
- private MavenProjectBuilder projectBuilder;
+ private File integrationTestsDirectory;
public void execute()
throws MojoExecutionException
{
- initComponents();
+ try
+ {
+ buildProjects();
+ }
+ catch ( CycleDetectedException e )
+ {
+ throw new MojoExecutionException( "Error building projects", e );
+ }
+ catch ( LifecycleExecutionException e )
+ {
+ throw new MojoExecutionException( "Error building projects", e );
+ }
+ }
- buildProjects( listITPoms() );
+ private void buildProjects()
+ throws CycleDetectedException, LifecycleExecutionException, MojoExecutionException
+ {
+ List projects = collectProjects();
+
+ ReactorManager rm = new ReactorManager( projects );
+
+ rm.setFailureBehavior( ReactorManager.FAIL_AT_END );
+
+ List goals = Collections.singletonList( "package" );
+
+ MavenSession forkedSession = new MavenSession(
+ session.getContainer(), session.getSettings(),
+ session.getLocalRepository(),
+ session.getEventDispatcher(),
+ rm, goals, integrationTestsDirectory.toString()
+ );
+
+ MavenExecutionResponse response = lifecycleExecutor.execute( forkedSession,
+ rm, forkedSession.getEventDispatcher()
+ );
+
+ if ( response.isExecutionFailure() )
+ {
+ throw new MojoExecutionException(
+ "Integration test failed" );
+ }
}
- private void initComponents()
+ private List collectProjects()
throws MojoExecutionException
{
+ List projects = new ArrayList();
+
+ MavenProjectBuilder projectBuilder;
+
try
{
- artifactRepo = createLocalRepository();
-
projectBuilder = (MavenProjectBuilder)
session.getContainer().lookup( MavenProjectBuilder.ROLE );
-
- if ( projectBuilder == null )
- throw new MojoExecutionException( "Lookup for MavenProjectBuilder returned null" );
}
- catch (ComponentLookupException e)
+ catch ( ComponentLookupException e )
{
- throw new MojoExecutionException( "Cannot get a MavenProjectBuilder", e);
+ throw new MojoExecutionException( "Cannot get a MavenProjectBuilder", e );
}
- }
- private void buildProjects( List poms )
- {
- getLog().info( "Building " + poms.size() + " integration test projects.." );
+ List poms = listITPoms();
+
for ( Iterator i = poms.iterator(); i.hasNext(); )
{
+ File pom = (File) i.next();
+
try
{
- MavenProject p = buildProject( (File) i.next() );
+ MavenProject p = projectBuilder.build(
+ pom, session.getLocalRepository(),
+ new DefaultProfileManager( session.getContainer() ) );
+
+ getLog().debug( "Adding project " + p.getId() );
+
+ projects.add( p );
- getLog().info("Building " + p.getId() );
}
catch (ProjectBuildingException e)
{
- getLog().error("Build Error", e);
+ throw new MojoExecutionException( "Error loading " + pom, e );
}
}
- }
- private MavenProject buildProject( File pom )
- throws ProjectBuildingException
- {
- return projectBuilder.build( pom, artifactRepo, new DefaultProfileManager(
- session.getContainer() ) );
+ return projects;
}
private List listITPoms()
{
List poms = new ArrayList();
- File [] children = projectsDir.listFiles();
+ File [] children = integrationTestsDirectory.listFiles();
for ( int i = 0; i < children.length; i++ )
{
@@ -140,53 +178,9 @@
{
poms.add( pomFile );
}
-
}
}
return poms;
}
-
- // Duplicate code from MavenCli, slightly modified.
-
- private ArtifactRepository createLocalRepository()
- throws ComponentLookupException
- {
- ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout)
- session.getContainer().lookup( ArtifactRepositoryLayout.ROLE, "default" );
-
- ArtifactRepositoryFactory artifactRepositoryFactory = (ArtifactRepositoryFactory)
- session.getContainer().lookup(
- ArtifactRepositoryFactory.ROLE );
-
- String url = "file://" + settings.getLocalRepository();
- ArtifactRepository localRepository = new DefaultArtifactRepository( "local", url, repositoryLayout );
-
- boolean snapshotPolicySet = false;
-
- if ( settings.isOffline() )
- {
- artifactRepositoryFactory.setGlobalEnable( false );
- snapshotPolicySet = true;
- }
-
- /* can't do this here.. :(
- if ( !snapshotPolicySet && commandLine.hasOption( CLIManager.UPDATE_SNAPSHOTS ) )
- {
- artifactRepositoryFactory.setGlobalUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );
- }
-
- if ( commandLine.hasOption( CLIManager.CHECKSUM_FAILURE_POLICY ) )
- {
- artifactRepositoryFactory.setGlobalChecksumPolicy( ArtifactRepositoryPolicy.CHECKSUM_POLICY_FAIL );
- }
- else if ( commandLine.hasOption( CLIManager.CHECKSUM_WARNING_POLICY ) )
- {
- artifactRepositoryFactory.setGlobalChecksumPolicy( ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN );
- }
- */
-
- return localRepository;
- }
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org