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/09/08 06:04:49 UTC

svn commit: r573783 - in /maven/components/trunk/maven-embedder/src/main: assembly/ java/org/apache/maven/cli/ java/org/apache/maven/embedder/ java/org/apache/maven/embedder/execution/

Author: jvanzyl
Date: Fri Sep  7 21:04:48 2007
New Revision: 573783

URL: http://svn.apache.org/viewvc?rev=573783&view=rev
Log:
o block a few more artifacts out of the assembly
o the populator now has a clear populate() that shows how the request is being constructed, there should be nothing beyond the embedder now
  the does any of this configuration and loading and it should remain this way. no processing of settings or profiles deep in the bowels
  of Maven is all happens in the populator.


Removed:
    maven/components/trunk/maven-embedder/src/main/assembly/repo.xml
Modified:
    maven/components/trunk/maven-embedder/src/main/assembly/bin.xml
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
    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/execution/DefaultMavenExecutionRequestPopulator.java

Modified: maven/components/trunk/maven-embedder/src/main/assembly/bin.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/assembly/bin.xml?rev=573783&r1=573782&r2=573783&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/assembly/bin.xml (original)
+++ maven/components/trunk/maven-embedder/src/main/assembly/bin.xml Fri Sep  7 21:04:48 2007
@@ -41,6 +41,8 @@
         <exclude>jmock:jmock</exclude>
         <exclude>xml-apis:xml-apis</exclude>
         <exclude>org.apache.maven:maven-artifact</exclude>
+        <exclude>org.apache.maven:maven-monitor</exclude>
+        <exclude>org.apache.maven:maven-plugin-descriptor</exclude>
       </excludes>
     </dependencySet>
   </dependencySets>

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java?rev=573783&r1=573782&r2=573783&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java Fri Sep  7 21:04:48 2007
@@ -35,7 +35,6 @@
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.execution.MavenExecutionResult;
 import org.apache.maven.execution.ReactorManager;
-import org.apache.maven.plugin.MojoFailureException;
 import org.apache.maven.project.MavenProject;
 import org.codehaus.plexus.classworlds.ClassWorld;
 

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?rev=573783&r1=573782&r2=573783&view=diff
==============================================================================
--- 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 Fri Sep  7 21:04:48 2007
@@ -104,20 +104,17 @@
 {
     public static final String DEFAULT_LOCAL_REPO_ID = "local";
 
-    public static final String DEFAULT_LAYOUT_ID = "default";
-
     public static final String userHome = System.getProperty( "user.home" );
 
     public static final File userMavenConfigurationHome = new File( userHome, ".m2" );
 
-    public static final String mavenHome = System.getProperty( "maven.home" );
-
     public static final File defaultUserLocalRepository = new File( userMavenConfigurationHome, "repository" );
 
     public static final File DEFAULT_USER_SETTINGS_FILE = new File( userMavenConfigurationHome, "settings.xml" );
 
-    public static final File DEFAULT_GLOBAL_SETTINGS_FILE = new File( System
-        .getProperty( "maven.home", System.getProperty( "user.dir", "" ) ), "conf/settings.xml" );
+    public static final File DEFAULT_GLOBAL_SETTINGS_FILE =
+        new File( System.getProperty( "maven.home", System.getProperty( "user.dir", "" ) ), "conf/settings.xml" );
+
 
     // ----------------------------------------------------------------------------
     //
@@ -641,7 +638,7 @@
             artifactResolver = (ArtifactResolver) container.lookup( ArtifactResolver.ROLE, "default" );
 
             defaultArtifactRepositoryLayout =
-                (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE, DEFAULT_LAYOUT_ID );
+                (ArtifactRepositoryLayout) container.lookup( ArtifactRepositoryLayout.ROLE, "default" );
 
             populator = (MavenExecutionRequestPopulator) container.lookup(
                 MavenExecutionRequestPopulator.ROLE );

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=573783&r1=573782&r2=573783&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java Fri Sep  7 21:04:48 2007
@@ -60,7 +60,16 @@
 import java.util.List;
 
 /**
- * DefaultMavenExecutionRequestPopulator
+ * Things that we deal with in this populator to ensure that we have a valid {@MavenExecutionRequest} 
+ *
+ * - POM
+ * - Settings
+ * - Local Repository
+ * - Snapshot update policies
+ * - Repository checksum policies
+ * - Artifact transfer mechanism configuration
+ * - Eventing/Logging configuration
+ * - Profile manager configuration
  *
  * @version $Id$
  */
@@ -83,10 +92,48 @@
                                                    Configuration configuration )
         throws MavenEmbedderException
     {
-        // Actual POM File
+        pom( request, configuration );
+
+        settings( request, configuration );
+
+        localRepository( request, configuration );
+
+        snapshotPolicy( request, configuration );
+
+        localRepository( request, configuration );
+
+        checksumPolicy( request, configuration );
+
+        artifactTransferMechanism( request, configuration );
+
+        eventing( request, configuration );
+
+        profileManager( request, configuration );
+
+        return request;
+    }
+
+    // ------------------------------------------------------------------------
+    // POM
+    // ------------------------------------------------------------------------
+
+    private void pom( MavenExecutionRequest request, Configuration configuration )
+    {
+        // ------------------------------------------------------------------------
+        // POM
+        //
+        // If we are not given a specific POM file, but passed a base directory
+        // then we will use a release POM in the directory provide, or and then
+        // look for the standard POM.
+        // ------------------------------------------------------------------------
 
-        if ( request.getPomFile() == null && request.getBaseDirectory() != null )
+        if ( request.getPomFile() != null )
         {
+            request.setBaseDirectory( new File( request.getPomFile() ) );
+        }
+        else if ( request.getBaseDirectory() != null )
+        {
+            // Look for a release POM
             File pom = new File(
                 request.getBaseDirectory(),
                 Maven.RELEASE_POMv4 );
@@ -100,13 +147,35 @@
 
             request.setPomFile( pom.getAbsolutePath() );
         }
+    }
 
-        request.setGlobalSettingsFile( configuration.getGlobalSettingsFile() );
+    // ------------------------------------------------------------------------
+    // Settings
+    // ------------------------------------------------------------------------
 
-        request.setUserSettingsFile( configuration.getUserSettingsFile() );
+    private void settings( MavenExecutionRequest request, Configuration configuration )
+    {
+        // ------------------------------------------------------------------------
+        // Settings
+        //
+        // If a settings instance has been provided in the request the we use
+        // that for execution, otherwise we will look in the embedder configuration
+        // for a user/global settings file to use. The settings file should have
+        // been validated upfront but we will still catch any parsing exception
+        // ------------------------------------------------------------------------
 
         if ( request.getSettings() == null )
         {
+            if ( configuration.getGlobalSettingsFile() != null )
+            {
+                request.setGlobalSettingsFile( configuration.getGlobalSettingsFile() );
+            }
+
+            if ( configuration.getUserSettingsFile() != null )
+            {
+                request.setUserSettingsFile( configuration.getUserSettingsFile() );
+            }
+
             try
             {
                 request.setSettings(
@@ -117,13 +186,145 @@
                 request.setSettings( new Settings() );
             }
         }
+    }
+
+    // ------------------------------------------------------------------------
+    // Local Repository
+    // ------------------------------------------------------------------------
+
+    private void localRepository( MavenExecutionRequest request, Configuration configuration )
+        throws MavenEmbedderException
+    {
+        // ------------------------------------------------------------------------
+        // Local Repository
+        //
+        // 1. Use a value has been passed in via the configuration
+        // 2. Use value in the resultant settings
+        // 3. Use default value
+        // ------------------------------------------------------------------------
 
         if ( request.getLocalRepository() == null )
         {
             request.setLocalRepository( createLocalRepository( request.getSettings(), configuration ) );
         }
+    }
+
+
+    public ArtifactRepository createLocalRepository( Settings settings, Configuration configuration )
+        throws MavenEmbedderException
+    {
+        String localRepositoryPath = null;
+
+        if ( configuration.getLocalRepository() != null )
+        {
+            localRepositoryPath = configuration.getLocalRepository().getAbsolutePath();
+        }
+
+        if ( StringUtils.isEmpty( localRepositoryPath ) )
+        {
+            localRepositoryPath = settings.getLocalRepository();
+        }
+
+        if ( StringUtils.isEmpty( localRepositoryPath ) )
+        {
+            localRepositoryPath = MavenEmbedder.defaultUserLocalRepository.getAbsolutePath();
+        }
+
+        return createLocalRepository(
+            localRepositoryPath,
+            MavenEmbedder.DEFAULT_LOCAL_REPO_ID );
+    }
+
+    public ArtifactRepository createLocalRepository( String url,
+                                                     String repositoryId )
+        throws MavenEmbedderException
+    {
+        try
+        {
+            return createRepository(
+                canonicalFileUrl( url ),
+                repositoryId );
+        }
+        catch ( IOException e )
+        {
+            throw new MavenEmbedderException(
+                "Unable to resolve canonical path for local repository " + url,
+                e );
+        }
+    }
+
+    private String canonicalFileUrl( String url )
+        throws IOException
+    {
+        if ( !url.startsWith( "file:" ) )
+        {
+            url = "file://" + url;
+        }
+        else if ( url.startsWith( "file:" ) && !url.startsWith( "file://" ) )
+        {
+            url = "file://" + url.substring( "file:".length() );
+        }
+
+        // So now we have an url of the form file://<path>
+
+        // We want to eliminate any relative path nonsense and lock down the path so we
+        // need to fully resolve it before any sub-modules use the path. This can happen
+        // when you are using a custom settings.xml that contains a relative path entry
+        // for the local repository setting.
+
+        File localRepository = new File( url.substring( "file://".length() ) );
+
+        if ( !localRepository.isAbsolute() )
+        {
+            url = "file://" + localRepository.getCanonicalPath();
+        }
+
+        return url;
+    }
+
+    public ArtifactRepository createRepository( String url,
+                                                String repositoryId )
+    {
+        // snapshots vs releases
+        // offline = to turning the update policy off
+
+        //TODO: we'll need to allow finer grained creation of repositories but this will do for now
+
+        String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
+
+        String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
+
+        ArtifactRepositoryPolicy snapshotsPolicy =
+            new ArtifactRepositoryPolicy(
+                true,
+                updatePolicyFlag,
+                checksumPolicyFlag );
+
+        ArtifactRepositoryPolicy releasesPolicy =
+            new ArtifactRepositoryPolicy(
+                true,
+                updatePolicyFlag,
+                checksumPolicyFlag );
 
-        // Repository update policies
+        return artifactRepositoryFactory.createArtifactRepository(
+            repositoryId,
+            url,
+            defaultArtifactRepositoryLayout,
+            snapshotsPolicy,
+            releasesPolicy );
+    }
+
+    // ------------------------------------------------------------------------
+    // Snapshot Policy 
+    // ------------------------------------------------------------------------
+
+    private void snapshotPolicy( MavenExecutionRequest request, Configuration configuration )
+    {
+        // ------------------------------------------------------------------------
+        // Snapshot Repository Update Policies
+        //
+        // Set the global policies for snapshot updates.
+        // ------------------------------------------------------------------------
 
         boolean snapshotPolicySet = false;
 
@@ -144,10 +345,35 @@
                 artifactRepositoryFactory.setGlobalUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER );
             }
         }
+    }
+
+    // ------------------------------------------------------------------------
+    // Checksum Policy
+    // ------------------------------------------------------------------------
+
+    private void checksumPolicy( MavenExecutionRequest request, Configuration configuration )
+    {
+        // ------------------------------------------------------------------------
+        // Repository Checksum Policies
+        //
+        // We take the checksum passed in via the request.
+        // ------------------------------------------------------------------------
 
         artifactRepositoryFactory.setGlobalChecksumPolicy( request.getGlobalChecksumPolicy() );
+    }
 
-        // Wagon
+    // ------------------------------------------------------------------------
+    // Artifact Transfer Mechanism
+    // ------------------------------------------------------------------------
+
+    private void artifactTransferMechanism( MavenExecutionRequest request, Configuration configuration )
+        throws MavenEmbedderException
+    {
+        // ------------------------------------------------------------------------
+        // Artifact Transfer Mechanism
+        //
+        //
+        // ------------------------------------------------------------------------
 
         if ( request.isOffline() )
         {
@@ -176,40 +402,6 @@
                 "Unable to configure Maven for execution",
                 e );
         }
-
-        // BaseDirectory in MavenExecutionRequest
-
-        if ( request.getPomFile() != null && request.getBaseDirectory() == null )
-        {
-            request.setBaseDirectory( new File( request.getPomFile() ) );
-        }
-
-        // EventMonitor/Logger
-
-        Logger logger = container.getLoggerManager().getLoggerForComponent( Mojo.ROLE );
-
-        if ( request.getEventMonitors() == null )
-        {
-            request.addEventMonitor( new DefaultEventMonitor( logger ) );
-        }
-
-        container.getLoggerManager().setThreshold( request.getLoggingLevel() );
-
-        // Create the standard profile manager
-
-        ProfileManager globalProfileManager = new DefaultProfileManager( container );
-
-        loadSettingsProfiles(
-            globalProfileManager,
-            request.getSettings() );
-
-        globalProfileManager.explicitlyActivate( request.getActiveProfiles() );
-
-        globalProfileManager.explicitlyDeactivate( request.getInactiveProfiles() );
-
-        request.setProfileManager( globalProfileManager );
-
-        return request;
     }
 
     private void resolveParameters( Settings settings )
@@ -284,6 +476,53 @@
             container.release( wagonManager );
         }
     }
+    
+    // ------------------------------------------------------------------------
+    // Eventing
+    // ------------------------------------------------------------------------
+
+    private void eventing( MavenExecutionRequest request, Configuration configuration )
+    {
+        // ------------------------------------------------------------------------
+        // Event Monitor/Logging
+        //
+        //
+        // ------------------------------------------------------------------------
+
+        Logger logger = container.getLoggerManager().getLoggerForComponent( Mojo.ROLE );
+
+        if ( request.getEventMonitors() == null )
+        {
+            request.addEventMonitor( new DefaultEventMonitor( logger ) );
+        }
+
+        container.getLoggerManager().setThreshold( request.getLoggingLevel() );
+    }
+
+    // ------------------------------------------------------------------------
+    // Profile Manager 
+    // ------------------------------------------------------------------------
+
+    private void profileManager( MavenExecutionRequest request, Configuration configuration )
+    {
+        // ------------------------------------------------------------------------
+        // Profile Manager
+        //
+        //
+        // ------------------------------------------------------------------------
+
+        ProfileManager globalProfileManager = new DefaultProfileManager( container );
+
+        loadSettingsProfiles(
+            globalProfileManager,
+            request.getSettings() );
+
+        globalProfileManager.explicitlyActivate( request.getActiveProfiles() );
+
+        globalProfileManager.explicitlyDeactivate( request.getInactiveProfiles() );
+
+        request.setProfileManager( globalProfileManager );
+    }
 
     // ----------------------------------------------------------------------------
     // LegacyLifecycle
@@ -315,113 +554,5 @@
                 profileManager.addProfile( profile );
             }
         }
-    }
-
-    // ----------------------------------------------------------------------
-    // Local Repository
-    // ----------------------------------------------------------------------
-
-    public ArtifactRepository createLocalRepository( Settings settings, Configuration configuration )
-        throws MavenEmbedderException
-    {
-        String localRepositoryPath = null;
-
-        if ( configuration.getLocalRepository() != null )
-        {
-            localRepositoryPath = configuration.getLocalRepository().getAbsolutePath();
-        }
-
-        if ( StringUtils.isEmpty( localRepositoryPath ) )
-        {
-            localRepositoryPath = settings.getLocalRepository();
-        }
-
-        if ( StringUtils.isEmpty( localRepositoryPath ) )
-        {
-            localRepositoryPath = MavenEmbedder.defaultUserLocalRepository.getAbsolutePath();
-        }
-
-        return createLocalRepository(
-            localRepositoryPath,
-            MavenEmbedder.DEFAULT_LOCAL_REPO_ID );
-    }
-
-    public ArtifactRepository createLocalRepository( String url,
-                                                     String repositoryId )
-        throws MavenEmbedderException
-    {
-        try
-        {
-            return createRepository(
-                canonicalFileUrl( url ),
-                repositoryId );
-        }
-        catch ( IOException e )
-        {
-            throw new MavenEmbedderException(
-                "Unable to resolve canonical path for local repository " + url,
-                e );
-        }
-    }
-
-    private String canonicalFileUrl( String url )
-        throws IOException
-    {
-        if ( !url.startsWith( "file:" ) )
-        {
-            url = "file://" + url;
-        }
-        else if ( url.startsWith( "file:" ) && !url.startsWith( "file://" ) )
-        {
-            url = "file://" + url.substring( "file:".length() );
-        }
-
-        // So now we have an url of the form file://<path>
-
-        // We want to eliminate any relative path nonsense and lock down the path so we
-        // need to fully resolve it before any sub-modules use the path. This can happen
-        // when you are using a custom settings.xml that contains a relative path entry
-        // for the local repository setting.
-
-        File localRepository = new File( url.substring( "file://".length() ) );
-
-        if ( !localRepository.isAbsolute() )
-        {
-            url = "file://" + localRepository.getCanonicalPath();
-        }
-
-        return url;
-    }
-
-    public ArtifactRepository createRepository( String url,
-                                                String repositoryId )
-    {
-        // snapshots vs releases
-        // offline = to turning the update policy off
-
-        //TODO: we'll need to allow finer grained creation of repositories but this will do for now
-
-        String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
-
-        String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
-
-        ArtifactRepositoryPolicy snapshotsPolicy =
-            new ArtifactRepositoryPolicy(
-                true,
-                updatePolicyFlag,
-                checksumPolicyFlag );
-
-        ArtifactRepositoryPolicy releasesPolicy =
-            new ArtifactRepositoryPolicy(
-                true,
-                updatePolicyFlag,
-                checksumPolicyFlag );
-
-        return artifactRepositoryFactory.createArtifactRepository(
-            repositoryId,
-            url,
-            defaultArtifactRepositoryLayout,
-            snapshotsPolicy,
-            releasesPolicy );
     }
 }