Author: jvanzyl
Date: Sat Sep 24 19:00:04 2005
New Revision: 291359

URL: http://svn.apache.org/viewcvs?rev=291359&view=rev
Log:
o very rough start at the embedding api


Added:
    maven/components/trunk/maven-embedder/
    maven/components/trunk/maven-embedder/notes.txt
    maven/components/trunk/maven-embedder/pom.xml
    maven/components/trunk/maven-embedder/src/
    maven/components/trunk/maven-embedder/src/main/
    maven/components/trunk/maven-embedder/src/main/java/
    maven/components/trunk/maven-embedder/src/main/java/org/
    maven/components/trunk/maven-embedder/src/main/java/org/apache/
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
    
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderException.java
    maven/components/trunk/maven-embedder/src/main/resources/
    maven/components/trunk/maven-embedder/src/main/resources/META-INF/
    maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/
    
maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-embedder/src/test/
    maven/components/trunk/maven-embedder/src/test/java/
    maven/components/trunk/maven-embedder/src/test/java/org/
    maven/components/trunk/maven-embedder/src/test/java/org/apache/
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/
    
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/
    
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
    maven/components/trunk/maven-embedder/src/test/resources/
    maven/components/trunk/maven-embedder/src/test/resources/pom.xml

Added: maven/components/trunk/maven-embedder/notes.txt
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/notes.txt?rev=291359&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/notes.txt (added)
+++ maven/components/trunk/maven-embedder/notes.txt Sat Sep 24 19:00:04 2005
@@ -0,0 +1,4 @@
+<eu> -- parse xml to in-memory model
+<eu> -- run m2 (embedded): including running for downloading dependencies, 
building, archetypes, etc.
+<eu> -- introspect available goals
+<eu> -- introspect available plugins (low priority)

Added: maven/components/trunk/maven-embedder/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/pom.xml?rev=291359&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/pom.xml (added)
+++ maven/components/trunk/maven-embedder/pom.xml Sat Sep 24 19:00:04 2005
@@ -0,0 +1,154 @@
+<project>
+  <parent>
+    <artifactId>maven</artifactId>
+    <groupId>org.apache.maven</groupId>
+    <version>2.0-beta-2-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven</groupId>
+  <artifactId>maven-embedder</artifactId>
+  <name>Maven Embedder</name>
+  <version>2.0-beta-2-SNAPSHOT</version>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>RELEASE</version>
+        <configuration>
+          <descriptor>src/assemble/bin.xml</descriptor>
+          <finalName>maven-2.0-beta-1</finalName>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-settings</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-file</artifactId>
+      <version>1.0-alpha-4</version>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-http-lightweight</artifactId>
+      <version>1.0-alpha-4</version>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.reporting</groupId>
+      <artifactId>maven-reporting-api</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-profile</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-model</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>plexus</groupId>
+      <artifactId>plexus-container-default</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-provider-api</artifactId>
+      <version>1.0-alpha-4</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-repository-metadata</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-project</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-registry</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-cli</groupId>
+      <artifactId>commons-cli</artifactId>
+      <version>1.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>plexus</groupId>
+      <artifactId>plexus-input-handler</artifactId>
+      <version>1.0-alpha-2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-descriptor</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-monitor</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-artifact-manager</artifactId>
+      <version>2.0-beta-2-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-ssh</artifactId>
+      <version>1.0-alpha-4</version>
+      <scope>runtime</scope>
+    </dependency>
+    <dependency>
+      <groupId>jsch</groupId>
+      <artifactId>jsch</artifactId>
+      <version>0.1.21</version>
+    </dependency>
+  </dependencies>
+  <reporting>
+    <plugins>
+      <plugin>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <artifactId>maven-clover-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <artifactId>maven-pmd-plugin</artifactId>
+      </plugin>
+      <plugin>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+      </plugin>
+    </plugins>
+  </reporting>
+  <distributionManagement>
+    <site>
+      <id>website</id>
+      <url>scp://minotaur.apache.org//www/maven.apache.org/m2</url>
+    </site>
+  </distributionManagement>
+</project>

Added: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?rev=291359&view=auto
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 (added)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
 Sat Sep 24 19:00:04 2005
@@ -0,0 +1,339 @@
+package org.apache.maven.embedder;

+

+/*

+ * Copyright 2001-2005 The Apache Software Foundation.

+ *

+ * Licensed 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.repository.ArtifactRepository;

+import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;

+import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;

+import org.apache.maven.artifact.repository.DefaultArtifactRepository;

+import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;

+import org.apache.maven.model.Model;

+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;

+import org.apache.maven.profiles.ProfileManager;

+import org.apache.maven.profiles.DefaultProfileManager;

+import org.apache.maven.project.MavenProject;

+import org.apache.maven.project.MavenProjectBuilder;

+import org.apache.maven.project.ProjectBuildingException;

+import org.apache.maven.settings.MavenSettingsBuilder;

+import org.apache.maven.settings.Settings;

+import org.apache.maven.settings.RuntimeInfo;

+import org.codehaus.classworlds.ClassWorld;

+import org.codehaus.classworlds.DuplicateRealmException;

+import org.codehaus.plexus.PlexusContainerException;

+import 
org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;

+import 
org.codehaus.plexus.component.repository.exception.ComponentLookupException;

+import org.codehaus.plexus.embed.Embedder;

+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;

+

+import java.io.File;

+import java.io.FileNotFoundException;

+import java.io.FileReader;

+import java.io.IOException;

+

+/**

+ * Class intended to be used by clients who wish to embed Maven into their 
applications

+ *

+ * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>

+ */

+public class MavenEmbedder

+{

+    // ----------------------------------------------------------------------

+    // Embedder

+    // ----------------------------------------------------------------------

+

+    private Embedder embedder;

+

+    // ----------------------------------------------------------------------

+    // Components

+    // ----------------------------------------------------------------------

+

+    private MavenProjectBuilder mavenProjectBuilder;

+

+    private ArtifactRepositoryFactory artifactRepositoryFactory;

+

+    private MavenSettingsBuilder settingsBuilder;

+

+    private MavenXpp3Reader modelReader;

+

+    private ProfileManager profileManager;

+

+    // ----------------------------------------------------------------------

+    // Configuration

+    // ----------------------------------------------------------------------

+

+    private Settings settings;

+

+    private ArtifactRepository localRepository;

+

+    private File localRepositoryDirectory;

+

+    private ClassLoader classLoader;

+

+    // ----------------------------------------------------------------------

+    // User options

+    // ----------------------------------------------------------------------

+

+    private boolean pluginUpdateOverride;

+

+    private boolean checkLatestPluginVersion;

+

+    private boolean interactiveMode;

+

+    private boolean usePluginRegistry;

+

+    private boolean offline;

+

+    private boolean updateSnapshots;

+

+    private String globalChecksumPolicy;

+

+    public void setPluginUpdateOverride( boolean pluginUpdateOverride )

+    {

+        this.pluginUpdateOverride = pluginUpdateOverride;

+    }

+

+    public void setCheckLatestPluginVersion( boolean checkLatestPluginVersion )

+    {

+        this.checkLatestPluginVersion = checkLatestPluginVersion;

+    }

+

+    public void setInteractiveMode( boolean interactiveMode )

+    {

+        this.interactiveMode = interactiveMode;

+    }

+

+    public void setUsePluginRegistry( boolean usePluginRegistry )

+    {

+        this.usePluginRegistry = usePluginRegistry;

+    }

+

+    public void setOffline( boolean offline )

+    {

+        this.offline = offline;

+    }

+

+    public void setUpdateSnapshots( boolean updateSnapshots )

+    {

+        this.updateSnapshots = updateSnapshots;

+    }

+

+    public void setGlobalChecksumPolicy( String globalChecksumPolicy )

+    {

+        this.globalChecksumPolicy = globalChecksumPolicy;

+    }

+

+    // ----------------------------------------------------------------------

+    // Accessors

+    // ----------------------------------------------------------------------

+

+    /**

+     * Set the classloader to use with the maven embedder.

+     *

+     * @param classLoader

+     */

+    public void setClassLoader( ClassLoader classLoader )

+    {

+        this.classLoader = classLoader;

+    }

+

+    public void setLocalRepositoryDirectory( File localRepositoryDirectory )

+    {

+        this.localRepositoryDirectory = localRepositoryDirectory;

+    }

+    // ----------------------------------------------------------------------

+    // Embedder Client Contract

+    // ----------------------------------------------------------------------

+

+    public Model readModel( File model )

+        throws XmlPullParserException, FileNotFoundException, IOException

+    {

+        return modelReader.read( new FileReader( model ) );

+    }

+

+    public MavenProject readProject( File mavenProject )

+        throws ProjectBuildingException

+    {

+        return mavenProjectBuilder.build( mavenProject, localRepository, 
profileManager );

+    }

+

+    // ----------------------------------------------------------------------

+    // Internal utility code

+    // ----------------------------------------------------------------------

+

+    private ArtifactRepository createLocalRepository( Settings settings )

+        throws ComponentLookupException

+    {

+        ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) 
embedder.lookup( ArtifactRepositoryLayout.ROLE, "default" );

+

+        String url = settings.getLocalRepository();

+

+        if ( !url.startsWith( "file:" ) )

+        {

+            url = "file://" + url;

+        }

+

+        ArtifactRepository localRepository = new DefaultArtifactRepository( 
"local", url, repositoryLayout );

+

+        boolean snapshotPolicySet = false;

+

+        if ( offline )

+        {

+            settings.setOffline( true );

+

+            snapshotPolicySet = true;

+        }

+

+        if ( !snapshotPolicySet && updateSnapshots )

+        {

+            artifactRepositoryFactory.setGlobalUpdatePolicy( 
ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS );

+        }

+

+        artifactRepositoryFactory.setGlobalChecksumPolicy( 
globalChecksumPolicy );

+

+        return localRepository;

+    }

+

+    private RuntimeInfo createRuntimeInfo( Settings settings )

+    {

+        RuntimeInfo runtimeInfo = new RuntimeInfo( settings );

+

+        if ( pluginUpdateOverride )

+        {

+            runtimeInfo.setPluginUpdateOverride( Boolean.TRUE );

+        }

+        else

+        {

+            runtimeInfo.setPluginUpdateOverride( Boolean.FALSE );

+        }

+

+        if ( checkLatestPluginVersion )

+        {

+            runtimeInfo.setCheckLatestPluginVersion( Boolean.TRUE );

+        }

+        else

+        {

+            runtimeInfo.setCheckLatestPluginVersion( Boolean.FALSE );

+        }

+

+        return runtimeInfo;

+    }

+

+    // ----------------------------------------------------------------------

+    //  Lifecycle

+    // ----------------------------------------------------------------------

+

+    public void start()

+        throws MavenEmbedderException

+    {

+        if ( classLoader == null )

+        {

+            throw new IllegalStateException( "A classloader must be specified 
using setClassLoader(ClassLoader)." );

+        }

+

+        embedder = new Embedder();

+

+        try

+        {

+            ClassWorld classWorld = new ClassWorld();

+

+            classWorld.newRealm( "plexus.core", classLoader );

+

+            embedder.start( classWorld );

+

+            // 
----------------------------------------------------------------------

+            // Lookup each of the components we need to provide the desired

+            // client interface.

+            // 
----------------------------------------------------------------------

+

+            modelReader = new MavenXpp3Reader();

+

+            profileManager = new DefaultProfileManager( 
embedder.getContainer() );

+

+            mavenProjectBuilder = (MavenProjectBuilder) embedder.lookup( 
MavenProjectBuilder.ROLE );

+

+            artifactRepositoryFactory = (ArtifactRepositoryFactory) 
embedder.lookup( ArtifactRepositoryFactory.ROLE );

+

+            // 
----------------------------------------------------------------------

+            // If an explicit local repository has not been set then we will 
use the

+            // setting builder to use the maven defaults to help us find one.

+            // 
----------------------------------------------------------------------

+

+            if ( localRepositoryDirectory == null )

+            {

+                settingsBuilder = (MavenSettingsBuilder) embedder.lookup( 
MavenSettingsBuilder.ROLE );

+

+                try

+                {

+                    settings = settingsBuilder.buildSettings();

+                }

+                catch ( IOException e )

+                {

+                    throw new MavenEmbedderException( "Error creating 
settings.", e );

+                }

+                catch ( XmlPullParserException e )

+                {

+                    throw new MavenEmbedderException( "Error creating 
settings.", e );

+                }

+            }

+            else

+            {

+                settings = new Settings();

+

+                settings.setLocalRepository( 
localRepositoryDirectory.getAbsolutePath() );

+            }

+

+            settings.setRuntimeInfo( createRuntimeInfo( settings ) );

+

+            settings.setOffline( offline );

+

+            settings.setUsePluginRegistry( usePluginRegistry );

+

+            settings.setInteractiveMode( interactiveMode );

+

+            localRepository = createLocalRepository( settings );

+        }

+        catch ( PlexusContainerException e )

+        {

+            throw new MavenEmbedderException( "Cannot start Plexus embedder.", 
e );

+        }

+        catch ( DuplicateRealmException e )

+        {

+            throw new MavenEmbedderException( "Cannot create Classworld realm 
for the embedder.", e );

+        }

+        catch ( ComponentLookupException e )

+        {

+            throw new MavenEmbedderException( "Cannot lookup required 
component.", e );

+        }

+    }

+

+    public void stop()

+        throws MavenEmbedderException

+    {

+        try

+        {

+            embedder.release( mavenProjectBuilder );

+

+            embedder.release( artifactRepositoryFactory );

+

+            embedder.release( settingsBuilder );

+        }

+        catch ( ComponentLifecycleException e )

+        {

+            throw new MavenEmbedderException( "Cannot stop the embedder.", e );

+        }

+    }

+}


Added: 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderException.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderException.java?rev=291359&view=auto
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderException.java
 (added)
+++ 
maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedderException.java
 Sat Sep 24 19:00:04 2005
@@ -0,0 +1,40 @@
+package org.apache.maven.embedder;
+
+/*
+* Copyright 2001-2005 The Apache Software Foundation.
+*
+* Licensed 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.
+*/
+
+/**
+ * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl</a>
+ * @version $Id:$
+ */
+public class MavenEmbedderException
+    extends Exception
+{
+    public MavenEmbedderException( String message )
+    {
+        super( message );
+    }
+
+    public MavenEmbedderException( Throwable cause )
+    {
+        super( cause );
+    }
+
+    public MavenEmbedderException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
+}

Added: 
maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml?rev=291359&view=auto
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml
 (added)
+++ 
maven/components/trunk/maven-embedder/src/main/resources/META-INF/plexus/components.xml
 Sat Sep 24 19:00:04 2005
@@ -0,0 +1,376 @@
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.plugin.PluginManager</role>
+      
<implementation>org.apache.maven.plugin.DefaultPluginManager</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.project.path.PathTranslator</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.plugin.MavenPluginCollector</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.plugin.version.PluginVersionManager</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
+        </requirement>
+        <requirement>
+          
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.plugin.PluginMappingManager</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.execution.RuntimeInformation</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.project.MavenProjectBuilder</role>
+        </requirement>
+      </requirements>
+    </component>
+
+    <component>
+      <role>org.apache.maven.extension.ExtensionManager</role>
+      
<implementation>org.apache.maven.extension.DefaultExtensionManager</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.resolver.ArtifactResolver</role>
+        </requirement>
+        <requirement>
+          
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+        </requirement>
+      </requirements>
+    </component>
+
+    <component>
+      <role>org.apache.maven.plugin.PluginMappingManager</role>
+      
<implementation>org.apache.maven.plugin.DefaultPluginMappingManager</implementation>
+      <requirements>
+        <requirement>
+          
<role>org.apache.maven.artifact.repository.metadata.RepositoryMetadataManager</role>
+        </requirement>
+      </requirements>
+    </component>
+
+    <!-- Duplicated from Maven core as it is used in the plugin manager -->
+    <component>
+      <role>org.apache.maven.project.path.PathTranslator</role>
+      
<implementation>org.apache.maven.project.path.DefaultPathTranslator</implementation>
+    </component>
+    <!--
+     |
+     |
+     |
+     -->
+    <component>
+      <role>org.apache.maven.Maven</role>
+      <implementation>org.apache.maven.DefaultMaven</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.project.MavenProjectBuilder</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.lifecycle.LifecycleExecutor</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.usability.ErrorDiagnoser</role>
+          <field-name>errorDiagnosers</field-name>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.execution.RuntimeInformation</role>
+        </requirement>
+      </requirements>
+    </component>
+
+    <component>
+      <role>org.apache.maven.execution.RuntimeInformation</role>
+      
<implementation>org.apache.maven.execution.DefaultRuntimeInformation</implementation>
+    </component>
+    <!--
+    |
+    |PluginConfigurationDiagnoser
+    |
+    -->
+    <component>
+      <role>org.apache.maven.usability.ErrorDiagnoser</role>
+      <role-hint>PluginConfigurationDiagnoser</role-hint>
+      
<implementation>org.apache.maven.usability.PluginConfigurationDiagnoser</implementation>
+    </component>
+    <!--
+     |
+     |ArtifactResolverDiagnoser
+     |
+     -->
+    <component>
+      <role>org.apache.maven.usability.ErrorDiagnoser</role>
+      <role-hint>ArtifactResolverDiagnoser</role-hint>
+      
<implementation>org.apache.maven.usability.ArtifactResolverDiagnoser</implementation>
+    </component>
+    <!--
+     |
+     |InvalidArtifactDiagnoser
+     |
+     -->
+    <component>
+      <role>org.apache.maven.usability.ErrorDiagnoser</role>
+      <role-hint>InvalidArtifactDiagnoser</role-hint>
+      
<implementation>org.apache.maven.usability.InvalidArtifactDiagnoser</implementation>
+    </component>
+
+    <!--
+     |
+     | Lifecycle executor
+     |
+     -->
+    <component>
+      <role>org.apache.maven.lifecycle.LifecycleExecutor</role>
+      
<implementation>org.apache.maven.lifecycle.DefaultLifecycleExecutor</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.plugin.PluginManager</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.extension.ExtensionManager</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.project.injection.ModelDefaultsInjector</role>
+        </requirement>
+        <requirement>
+          
<role>org.apache.maven.artifact.handler.manager.ArtifactHandlerManager</role>
+        </requirement>
+      </requirements>
+      <configuration>
+        <!-- START SNIPPET: lifecyle -->
+        <phases>
+          <phase implementation="java.lang.String">validate</phase>
+          <phase implementation="java.lang.String">initialize</phase>
+          <phase implementation="java.lang.String">generate-sources</phase>
+          <phase implementation="java.lang.String">process-sources</phase>
+          <phase implementation="java.lang.String">generate-resources</phase>
+          <phase implementation="java.lang.String">process-resources</phase>
+          <phase implementation="java.lang.String">compile</phase>
+          <phase implementation="java.lang.String">process-classes</phase>
+          <phase 
implementation="java.lang.String">generate-test-sources</phase>
+          <phase implementation="java.lang.String">process-test-sources</phase>
+          <phase 
implementation="java.lang.String">generate-test-resources</phase>
+          <phase 
implementation="java.lang.String">process-test-resources</phase>
+          <phase implementation="java.lang.String">test-compile</phase>
+          <phase implementation="java.lang.String">test</phase>
+          <phase implementation="java.lang.String">package</phase>
+          <phase implementation="java.lang.String">integration-test</phase>
+          <phase implementation="java.lang.String">verify</phase>
+          <phase implementation="java.lang.String">install</phase>
+          <phase implementation="java.lang.String">deploy</phase>
+        </phases>
+        <!-- END SNIPPET: lifecycle -->
+        <!-- START SNIPPET: default-reports -->
+        <defaultReports>
+          <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-project-info-reports-plugin</report>
+          <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-checkstyle-plugin</report>
+          <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-javadoc-plugin</report>
+          <!-- TODO: currently in mojo - should they be defaults any more?
+                    <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-changelog-plugin</report>
+                    <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-surefire-report-plugin</report>
+                    <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-jdepend-plugin</report>
+                    <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-jxr-plugin</report>
+                    <report 
implementation="java.lang.String">org.apache.maven.plugins:maven-taglist-plugin</report>
+          -->
+        </defaultReports>
+        <!-- END SNIPPET: default-reports -->
+        <!-- START SNIPPET: default-lifecycle -->
+        <!-- NOT USED, ACCORDING TO CODE.
+        <defaultPhases>
+          
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+          
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+          
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+          
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+          <package>
+            org.apache.maven.plugins:maven-jar-plugin:jar,
+            org.apache.maven.plugins:maven-source-plugin:jar
+          </package>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </defaultPhases>
+        -->
+        <!-- END SNIPPET: default-lifecycle -->
+      </configuration>
+    </component>
+
+    <!-- TODO: issues with the lifecycle:
+     - manually configured lifecycles will not pick up any later additions to 
the defaults where they are intended to extend defaults (have configuration 
<includeDefaults/> ?)
+     -->
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>pom</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <!-- START SNIPPET: pom-lifecycle -->
+        <phases>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </phases>
+        <!-- END SNIPPET: pom-lifecycle -->
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>jar</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <!-- START SNIPPET: jar-lifecycle -->
+        <phases>
+          
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+          
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+          
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+          
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+          <package>
+            org.apache.maven.plugins:maven-jar-plugin:jar
+          </package>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </phases>
+        <!-- END SNIPPET: jar-lifecycle -->
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>maven-plugin</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <!-- START SNIPPET: maven-plugin-lifecycle -->
+        <phases>
+          
<generate-resources>org.apache.maven.plugins:maven-plugin-plugin:descriptor</generate-resources>
+          
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+          
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+          
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+          
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+          <package>
+            org.apache.maven.plugins:maven-jar-plugin:jar,
+            
org.apache.maven.plugins:maven-plugin-plugin:addPluginArtifactMetadata
+          </package>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </phases>
+        <!-- END SNIPPET: maven-plugin-lifecycle -->
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>ejb</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <!-- START SNIPPET: ejb-lifecycle -->
+        <phases>
+          
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+          
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+          
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+          
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+          <package>
+            org.apache.maven.plugins:maven-ejb-plugin:ejb
+          </package>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </phases>
+        <!-- END SNIPPET: ejb-lifecycle -->
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>war</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <!-- START SNIPPET: war-lifecycle -->
+        <phases>
+          
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+          
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+          
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+          
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+          <package>org.apache.maven.plugins:maven-war-plugin:war</package>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </phases>
+        <!-- END SNIPPET: war-lifecycle -->
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>ear</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <!-- START SNIPPET: ear-lifecycle -->
+        <phases>
+          
<generate-resources>org.apache.maven.plugins:maven-ear-plugin:generate-application-xml</generate-resources>
+          <package>org.apache.maven.plugins:maven-ear-plugin:ear</package>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </phases>
+        <!-- END SNIPPET: ear-lifecycle -->
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
+      <role-hint>rar</role-hint>
+      
<implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
+      <configuration>
+        <!-- START SNIPPET: rar-lifecycle -->
+        <phases>
+          
<process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
+          
<compile>org.apache.maven.plugins:maven-compiler-plugin:compile</compile>
+          
<process-test-resources>org.apache.maven.plugins:maven-resources-plugin:testResources</process-test-resources>
+          
<test-compile>org.apache.maven.plugins:maven-compiler-plugin:testCompile</test-compile>
+          <test>org.apache.maven.plugins:maven-surefire-plugin:test</test>
+          <package>
+            org.apache.maven.plugins:maven-jar-plugin:jar,
+            org.apache.maven.plugins:maven-rar-plugin:rar
+          </package>
+          
<install>org.apache.maven.plugins:maven-install-plugin:install</install>
+          <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
+        </phases>
+        <!-- END SNIPPET: rar-lifecycle -->
+      </configuration>
+    </component>
+
+    <component>
+      <role>org.apache.maven.plugin.version.PluginVersionManager</role>
+      <role-hint>default</role-hint>
+      
<implementation>org.apache.maven.plugin.version.DefaultPluginVersionManager</implementation>
+      <instantiation-strategy>per-lookup</instantiation-strategy>
+      <requirements>
+        <requirement>
+          
<role>org.apache.maven.artifact.metadata.ArtifactMetadataSource</role>
+        </requirement>
+        <requirement>
+          
<role>org.apache.maven.plugin.registry.MavenPluginRegistryBuilder</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.artifact.factory.ArtifactFactory</role>
+        </requirement>
+        <requirement>
+          <role>org.codehaus.plexus.components.inputhandler.InputHandler</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.project.MavenProjectBuilder</role>
+        </requirement>
+        <requirement>
+          <role>org.apache.maven.execution.RuntimeInformation</role>
+        </requirement>
+      </requirements>
+    </component>
+  </components>
+</component-set>

Added: 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java?rev=291359&view=auto
==============================================================================
--- 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
 (added)
+++ 
maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderTest.java
 Sat Sep 24 19:00:04 2005
@@ -0,0 +1,70 @@
+package org.apache.maven.embedder;

+

+import junit.framework.TestCase;

+import org.apache.maven.model.Model;

+import org.apache.maven.project.MavenProject;

+

+import java.io.File;

+

+public class MavenEmbedderTest

+    extends TestCase

+{

+    private String basedir;

+

+    private MavenEmbedder maven;

+

+    protected void setUp()

+        throws Exception

+    {

+        super.setUp();

+

+        basedir = System.getProperty( "basedir" );

+    }

+

+    public void testMavenEmbedder()

+        throws Exception

+    {

+        ClassLoader classLoader = 
Thread.currentThread().getContextClassLoader();

+

+        maven = new MavenEmbedder();

+

+        maven.setClassLoader( classLoader );

+

+        maven.start();

+

+        modelReadingTest();

+

+        projectReadingTest();

+

+        maven.stop();

+    }

+

+    protected void modelReadingTest()

+        throws Exception

+    {

+        // 
----------------------------------------------------------------------

+        // Test model reading

+        // 
----------------------------------------------------------------------

+

+        Model model = maven.readModel( getPomFile() );

+

+        assertEquals( "org.apache.maven", model.getGroupId() );

+    }

+

+    protected void projectReadingTest()

+        throws Exception

+    {

+        MavenProject project = maven.readProject( getPomFile() );

+

+        assertEquals( "org.apache.maven", project.getGroupId() );

+    }

+

+    // ----------------------------------------------------------------------

+    // Internal Utilities

+    // ----------------------------------------------------------------------

+

+    protected File getPomFile()

+    {

+        return new File( basedir, "src/test/resources/pom.xml" );

+    }

+}


Added: maven/components/trunk/maven-embedder/src/test/resources/pom.xml
URL: 
http://svn.apache.org/viewcvs/maven/components/trunk/maven-embedder/src/test/resources/pom.xml?rev=291359&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/resources/pom.xml (added)
+++ maven/components/trunk/maven-embedder/src/test/resources/pom.xml Sat Sep 24 
19:00:04 2005
@@ -0,0 +1,70 @@
+<project>
+  <parent>
+    <artifactId>maven</artifactId>
+    <groupId>org.apache.maven</groupId>
+    <version>2.0-beta-2-SNAPSHOT</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven</groupId>
+  <artifactId>maven-model</artifactId>
+  <name>Maven Model</name>
+  <version>2.0-beta-2-SNAPSHOT</version>
+  <description>Maven Model</description>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.codehaus.modello</groupId>
+        <artifactId>modello-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>xpp3-writer</goal>
+              <goal>java</goal>
+              <goal>xpp3-reader</goal>
+              <goal>xsd</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <version>4.0.0</version>
+          <model>maven.mdo</model>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+  <dependencies>
+    <dependency>
+      <groupId>plexus</groupId>
+      <artifactId>plexus-utils</artifactId>
+    </dependency>
+  </dependencies>
+  <profiles>
+    <profile>
+      <id>all-models</id>
+      <build>
+        <finalName>${pom.artifactId}-${pom.version}-all</finalName>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.modello</groupId>
+            <artifactId>modello-maven-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>v3</id>
+                <configuration>
+                  <version>3.0.0</version>
+                  <packageWithVersion>true</packageWithVersion>
+                </configuration>
+                <goals>
+                  <goal>xpp3-writer</goal>
+                  <goal>java</goal>
+                  <goal>xpp3-reader</goal>
+                  <goal>xsd</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+</project>



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to