diff options
Diffstat (limited to 'framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java')
-rw-r--r-- | framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java b/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java deleted file mode 100644 index 34fb323e..00000000 --- a/framework/src/maven/apache-maven-3.3.3/maven-core/src/main/java/org/apache/maven/lifecycle/internal/builder/BuilderCommon.java +++ /dev/null @@ -1,199 +0,0 @@ -package org.apache.maven.lifecycle.internal.builder; - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -import org.apache.maven.artifact.Artifact; -import org.apache.maven.execution.BuildFailure; -import org.apache.maven.execution.ExecutionEvent; -import org.apache.maven.execution.MavenExecutionRequest; -import org.apache.maven.execution.MavenSession; -import org.apache.maven.lifecycle.LifecycleExecutionException; -import org.apache.maven.lifecycle.LifecycleNotFoundException; -import org.apache.maven.lifecycle.LifecyclePhaseNotFoundException; -import org.apache.maven.lifecycle.MavenExecutionPlan; -import org.apache.maven.lifecycle.internal.ExecutionEventCatapult; -import org.apache.maven.lifecycle.internal.LifecycleDebugLogger; -import org.apache.maven.lifecycle.internal.LifecycleExecutionPlanCalculator; -import org.apache.maven.lifecycle.internal.ReactorContext; -import org.apache.maven.lifecycle.internal.TaskSegment; -import org.apache.maven.model.Plugin; -import org.apache.maven.plugin.InvalidPluginDescriptorException; -import org.apache.maven.plugin.MojoNotFoundException; -import org.apache.maven.plugin.PluginDescriptorParsingException; -import org.apache.maven.plugin.PluginNotFoundException; -import org.apache.maven.plugin.PluginResolutionException; -import org.apache.maven.plugin.descriptor.MojoDescriptor; -import org.apache.maven.plugin.prefix.NoPluginFoundForPrefixException; -import org.apache.maven.plugin.version.PluginVersionResolutionException; -import org.apache.maven.project.MavenProject; -import org.codehaus.plexus.classworlds.realm.ClassRealm; -import org.codehaus.plexus.component.annotations.Component; -import org.codehaus.plexus.component.annotations.Requirement; -import org.codehaus.plexus.logging.Logger; - -import java.util.Set; - -/** - * Common code that is shared by the LifecycleModuleBuilder and the LifeCycleWeaveBuilder - * - * @since 3.0 - * @author Kristian Rosenvold - * Builds one or more lifecycles for a full module - * NOTE: This class is not part of any public api and can be changed or deleted without prior notice. - */ -@Component( role = BuilderCommon.class ) -public class BuilderCommon -{ - @Requirement - private LifecycleDebugLogger lifecycleDebugLogger; - - @Requirement - private LifecycleExecutionPlanCalculator lifeCycleExecutionPlanCalculator; - - @Requirement - private ExecutionEventCatapult eventCatapult; - - @Requirement - private Logger logger; - - - public BuilderCommon() - { - } - - public BuilderCommon( LifecycleDebugLogger lifecycleDebugLogger, - LifecycleExecutionPlanCalculator lifeCycleExecutionPlanCalculator, Logger logger ) - { - this.lifecycleDebugLogger = lifecycleDebugLogger; - this.lifeCycleExecutionPlanCalculator = lifeCycleExecutionPlanCalculator; - this.logger = logger; - } - - public MavenExecutionPlan resolveBuildPlan( MavenSession session, MavenProject project, TaskSegment taskSegment, - Set<Artifact> projectArtifacts ) - throws PluginNotFoundException, PluginResolutionException, LifecyclePhaseNotFoundException, - PluginDescriptorParsingException, MojoNotFoundException, InvalidPluginDescriptorException, - NoPluginFoundForPrefixException, LifecycleNotFoundException, PluginVersionResolutionException, - LifecycleExecutionException - { - MavenExecutionPlan executionPlan = - lifeCycleExecutionPlanCalculator.calculateExecutionPlan( session, project, taskSegment.getTasks() ); - - lifecycleDebugLogger.debugProjectPlan( project, executionPlan ); - - if ( session.getRequest().getDegreeOfConcurrency() > 1 ) - { - final Set<Plugin> unsafePlugins = executionPlan.getNonThreadSafePlugins(); - if ( !unsafePlugins.isEmpty() && logger.isDebugEnabled() ) - { - logger.warn( "*****************************************************************" ); - logger.warn( "* Your build is requesting parallel execution, but project *" ); - logger.warn( "* contains the following plugin(s) that have goals not marked *" ); - logger.warn( "* as @threadSafe to support parallel building. *" ); - logger.warn( "* While this /may/ work fine, please look for plugin updates *" ); - logger.warn( "* and/or request plugins be made thread-safe. *" ); - logger.warn( "* If reporting an issue, report it against the plugin in *" ); - logger.warn( "* question, not against maven-core *" ); - logger.warn( "*****************************************************************" ); - if ( logger.isDebugEnabled() ) - { - final Set<MojoDescriptor> unsafeGoals = executionPlan.getNonThreadSafeMojos(); - logger.warn( "The following goals are not marked @threadSafe in " + project.getName() + ":" ); - for ( MojoDescriptor unsafeGoal : unsafeGoals ) - { - logger.warn( unsafeGoal.getId() ); - } - } - else - { - logger.warn( "The following plugins are not marked @threadSafe in " + project.getName() + ":" ); - for ( Plugin unsafePlugin : unsafePlugins ) - { - logger.warn( unsafePlugin.getId() ); - } - logger.warn( "Enable debug to see more precisely which goals are not marked @threadSafe." ); - } - logger.warn( "*****************************************************************" ); - } - } - - return executionPlan; - } - - public void handleBuildError( final ReactorContext buildContext, final MavenSession rootSession, - final MavenSession currentSession, final MavenProject mavenProject, Throwable t, - final long buildStartTime ) - { - // record the error and mark the project as failed - long buildEndTime = System.currentTimeMillis(); - buildContext.getResult().addException( t ); - buildContext.getResult().addBuildSummary( new BuildFailure( mavenProject, buildEndTime - buildStartTime, t ) ); - - // notify listeners about "soft" project build failures only - if ( t instanceof Exception && !( t instanceof RuntimeException ) ) - { - eventCatapult.fire( ExecutionEvent.Type.ProjectFailed, currentSession, null, (Exception) t ); - } - - // reactor failure modes - if ( t instanceof RuntimeException || !( t instanceof Exception ) ) - { - // fail fast on RuntimeExceptions, Errors and "other" Throwables - // assume these are system errors and further build is meaningless - buildContext.getReactorBuildStatus().halt(); - } - else if ( MavenExecutionRequest.REACTOR_FAIL_NEVER.equals( rootSession.getReactorFailureBehavior() ) ) - { - // continue the build - } - else if ( MavenExecutionRequest.REACTOR_FAIL_AT_END.equals( rootSession.getReactorFailureBehavior() ) ) - { - // continue the build but ban all projects that depend on the failed one - buildContext.getReactorBuildStatus().blackList( mavenProject ); - } - else if ( MavenExecutionRequest.REACTOR_FAIL_FAST.equals( rootSession.getReactorFailureBehavior() ) ) - { - buildContext.getReactorBuildStatus().halt(); - } - else - { - logger.error( "invalid reactor failure behavior " + rootSession.getReactorFailureBehavior() ); - buildContext.getReactorBuildStatus().halt(); - } - } - - public static void attachToThread( MavenProject currentProject ) - { - ClassRealm projectRealm = currentProject.getClassRealm(); - if ( projectRealm != null ) - { - Thread.currentThread().setContextClassLoader( projectRealm ); - } - } - - // Todo: I'm really wondering where this method belongs; smells like it should be on MavenProject, but for some - // reason it isn't ? This localization is kind-of a code smell. - - public static String getKey( MavenProject project ) - { - return project.getGroupId() + ':' + project.getArtifactId() + ':' + project.getVersion(); - } - -} |