You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2007/02/28 19:33:26 UTC

svn commit: r512896 - in /maven/components/trunk/maven-embedder/src: main/java/org/apache/maven/embedder/MavenEmbedder.java site/apt/index.apt test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java

Author: jvanzyl
Date: Wed Feb 28 10:33:25 2007
New Revision: 512896

URL: http://svn.apache.org/viewvc?view=rev&rev=512896
Log:
MNG-2778 Code and documentation for accessing the plexus container.

Modified:
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
    maven/components/trunk/maven-embedder/src/site/apt/index.apt
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java?view=diff&rev=512896&r1=512895&r2=512896
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/MavenEmbedder.java Wed Feb 28 10:33:25 2007
@@ -65,6 +65,7 @@
 import org.codehaus.plexus.DefaultPlexusContainer;
 import org.codehaus.plexus.MutablePlexusContainer;
 import org.codehaus.plexus.PlexusContainerException;
+import org.codehaus.plexus.PlexusContainer;
 import org.codehaus.plexus.classworlds.ClassWorld;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
@@ -618,8 +619,6 @@
             {
                 settings = settingsBuilder.buildSettings( configuration.getUserSettingsFile(),
                                                           configuration.getGlobalSettingsFile() );
-
-                System.out.println( "settings.getLocalRepository() = " + settings.getLocalRepository() );
             }
             catch ( Exception e )
             {
@@ -904,5 +903,15 @@
         {
             loggerManager.setThresholds( oldThreshold );
         }
+    }
+
+    /**
+     * Return the instance of the plexus container being used in the embedder.
+     *  
+     * @return The plexus container used in the embedder.
+     */
+    public PlexusContainer getPlexusContainer()
+    {
+        return container;
     }
 }

Modified: maven/components/trunk/maven-embedder/src/site/apt/index.apt
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/site/apt/index.apt?view=diff&rev=512896&r1=512895&r2=512896
==============================================================================
--- maven/components/trunk/maven-embedder/src/site/apt/index.apt (original)
+++ maven/components/trunk/maven-embedder/src/site/apt/index.apt Wed Feb 28 10:33:25 2007
@@ -41,5 +41,12 @@
 
   Also note that the user and global settings are merged, and the user settings are dominant.
 
-  
+Accessing the Underlying Plexus Container
+
+  Though it is not recommended for general use, it is possible to get at the underlying Plexus Container instance if you
+  wish to lookup custom components. The Maven Embedder was specifically designed to be used for Maven and not a general
+  purpose use of Plexus. So if you use this method then you use it at your peril. You can access the Plexus Container
+  using the following:
+
+%{snippet|id=plexus-container|url=http://svn.apache.org/repos/asf/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java}
 

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java?view=diff&rev=512896&r1=512895&r2=512896
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/embedder/MavenEmbedderExampleTest.java Wed Feb 28 10:33:25 2007
@@ -5,6 +5,7 @@
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.PlexusContainer;
 
 import java.io.File;
 import java.util.Arrays;
@@ -97,4 +98,31 @@
         }
         // END SNIPPET: mimic-cli
     }
+
+    public void testEmbedderExampleThatShowsAccessingThePlexusContainer()
+        throws Exception
+    {
+
+        // START SNIPPET: plexus-container
+        Configuration configuration = new DefaultConfiguration()
+            .setUserSettingsFile( MavenEmbedder.DEFAULT_USER_SETTINGS_FILE )
+            .setGlobalSettingsFile( MavenEmbedder.DEFAULT_GLOBAL_SETTINGS_FILE )
+            .setClassLoader( Thread.currentThread().getContextClassLoader() );
+
+        ConfigurationValidationResult validationResult = MavenEmbedder.validateConfiguration( configuration );
+
+        if ( validationResult.isValid() )
+        {
+            // If the configuration is valid then do your thang ...
+        }
+
+        MavenEmbedder embedder = new MavenEmbedder( configuration );
+
+        PlexusContainer container = embedder.getPlexusContainer();
+
+        // Do what you like with the container ...
+
+        // END SNIPPET: plexus-container
+    }
+
 }