You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by br...@apache.org on 2004/04/21 02:33:22 UTC

cvs commit: maven/src/java/org/apache/maven/plugin GoalToJellyScriptHousingMapper.java PluginManager.java

brett       2004/04/20 17:33:22

  Modified:    src/java/org/apache/maven Tag: MAVEN-1_0-BRANCH
                        MavenSession.java
               src/java/org/apache/maven/cli Tag: MAVEN-1_0-BRANCH App.java
               src/java/org/apache/maven/plugin Tag: MAVEN-1_0-BRANCH
                        GoalToJellyScriptHousingMapper.java
                        PluginManager.java
  Log:
  complete maven help enhancements
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.18.4.8  +12 -1     maven/src/java/org/apache/maven/MavenSession.java
  
  Index: MavenSession.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/MavenSession.java,v
  retrieving revision 1.18.4.7
  retrieving revision 1.18.4.8
  diff -u -r1.18.4.7 -r1.18.4.8
  --- MavenSession.java	24 Mar 2004 05:54:08 -0000	1.18.4.7
  +++ MavenSession.java	21 Apr 2004 00:33:22 -0000	1.18.4.8
  @@ -264,4 +264,15 @@
       {
           pluginManager.attainGoals( project, goals );
       }
  +
  +    public Project getPluginProjectFromGoal( String goal ) throws MavenException
  +    {
  +        return pluginManager.getPluginProjectFromGoal( goal );
  +    }
  +
  +    public Set getProjectGoals( Project project )
  +    {
  +        return pluginManager.getGoalNames( project );
  +    }
   }
  +
  
  
  
  No                   revision
  No                   revision
  1.37.4.20 +156 -158  maven/src/java/org/apache/maven/cli/App.java
  
  Index: App.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/cli/App.java,v
  retrieving revision 1.37.4.19
  retrieving revision 1.37.4.20
  diff -u -r1.37.4.19 -r1.37.4.20
  --- App.java	16 Apr 2004 07:00:34 -0000	1.37.4.19
  +++ App.java	21 Apr 2004 00:33:22 -0000	1.37.4.20
  @@ -28,11 +28,13 @@
   import org.apache.log4j.Level;
   import org.apache.log4j.Logger;
   import org.apache.maven.MavenConstants;
  +import org.apache.maven.MavenException;
   import org.apache.maven.MavenSession;
   import org.apache.maven.MavenUtils;
   import org.apache.maven.NoGoalException;
   import org.apache.maven.UnknownGoalException;
   import org.apache.maven.jelly.MavenJellyContext;
  +import org.apache.maven.project.Project;
   import org.apache.maven.verifier.ChecksumVerificationException;
   import org.apache.maven.verifier.RepoConfigException;
   import org.apache.maven.verifier.UnsatisfiedDependencyException;
  @@ -48,8 +50,10 @@
   import java.util.Collections;
   import java.util.Comparator;
   import java.util.Date;
  +import java.util.HashMap;
   import java.util.Iterator;
   import java.util.List;
  +import java.util.Map;
   import java.util.Set;
   import java.util.StringTokenizer;
   
  @@ -65,7 +69,7 @@
    *       of the goals. The goal computation logic needs to be moved
    *       out of this class and be placed in MavenSession.java proper.
    * @todo All logging needs to be done via commons-logging. No
  - *       System.out.* and Jelly needs to be taught to take a
  + *       System.err.* and Jelly needs to be taught to take a
    *       logger. In an attempt to isolate everything in MavenSession.java.
    */
   public class App
  @@ -80,7 +84,10 @@
       /** Default file name for an XML-based POM. */
       public static final String POM_FILE_NAME = "project.xml";
   
  -    /** Default console width - for formatting output - 78 */
  +    /** Default wrap indent. */
  +    private static final int WRAP_INDENT = 35;
  +
  +    /** Default console width - for formatting output. */
       private static final int CONSOLE_WIDTH = 80;
   
       /** return code for ok processing */
  @@ -177,12 +184,6 @@
       /** CLI Parser */
       private CommandLine commandLine;
   
  -    /** Saved original console System.out. */
  -    private PrintStream consoleOut;
  -
  -    /** Saved original console System.err. */
  -    private PrintStream consoleErr;
  -
       /** Jelly's underlying writer. */
       private Writer writer;
   
  @@ -193,7 +194,7 @@
       private MavenSession mavenSession;
   
       /** logger for output */
  -    private Log log = LogFactory.getLog(App.class);
  +    private Log log = LogFactory.getLog( App.class );
   
       /** Constructor. */
       public App()
  @@ -324,10 +325,7 @@
       protected void initializeRootContext()
           throws IOException
       {
  -        this.consoleOut = System.out;
  -        this.consoleErr = System.err;
  -
  -        this.writer = new OutputStreamWriter( this.consoleOut );
  +        this.writer = new OutputStreamWriter( System.out );
           XMLOutput output = XMLOutput.createXMLOutput( writer, false );
   
           if ( getCli().hasOption( WORKING_DIR ) )
  @@ -345,7 +343,7 @@
           // We will assume here that there might not be a project.xml file present
           // and we will create the root context from the directory gleaned from
           // the user.dir system property.
  -        MavenJellyContext c = MavenUtils.createContext( new File( System.getProperty("user.dir") ) );
  +        MavenJellyContext c = MavenUtils.createContext( new File( System.getProperty( "user.dir" ) ) );
           setRootContext( c );
           getRootContext().setXMLOutput( output );
   
  @@ -527,7 +525,7 @@
               System.err.println( "Reference made to goal '"
                                   + e.getGoal().getName()
                                   + "' which has no definition." );
  -            System.out.println( "" );
  +            System.err.println( "" );
               returnCode = RC_EMPTY_GOAL;
               return;
           }
  @@ -569,7 +567,7 @@
   
           if ( !failed )
           {
  -            System.out.println( "BUILD SUCCESSFUL" );
  +            log.info( "BUILD SUCCESSFUL" );
           }
   
           final long mb = 1024 * 1024;
  @@ -643,7 +641,7 @@
       /**
        * Display the plugin help if the option is present, then exit
        */
  -    private void displayPluginHelp()
  +    private void displayPluginHelp() throws MavenException
       {
           if ( getCli().hasOption( DISPLAY_PLUGIN_HELP ) )
           {
  @@ -651,7 +649,14 @@
   
               displayGoals( true, plugin );
   
  -            // TODO: show project information for plugin
  +            if ( plugin != null )
  +            {
  +                Project project = mavenSession.getPluginProjectFromGoal( plugin );
  +                if ( project != null && project.getDescription() != null )
  +                {
  +                    log.info( wrapConsoleMessage( project.getDescription(), 0, CONSOLE_WIDTH ) );
  +                }
  +            }
   
               exit( RC_OK );
               return;
  @@ -665,9 +670,16 @@
       {
           if ( getCli().hasOption( DISPLAY_USAGE ) )
           {
  -            // TODO: show maven.xml goals
  -            // TODO: show maven.xml goal hooks
  -            // TODO: show project information
  +            Set goals = mavenSession.getProjectGoals( mavenSession.getRootProject() );
  +
  +            String title = "Project Goals";
  +            log.info( title );
  +            log.info( format( "", title.length(), '=' ) );
  +
  +            displayGoals( false, null, goals );
  +
  +            log.info( wrapConsoleMessage( mavenSession.getRootProject().getDescription(), 0, CONSOLE_WIDTH ) );
  +
               exit( RC_OK );
               return;
           }
  @@ -695,7 +707,6 @@
           if ( getCli().hasOption( DISPLAY_VERSION ) )
           {
               printConsoleMavenHeader();
  -            System.out.println( "Java version: " + System.getProperty( "java.version" ) );
               exit( RC_OK );
               return;
           }
  @@ -711,7 +722,7 @@
       {
           int returnCode = RC_GOAL_FAILED;
   
  -        System.out.println( "" );
  +        System.err.println( "" );
           System.err.println( "BUILD FAILED" );
   
           String msg = null;
  @@ -823,15 +834,15 @@
       }
   
       /**
  -     * Prints the MavenSession header to System.out
  +     * Prints the MavenSession header.
        */
       protected void printConsoleMavenHeader()
       {
  -        System.out.println( " __  __" );
  -        System.out.println( "|  \\/  |__ _Apache__ ___" );
  -        System.out.println( "| |\\/| / _` \\ V / -_) ' \\  ~ intelligent projects ~" );
  -        System.out.println( "|_|  |_\\__,_|\\_/\\___|_||_|  v. " + org.apache.maven.MavenSession.APP_VERSION );
  -        System.out.println( "" );
  +        log.info( " __  __" );
  +        log.info( "|  \\/  |__ _Apache__ ___" );
  +        log.info( "| |\\/| / _` \\ V / -_) ' \\  ~ intelligent projects ~" );
  +        log.info( "|_|  |_\\__,_|\\_/\\___|_||_|  v. " + org.apache.maven.MavenSession.APP_VERSION );
  +        log.info( "" );
   
       }
   
  @@ -858,158 +869,89 @@
           }
           log.info( title );
           log.info( format( "", title.length(), '=' ) );
  -        log.info( "" );
   
           Set goals = mavenSession.getAllGoalNames();
  +        displayGoals( pluginOnly, plugin, goals );
  +    }
   
  -        List list = new ArrayList( goals );
  -
  -        // sort by name
  -        Comparator comparator = new Comparator()
  +    private void displayGoals( boolean pluginOnly, String plugin, Set goals )
  +    {
  +        Map map = new HashMap();
  +        for ( Iterator i = goals.iterator(); i.hasNext(); )
           {
  -            public int compare( Object o1, Object o2 )
  +            String goal = ( String ) i.next();
  +            String pluginName = "";
  +            int index = goal.indexOf( ':' );
  +            if ( index >= 0 )
               {
  -                String g1 = (String) o1;
  -                String g2 = (String) o2;
  -                return g1.compareTo( g2 );
  +                pluginName = goal.substring( 0, index );
               }
  -        };
  -        Collections.sort( list, comparator );
  -
  -        int defaultWrapIndent = 30;
  -        int wrapIndent = defaultWrapIndent;
  -        String msgPrefix = "";
  -        boolean hasDesc = false;
  -        boolean firstLine = true;
  -        List undocumentedGoals = new ArrayList();
  -        String lastPluginName = "";
  -
  -        for ( Iterator i = list.iterator(); i.hasNext();)
  -        {
  -            String goalName = (String) i.next(); // goal name
  -            String goalDescription = mavenSession.getGoalDescription( goalName );
  -
  -            StringTokenizer st = new StringTokenizer( goalName, ":" );
  -            String pluginName = st.nextToken(); //ex. java
  -            boolean newPlugin = !pluginName.equals( lastPluginName );
  -
  -            if ( pluginOnly ) 
  +            List l = ( List ) map.get( pluginName );
  +            if ( l == null )
               {
  -                if ( plugin == null && !pluginName.equals( goalName ) )
  -                {
  -                    // only show default goal
  -                    continue;
  -                }
  -                else if ( plugin != null && !pluginName.equals( plugin ) )
  -                {
  -                    // only show specified plugin
  -                    continue;
  -                }
  -            }
  -
  -            // Prepare the description
  -            if ( goalDescription == null || goalDescription.equals( "null" ) )
  -            {
  -                // If description equals the string "null", it came from the cache
  -                hasDesc = false;
  -            }
  -            else
  -            {
  -                goalDescription = goalDescription.trim();
  -                hasDesc = goalDescription.length() != 0;
  +                l = new ArrayList();
  +                map.put( pluginName, l );
               }
  +            l.add( goal.substring( index + 1 ) );
  +        }
   
  -            if ( newPlugin )
  +        List goalList = ( List ) map.get( "" );
  +        if ( goalList != null )
  +        {
  +            for ( Iterator i = goalList.iterator(); i.hasNext(); )
               {
  -                // starting new section
  -                lastPluginName = pluginName;
  -
  -                if ( st.hasMoreTokens() )
  +                String goal = ( String ) i.next();
  +                if ( map.containsKey( goal ) )
                   {
  -                    // uh oh we have no default goal defined
  -                    wrapIndent = defaultWrapIndent;
  -                    msgPrefix = "  " + st.nextToken() + " ";
  -                    if ( msgPrefix.trim().length() == 0 )
  +                    i.remove();
  +                    List pluginGoals = ( List ) map.get( goal );
  +                    if ( pluginGoals == null )
                       {
  -                        msgPrefix = "  ( NO GOAL NAME ) ";
  +                        pluginGoals = new ArrayList();
  +                        map.put( goal, pluginGoals );
                       }
  -                    msgPrefix = format( msgPrefix, wrapIndent, '.' ) + " ";
  -                    // +1 pad for space on the end
  -                    wrapIndent++;
  -
  -                    // if the goal found for a new plugin is not the default
  -                    // goal, then we make the plugin description something that
  -                    // makes clear there is no default goal defined
  -                    msgPrefix = pluginName
  -                        + "] ( NO DEFAULT GOAL )" + LS
  -                        + msgPrefix;
  +                    // don't add the empty goal as we always attempt to display the default
                   }
  -                else
  -                {
  -                    // we are dealing with the default goal
  -                    msgPrefix = pluginName + "]";
  +            }
  +        }
   
  -                    if ( hasDesc )
  -                    {
  -                        msgPrefix += " : ";
  -                        wrapIndent = msgPrefix.length();
  -                    }
  -                }
  +        List keys = new ArrayList( map.keySet() );
  +        Collections.sort( keys );
   
  -                // the first line of display goals should not start a new line
  -                if ( firstLine || pluginOnly )
  -                {
  -                    msgPrefix = "[" + msgPrefix;
  -                    firstLine = false;
  -                }
  -                else
  -                {
  -                    msgPrefix = LS + "[" + msgPrefix;
  -                }
  +        List undocumentedGoals = new ArrayList();
   
  -                if ( hasDesc )
  +        for ( Iterator i = keys.iterator(); i.hasNext(); )
  +        {
  +            String pluginName = ( String ) i.next();
  +            if ( pluginOnly )
  +            {
  +                if ( plugin == null )
                   {
  -                    System.out.println( msgPrefix
  -                                        + wrapConsoleMessage( goalDescription, wrapIndent,
  -                                                              CONSOLE_WIDTH ) );
  +                    // only show default goal
  +                    displayDefaultGoal( pluginName, mavenSession.getGoalDescription( pluginName ), false );
  +                    continue;
                   }
  -                else
  +                else if ( !pluginName.equals( plugin ) )
                   {
  -                    System.out.println( msgPrefix + " ( NO DESCRIPTION ) " );
  +                    continue;
                   }
               }
  -            else
  +
  +            displayDefaultGoal( pluginName, mavenSession.getGoalDescription( pluginName ), true );
  +            List l = ( List ) map.get( pluginName );
  +            Collections.sort( l );
  +            for ( Iterator j = l.iterator(); j.hasNext(); )
               {
  -                if ( hasDesc )
  +                String goalName = ( String ) j.next();
  +                String fullGoalName = pluginName.length() == 0 ? goalName : pluginName + ":" + goalName;
  +                String goalDescription = mavenSession.getGoalDescription( fullGoalName );
  +                if ( goalDescription != null )
                   {
  -                    wrapIndent = defaultWrapIndent; // where the indent begins for all goals
  -                    // protect against a plugin called "plugin:"
  -                    if ( st.hasMoreTokens() )
  -                    {
  -                        // not a new plugin so also not the first line of
  -                        // plugin section and not a goal with just a plugin
  -                        // name; there must be nextToken
  -                        msgPrefix = "  " + st.nextToken() + " ";
  -                        //protect against empty goal names
  -                        if ( msgPrefix.trim().length() == 0 )
  -                        {
  -                            msgPrefix = "  ( NO GOAL ) ";
  -                        }
  -
  -                    }
  -                    else
  -                    {
  -                        msgPrefix = "  ( NO GOAL ) ";
  -                    }
  -
  -                    msgPrefix = format( msgPrefix, wrapIndent, '.' ) + " ";
  -                    wrapIndent += 1; // for spaces used to pad the prefix
  -
  -                    log.info( msgPrefix + wrapConsoleMessage( goalDescription, wrapIndent, CONSOLE_WIDTH ) );
  +                    displayGoal( goalName, goalDescription );
                   }
                   else
                   {
  -                    undocumentedGoals.add( goalName );
  +                    undocumentedGoals.add( fullGoalName );
                   }
               }
           }
  @@ -1021,6 +963,39 @@
           log.info( "" );
       }
   
  +    private void displayGoal( String goalName, String goalDescription )
  +    {
  +        if ( "".equals( goalName ) )
  +        {
  +            goalName = "( NO GOAL )";
  +        }
  +
  +        String msgPrefix = format( "  " + goalName + "  ", WRAP_INDENT, '.' ) + " ";
  +
  +        log.info( msgPrefix + wrapConsoleMessage( goalDescription, WRAP_INDENT + 1, CONSOLE_WIDTH ) );
  +    }
  +
  +    private void displayDefaultGoal( String goalName, String goalDescription, boolean newLine )
  +    {
  +        if ( "".equals( goalName ) )
  +        {
  +            return;
  +        }
  +
  +        String msgPrefix = format( "[" + goalName + "]", WRAP_INDENT, ' ' ) + " ";
  +        if ( goalDescription == null )
  +        {
  +            goalDescription = "( NO DEFAULT GOAL )";
  +        }
  +
  +        if ( newLine )
  +        {
  +            msgPrefix = LS + msgPrefix;
  +        }
  +
  +        log.info( msgPrefix + wrapConsoleMessage( goalDescription, WRAP_INDENT + 1, CONSOLE_WIDTH ) );
  +    }
  +
       /** Display goals without descriptions.
        *
        *  @param list List of undocument goal names.
  @@ -1046,7 +1021,7 @@
        *  @param pad The trailing pad character.
        *
        *  @return The formatted string, or the original string
  -     *          if the length is already >= <code>width</code>.
  +     *          if the length is already &gt;= <code>width</code>.
        */
       protected String format( String orig,
                                int width,
  @@ -1083,6 +1058,27 @@
                                            int wrapIndent,
                                            int lineWidth )
       {
  +        if ( msg.indexOf( '\n' ) < 0 && msg.indexOf( '\r' ) < 0 )
  +        {
  +            return wrapConsoleLine( msg, wrapIndent, lineWidth );
  +        }
  +
  +        StringBuffer buf = new StringBuffer();
  +        StringTokenizer tok = new StringTokenizer( msg, "\n\r" );
  +        while ( tok.hasMoreTokens() )
  +        {
  +            String token = tok.nextToken().trim();
  +            if ( token.length() > 0 )
  +            {
  +                buf.append( wrapConsoleLine( token, wrapIndent, lineWidth ) );
  +                buf.append( LS );
  +            }
  +        }
  +        return buf.toString();
  +    }
  +
  +    private String wrapConsoleLine( String msg, int wrapIndent, int lineWidth )
  +    {
           int offset = lineWidth - wrapIndent;
           if ( msg.length() <= offset )
           {
  @@ -1110,6 +1106,7 @@
                   currentPos = bIter.preceding( offset );
                   // append from the start to currentPos
                   buf.append( msg.substring( 0, currentPos ) );
  +
                   // start next line
                   buf.append( LS );
   
  @@ -1176,8 +1173,9 @@
        * To allow subclasses stop the app from exiting
        * @param status the value to exit with
        */
  -    protected void exit(int status)
  +    protected void exit( int status )
       {
  -        System.exit(status);
  +        System.exit( status );
       }
   }
  +
  
  
  
  No                   revision
  No                   revision
  1.3.4.13  +14 -1     maven/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java
  
  Index: GoalToJellyScriptHousingMapper.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/plugin/GoalToJellyScriptHousingMapper.java,v
  retrieving revision 1.3.4.12
  retrieving revision 1.3.4.13
  diff -u -r1.3.4.12 -r1.3.4.13
  --- GoalToJellyScriptHousingMapper.java	28 Mar 2004 21:27:27 -0000	1.3.4.12
  +++ GoalToJellyScriptHousingMapper.java	21 Apr 2004 00:33:22 -0000	1.3.4.13
  @@ -446,7 +446,20 @@
       String getGoalDescription( String goalName )
       {
           Goal goal = goalProject.getGoal( goalName );
  -        return goal != null ? goal.getDescription() : "";
  +        String goalDescription = ( goal != null ? goal.getDescription() : null );
  +        if ( goalDescription != null )
  +        {
  +            goalDescription = goalDescription.trim();
  +            if ( "null".equals( goalDescription ) )
  +            {
  +                goalDescription = null;
  +            }
  +            else if ( goalDescription.length() == 0 )
  +            {
  +                goalDescription = null;
  +            }
  +        }
  +       return goalDescription;
       }
   
       void addResolvedPlugins( List projectHousings )
  
  
  
  1.70.4.39 +42 -19    maven/src/java/org/apache/maven/plugin/PluginManager.java
  
  Index: PluginManager.java
  ===================================================================
  RCS file: /home/cvs/maven/src/java/org/apache/maven/plugin/PluginManager.java,v
  retrieving revision 1.70.4.38
  retrieving revision 1.70.4.39
  diff -u -r1.70.4.38 -r1.70.4.39
  --- PluginManager.java	16 Apr 2004 07:00:14 -0000	1.70.4.38
  +++ PluginManager.java	21 Apr 2004 00:33:22 -0000	1.70.4.39
  @@ -128,7 +128,7 @@
       private final PluginCacheManager cacheManager = new PluginCacheManager();
   
       /** Goal to Plugins mapper. */
  -    private final GoalToJellyScriptHousingMapper mapper = new GoalToJellyScriptHousingMapper();
  +    private GoalToJellyScriptHousingMapper mapper = new GoalToJellyScriptHousingMapper();
   
       /** Current plugins mapper (transient - includes maven.xml, etc). **/
       private GoalToJellyScriptHousingMapper transientMapper = mapper;
  @@ -436,6 +436,27 @@
           project.getContext().setClassLoader( projectClassLoader );
       }
   
  +    List readMavenXml( Project project, GoalToJellyScriptHousingMapper mapper ) throws MavenException
  +    {
  +        Project p = project;
  +        List projectHousings = new ArrayList();
  +
  +        // Project's Jelly script
  +        while ( p != null )
  +        {
  +            if ( p.hasMavenXml() )
  +            {
  +                File mavenXml = p.getMavenXml();
  +
  +                JellyScriptHousing jellyScriptHousing = createJellyScriptHousing( project, mavenXml );
  +                jellyScriptHousing.parse( mapper );
  +                projectHousings.add( jellyScriptHousing );
  +            }
  +            p = p.getParent();
  +        }
  +        return projectHousings;
  +    }
  +
       /**
        * Attain the goals.
        *
  @@ -491,8 +512,6 @@
           // may wish to override so we guarantee precedence of the goals by running the jelly scripts
           // in the above mentioned order.
   
  -        List projectHousings = new ArrayList();
  -
           // driver.jelly
           InputStream driver = getClass().getResourceAsStream( "/driver.jelly" );
           JellyScriptHousing driverHousing = createJellyScriptHousing( project, driver );
  @@ -502,21 +521,7 @@
           driverHousing.parse( transientMapper, driver );
           driver.close();
   
  -        Project p = project;
  -
  -        // Project's Jelly script
  -        while ( p != null )
  -        {
  -            if ( p.hasMavenXml() )
  -            {
  -                File mavenXml = p.getMavenXml();
  -
  -                JellyScriptHousing jellyScriptHousing = createJellyScriptHousing( project, mavenXml );
  -                jellyScriptHousing.parse( transientMapper );
  -                projectHousings.add( jellyScriptHousing );
  -            }
  -            p = p.getParent();
  -        }
  +        List projectHousings = readMavenXml( project, transientMapper );
   
           if ( goals != null )
           {
  @@ -710,6 +715,19 @@
       }
   
       /**
  +     * Warning - this completely scrogs the default mapper. Only use this before System.exit!
  +     * (currently used by maven -u).
  +     * @todo refactor to return mapper instead and use that, or perhaps instantiate a new plugin manager
  +     * @return
  +     */
  +    public Set getGoalNames( Project project ) throws MavenException
  +    {
  +        mapper = new GoalToJellyScriptHousingMapper();
  +        readMavenXml( project, mapper );
  +        return mapper.getGoalNames();
  +    }
  +
  +    /**
        */
       public void installPlugin( File file, Project parentProject ) throws MavenException
       {
  @@ -893,5 +911,10 @@
           context.removeVariable( PLUGIN_HOUSING );
       }
   
  +    public Project getPluginProjectFromGoal( String goal ) throws MavenException
  +    {
  +        JellyScriptHousing housing = mapper.getPluginHousing( goal );
  +        return housing != null ? housing.getProject() : null;
  +    }
   }
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org