Skip to content

Commit

Permalink
[FIXED JENKINS-8837] set a dummy mojo object in Maven3, and documented
Browse files Browse the repository at this point in the history
that this feature is now deprecated.

Originally-Committed-As: 4f3a285ab41a306520b1a1fe7ec50ca2c0821841
  • Loading branch information
kohsuke committed Aug 24, 2011
1 parent edc9316 commit 76d7f99
Show file tree
Hide file tree
Showing 2 changed files with 64 additions and 41 deletions.
78 changes: 39 additions & 39 deletions src/main/java/hudson/maven/Maven3Builder.java
Expand Up @@ -50,6 +50,7 @@
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ExecutionException;
import java.util.logging.Logger;

import org.apache.maven.cli.PrintStreamLogger;
import org.apache.maven.execution.AbstractExecutionListener;
Expand Down Expand Up @@ -278,13 +279,6 @@ private MavenBuildProxy2 getMavenBuildProxy2(MavenProject mavenProject) {
return null;
}

// FIXME really used somewhere ???
// FIXME MojoInfo need the real mojo ??
// so tricky to do. need to use MavenPluginManager on the current Maven Build
private Mojo getMojo(MojoExecution mojoExecution, MavenSession mavenSession) {
return null;
}

private ExpressionEvaluator getExpressionEvaluator(MavenSession session, MojoExecution mojoExecution) {
return new PluginParameterExpressionEvaluator( session, mojoExecution );
}
Expand Down Expand Up @@ -320,7 +314,7 @@ public void sessionStarted( ExecutionEvent event ) {
// set all modules which are not actually being build (in incremental builds) to NOT_BUILD
// JENKINS-9072
List<MavenProject> projects = event.getSession().getProjects();
//maven3Builder.listener.getLogger().println("Projects to build: " + projects);
debug("Projects to build: " + projects);
Set<ModuleName> buildingProjects = new HashSet<ModuleName>();
for (MavenProject p : projects) {
buildingProjects.add(new ModuleName(p));
Expand All @@ -341,15 +335,15 @@ public void sessionStarted( ExecutionEvent event ) {
* @see org.apache.maven.execution.ExecutionListener#sessionEnded(org.apache.maven.execution.ExecutionEvent)
*/
public void sessionEnded( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println( "sessionEnded" );
debug( "sessionEnded" );
this.eventLogger.sessionEnded( event );
}

/**
* @see org.apache.maven.execution.ExecutionListener#projectSkipped(org.apache.maven.execution.ExecutionEvent)
*/
public void projectSkipped( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("projectSkipped " + event.getProject().getGroupId()
debug("projectSkipped " + event.getProject().getGroupId()
+ ":" + event.getProject().getArtifactId()
+ ":" + event.getProject().getVersion());
this.eventLogger.projectSkipped( event );
Expand All @@ -359,8 +353,8 @@ public void projectSkipped( ExecutionEvent event ) {
* @see org.apache.maven.execution.ExecutionListener#projectStarted(org.apache.maven.execution.ExecutionEvent)
*/
public void projectStarted( ExecutionEvent event ) {
//maven3Builder.listener.getLogger().println( "projectStarted " + event.getProject().getGroupId() + ":"
// + event.getProject().getArtifactId() + ":" + event.getProject().getVersion() );
debug( "projectStarted " + event.getProject().getGroupId() + ":"
+ event.getProject().getArtifactId() + ":" + event.getProject().getVersion() );
recordProjectStarted(event);
this.eventLogger.projectStarted( event );

Expand Down Expand Up @@ -404,7 +398,7 @@ private void recordProjectStarted(ExecutionEvent event) {
* @see org.apache.maven.execution.ExecutionListener#projectSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
public void projectSucceeded( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println( "projectSucceeded "
debug( "projectSucceeded "
+ event.getProject().getGroupId() + ":"
+ event.getProject().getArtifactId() + ":"
+ event.getProject().getVersion());
Expand Down Expand Up @@ -450,7 +444,7 @@ private void recordProjectSucceeded(ExecutionEvent event) {
* @see org.apache.maven.execution.ExecutionListener#projectFailed(org.apache.maven.execution.ExecutionEvent)
*/
public void projectFailed( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("projectFailed " + event.getProject().getGroupId()
debug("projectFailed " + event.getProject().getGroupId()
+ ":" + event.getProject().getArtifactId()
+ ":" + event.getProject().getVersion());
recordProjectFailed(event);
Expand Down Expand Up @@ -494,7 +488,7 @@ private void recordProjectFailed(ExecutionEvent event) {
* @see org.apache.maven.execution.ExecutionListener#mojoSkipped(org.apache.maven.execution.ExecutionEvent)
*/
public void mojoSkipped( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("mojoSkipped " + event.getMojoExecution().getGroupId() + ":"
debug("mojoSkipped " + event.getMojoExecution().getGroupId() + ":"
+ event.getMojoExecution().getArtifactId() + ":"
+ event.getMojoExecution().getVersion()
+ "(" + event.getMojoExecution().getExecutionId() + ")");
Expand All @@ -505,10 +499,10 @@ public void mojoSkipped( ExecutionEvent event ) {
* @see org.apache.maven.execution.ExecutionListener#mojoStarted(org.apache.maven.execution.ExecutionEvent)
*/
public void mojoStarted( ExecutionEvent event ) {
//maven3Builder.listener.getLogger().println("mojoStarted " + event.getMojoExecution().getGroupId() + ":"
// + event.getMojoExecution().getArtifactId() + ":"
// + event.getMojoExecution().getVersion()
// + "(" + event.getMojoExecution().getExecutionId() + ")");
debug("mojoStarted " + event.getMojoExecution().getGroupId() + ":"
+ event.getMojoExecution().getArtifactId() + ":"
+ event.getMojoExecution().getVersion()
+ "(" + event.getMojoExecution().getExecutionId() + ")");
recordMojoStarted(event);
this.eventLogger.mojoStarted( event );
}
Expand All @@ -519,10 +513,8 @@ private void recordMojoStarted(ExecutionEvent event) {
MavenProject mavenProject = event.getProject();
XmlPlexusConfiguration xmlPlexusConfiguration = new XmlPlexusConfiguration( event.getMojoExecution().getConfiguration() );

Mojo mojo = null;//getMojo( event.getMojoExecution(), event.getSession() );

MojoInfo mojoInfo =
new MojoInfo( event.getMojoExecution(), mojo, xmlPlexusConfiguration,
new MojoInfo( event.getMojoExecution(), null, xmlPlexusConfiguration,
getExpressionEvaluator( event.getSession(), event.getMojoExecution() ) );

List<MavenReporter> mavenReporters = getMavenReporters( mavenProject );
Expand All @@ -546,10 +538,10 @@ private void recordMojoStarted(ExecutionEvent event) {
* @see org.apache.maven.execution.ExecutionListener#mojoSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
public void mojoSucceeded( ExecutionEvent event ) {
//maven3Builder.listener.getLogger().println("mojoSucceeded " + event.getMojoExecution().getGroupId() + ":"
// + event.getMojoExecution().getArtifactId() + ":"
// + event.getMojoExecution().getVersion()
// + "(" + event.getMojoExecution().getExecutionId() + ")");
debug("mojoSucceeded " + event.getMojoExecution().getGroupId() + ":"
+ event.getMojoExecution().getArtifactId() + ":"
+ event.getMojoExecution().getVersion()
+ "(" + event.getMojoExecution().getExecutionId() + ")");
recordMojoSucceeded(event);
this.eventLogger.mojoSucceeded( event );
}
Expand Down Expand Up @@ -602,13 +594,19 @@ private void recordMojoSucceeded(ExecutionEvent event) {
* @see org.apache.maven.execution.ExecutionListener#mojoFailed(org.apache.maven.execution.ExecutionEvent)
*/
public void mojoFailed( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("mojoFailed " + event.getMojoExecution().getGroupId() + ":"
debug("mojoFailed " + event.getMojoExecution().getGroupId() + ":"
+ event.getMojoExecution().getArtifactId() + ":"
+ event.getMojoExecution().getVersion()
+ "(" + event.getMojoExecution().getExecutionId() + ")");
recordMojoFailed(event);
this.eventLogger.mojoFailed( event );
}

private void debug(String msg) {
LOGGER.fine(msg);
if (DEBUG)
maven3Builder.listener.getLogger().println(msg);
}

private void recordMojoFailed(ExecutionEvent event) {
Long startTime = getMojoStartTime( event.getProject() );
Expand Down Expand Up @@ -664,7 +662,7 @@ private void recordMojoFailed(ExecutionEvent event) {
*/
public void forkStarted( ExecutionEvent event )
{
maven3Builder.listener.getLogger().println("mojo forkStarted " + event.getMojoExecution().getGroupId() + ":"
LOGGER.fine("mojo forkStarted " + event.getMojoExecution().getGroupId() + ":"
+ event.getMojoExecution().getArtifactId() + ":"
+ event.getMojoExecution().getVersion()
+ "(" + event.getMojoExecution().getExecutionId() + ")");
Expand All @@ -675,7 +673,7 @@ public void forkStarted( ExecutionEvent event )
* @see org.apache.maven.execution.ExecutionListener#forkSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
public void forkSucceeded( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("mojo forkSucceeded " + event.getMojoExecution().getGroupId() + ":"
LOGGER.fine("mojo forkSucceeded " + event.getMojoExecution().getGroupId() + ":"
+ event.getMojoExecution().getArtifactId() + ":"
+ event.getMojoExecution().getVersion()
+ "(" + event.getMojoExecution().getExecutionId() + ")");
Expand All @@ -686,7 +684,7 @@ public void forkSucceeded( ExecutionEvent event ) {
* @see org.apache.maven.execution.ExecutionListener#forkFailed(org.apache.maven.execution.ExecutionEvent)
*/
public void forkFailed( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("mojo forkFailed " + event.getMojoExecution().getGroupId() + ":"
LOGGER.fine("mojo forkFailed " + event.getMojoExecution().getGroupId() + ":"
+ event.getMojoExecution().getArtifactId() + ":"
+ event.getMojoExecution().getVersion()
+ "(" + event.getMojoExecution().getExecutionId() + ")");
Expand All @@ -697,7 +695,7 @@ public void forkFailed( ExecutionEvent event ) {
* @see org.apache.maven.execution.ExecutionListener#forkedProjectStarted(org.apache.maven.execution.ExecutionEvent)
*/
public void forkedProjectStarted( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println( "forkedProjectStarted " + event.getProject().getGroupId() + ":"
LOGGER.fine( "forkedProjectStarted " + event.getProject().getGroupId() + ":"
+ event.getProject().getArtifactId() + event.getProject().getVersion() );
recordProjectStarted(event);
this.eventLogger.forkedProjectStarted( event );
Expand All @@ -707,7 +705,7 @@ public void forkedProjectStarted( ExecutionEvent event ) {
* @see org.apache.maven.execution.ExecutionListener#forkedProjectSucceeded(org.apache.maven.execution.ExecutionEvent)
*/
public void forkedProjectSucceeded( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println( "forkedProjectSucceeded "
LOGGER.fine( "forkedProjectSucceeded "
+ event.getProject().getGroupId() + ":"
+ event.getProject().getArtifactId()
+ event.getProject().getVersion());
Expand All @@ -719,16 +717,18 @@ public void forkedProjectSucceeded( ExecutionEvent event ) {
* @see org.apache.maven.execution.ExecutionListener#forkedProjectFailed(org.apache.maven.execution.ExecutionEvent)
*/
public void forkedProjectFailed( ExecutionEvent event ) {
maven3Builder.listener.getLogger().println("forkedProjectFailed " + event.getProject().getGroupId()
LOGGER.fine("forkedProjectFailed " + event.getProject().getGroupId()
+ ":" + event.getProject().getArtifactId()
+ ":" + event.getProject().getVersion());
recordProjectFailed(event);
}

}

}
}

public static boolean markAsSuccess;

private static final long serialVersionUID = 1L;

private static final long serialVersionUID = 1L;

public static boolean DEBUG = false;

private static final Logger LOGGER = Logger.getLogger(Maven3Builder.class.getName());
}
27 changes: 25 additions & 2 deletions src/main/java/hudson/maven/MojoInfo.java
Expand Up @@ -23,8 +23,11 @@
*/
package hudson.maven;

import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.codehaus.classworlds.ClassRealm;
import org.codehaus.plexus.configuration.PlexusConfiguration;
Expand Down Expand Up @@ -69,6 +72,12 @@ public class MojoInfo {

/**
* Mojo object that carries out the actual execution.
*
* @deprecated as of 1.427
* Maven3 can no longer provide this information, so plugins cannot rely on this value being present.
* For the time being we are setting a dummy value to avoid NPE. Use {@link #configuration} to access
* configuration values, but otherwise the ability to inject values is lost and there's no viable
* alternative.
*/
public final Mojo mojo;

Expand All @@ -92,8 +101,9 @@ public class MojoInfo {
private final ConverterLookup converterLookup = new DefaultConverterLookup();

public MojoInfo(MojoExecution mojoExecution, Mojo mojo, PlexusConfiguration configuration, ExpressionEvaluator expressionEvaluator) {
if (mojo==null) throw new IllegalArgumentException();
// TODO: exactly what other variables are always non-null?
// in Maven3 there's no easy way to get the Mojo instance that's being executed,
// so we just can't pass it in.
if (mojo==null) mojo = new Maven3ProvidesNoAccessToMojo();
this.mojo = mojo;
this.mojoExecution = mojoExecution;
this.configuration = configuration;
Expand Down Expand Up @@ -167,6 +177,8 @@ public boolean is(String groupId, String artifactId, String mojoName) {
* @throws NoSuchFieldException
* if the mojo doesn't have any field of the given name.
* @since 1.232
* @deprecated as of 1.427
* See the discussion in {@link #mojo}
*/
public <T> T inject(String name, T value) throws NoSuchFieldException {
for(Class c=mojo.getClass(); c!=Object.class; c=c.getSuperclass()) {
Expand Down Expand Up @@ -205,6 +217,8 @@ public <T> T inject(String name, T value) throws NoSuchFieldException {
* @throws NoSuchFieldException
* if the specified field is not found on the mojo class, or it is found but the type is not an interface.
* @since 1.232
* @deprecated as of 1.427
* See the discussion in {@link #mojo}
*/
public void intercept(String fieldName, final InvocationInterceptor interceptor) throws NoSuchFieldException {
for(Class c=mojo.getClass(); c!=Object.class; c=c.getSuperclass()) {
Expand Down Expand Up @@ -242,4 +256,13 @@ public Object invoke(Object proxy, Method method, Object[] args) throws Throwabl
}
}
}

/**
* Instance will be set to {@link MojoInfo#mojo} to avoid NPE in plugins.
*/
public static class Maven3ProvidesNoAccessToMojo extends AbstractMojo {
public void execute() throws MojoExecutionException, MojoFailureException {
throw new UnsupportedOperationException();
}
}
}

0 comments on commit 76d7f99

Please sign in to comment.