Author: jdcasey Date: Sun Sep 25 08:03:59 2005 New Revision: 291422 URL: http://svn.apache.org/viewcvs?rev=291422&view=rev Log: Adding validation of @requiresProject and @requiresOnline to PluginManager.executeMojo(..), in order to centrally block mojos from executing under the wrong conditions.
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=291422&r1=291421&r2=291422&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Sun Sep 25 08:03:59 2005 @@ -153,6 +153,7 @@ ProfileManager globalProfileManager = request.getGlobalProfileManager(); + boolean foundProjects = true; try { loadSettingsProfiles( globalProfileManager, request.getSettings() ); @@ -169,6 +170,8 @@ { MavenProject superProject = projectBuilder.buildStandaloneSuperProject( request.getLocalRepository() ); projects.add( superProject ); + + foundProjects = false; } rm = new ReactorManager( projects ); @@ -204,6 +207,8 @@ try { MavenSession session = createSession( request, rm ); + + session.setUsingPOMsFromFilesystem( foundProjects ); try { Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java?rev=291422&r1=291421&r2=291422&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java Sun Sep 25 08:03:59 2005 @@ -46,6 +46,8 @@ private final String executionRootDir; + private boolean usingPOMsFromFilesystem; + public MavenSession( PlexusContainer container, Settings settings, ArtifactRepository localRepository, EventDispatcher eventDispatcher, ReactorManager rpm, List goals, String executionRootDir ) { @@ -125,5 +127,15 @@ public String getExecutionRootDirectory() { return executionRootDir; + } + + public void setUsingPOMsFromFilesystem( boolean usingPOMsFromFilesystem ) + { + this.usingPOMsFromFilesystem = usingPOMsFromFilesystem; + } + + public boolean isUsingPOMsFromFilesystem() + { + return usingPOMsFromFilesystem; } } Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=291422&r1=291421&r2=291422&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Sun Sep 25 08:03:59 2005 @@ -310,6 +310,19 @@ throws ArtifactResolutionException, PluginManagerException, MojoExecutionException { MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor(); + + // NOTE: I'm putting these checks in here, since this is the central point of access for + // anything that wants to execute a mojo. + if( mojoDescriptor.isProjectRequired() && !session.isUsingPOMsFromFilesystem() ) + { + throw new MojoExecutionException( "Cannot execute mojo: " + mojoDescriptor.getGoal() + ". It requires a project, but the build is not using one." ); + } + + if ( mojoDescriptor.isOnlineRequired() && session.getSettings().isOffline() ) + { + // TODO: Should we error out, or simply warn and skip?? + throw new MojoExecutionException( "Mojo: " + mojoDescriptor.getGoal() + " requires online mode for execution. Maven is currently offline." ); + } if ( mojoDescriptor.isDependencyResolutionRequired() != null ) { --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]