You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/04/18 23:50:55 UTC

cvs commit: maven-components/maven-core/src/main/java/org/apache/maven DefaultMaven.java

jdcasey     2005/04/18 14:50:55

  Modified:    maven-core/src/main/java/org/apache/maven/project
                        DefaultMavenProjectBuilder.java
               maven-core/src/test/java/org/apache/maven/plugin
                        PluginParameterExpressionEvaluatorTest.java
               maven-settings settings.mdo
               maven-core-it/it0015 pom.xml
               maven-core/src/main/java/org/apache/maven/cli MavenCli.java
               maven-core/src/main/java/org/apache/maven/settings
                        MavenSettingsBuilder.java
                        DefaultMavenSettingsBuilder.java
               maven-core/src/main/java/org/apache/maven/execution
                        MavenExecutionRequest.java MavenSession.java
                        DefaultMavenExecutionRequest.java
               maven-core/src/site/apt offline-mode.apt
               maven-core/src/main/java/org/apache/maven/plugin
                        DefaultPluginManager.java
               maven-core-it/it0015/src/main/scripts/org/apache/maven/it0015
                        it0015.mmld
               maven-core/src/test/java/org/apache/maven MavenTestCase.java
               maven-core/src/test/java/org/apache/maven/project
                        ProjectClasspathTest.java
               maven-core/src/main/java/org/apache/maven/artifact/repository
                        ArtifactRepositoryFactory.java
                        DefaultArtifactRepositoryFactory.java
               maven-core/src/main/java/org/apache/maven/lifecycle
                        DefaultLifecycleExecutor.java
               maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor
                        MojoDescriptor.java
               maven-core/src/main/java/org/apache/maven DefaultMaven.java
  Added:       maven-core/src/test/resources/local-repo marker.txt
  Removed:     maven-core/src/main/java/org/apache/maven/settings
                        MavenSettings.java
  Log:
  o Refactored the MavenSettings code into the settings.mdo/Settings class.
  
  o Added code to cache the active proxy and profile inside the Settings instance for quicker lookup.
  
  o Added a method to initialize a new active profile for a Settings instance in the event one didn't exist.
  
  o Started adding offline mode. So far, I've implemented:
  
    - Warning when a mojo declares a requirement for connectivity, but we're offline.
  
    - INFO message stating when maven is running in offline mode.
  
    - Addition to the Profile class in o.a.m.settings package to allow specification of offline mode by declaring: <offline>true</offline>
  
  Revision  Changes    Path
  1.66      +38 -4     maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
  
  Index: DefaultMavenProjectBuilder.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java,v
  retrieving revision 1.65
  retrieving revision 1.66
  diff -u -r1.65 -r1.66
  --- DefaultMavenProjectBuilder.java	8 Apr 2005 05:13:10 -0000	1.65
  +++ DefaultMavenProjectBuilder.java	18 Apr 2005 21:50:54 -0000	1.66
  @@ -39,8 +39,8 @@
   import org.apache.maven.project.path.PathTranslator;
   import org.apache.maven.project.validation.ModelValidationResult;
   import org.apache.maven.project.validation.ModelValidator;
  -import org.apache.maven.settings.MavenSettings;
   import org.apache.maven.settings.MavenSettingsBuilder;
  +import org.apache.maven.settings.Settings;
   import org.codehaus.plexus.PlexusConstants;
   import org.codehaus.plexus.PlexusContainer;
   import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
  @@ -125,6 +125,19 @@
   
           // Always cache files in the source tree over those in the repository
           modelCache.put( createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() ), model );
  +        
  +        Settings settings = null;
  +        
  +        try
  +        {
  +            settings = mavenSettingsBuilder.buildSettings();
  +        }
  +        catch ( Exception e )
  +        {
  +            throw new ProjectBuildingException( "Cannot read settings.", e );
  +        }
  +        
  +        boolean systemOnline = !settings.getActiveProfile().isOffline();
   
           MavenProject project = build( model, localRepository, resolveDependencies );
   
  @@ -146,6 +159,17 @@
                                                ArtifactRepository localRepository )
           throws ProjectBuildingException
       {
  +        Settings settings = null;
  +        
  +        try
  +        {
  +            settings = mavenSettingsBuilder.buildSettings();
  +        }
  +        catch ( Exception e )
  +        {
  +            throw new ProjectBuildingException( "Cannot read settings.", e );
  +        }
  +        
           Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
   
           return build( model, localRepository, false );
  @@ -279,6 +303,16 @@
   
           if ( resolveDependencies )
           {
  +            Settings settings;
  +            try
  +            {
  +                settings = mavenSettingsBuilder.buildSettings();
  +            }
  +            catch ( Exception e )
  +            {
  +                throw new ProjectBuildingException( "Cannot read settings.", e );
  +            }
  +            
               MavenMetadataSource sourceReader = new MavenMetadataSource( artifactResolver, this );
   
               ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getArtifacts(),
  @@ -350,7 +384,7 @@
       private List buildArtifactRepositories( List repositories )
           throws ProjectBuildingException
       {
  -        MavenSettings settings = null;
  +        Settings settings = null;
   
           try
           {
  @@ -398,7 +432,7 @@
       {
           List remotePluginRepositories = new ArrayList();
   
  -        MavenSettings settings = mavenSettingsBuilder.buildSettings();
  +        Settings settings = mavenSettingsBuilder.buildSettings();
   
           for ( Iterator it = pluginRepositories.iterator(); it.hasNext(); )
           {
  @@ -438,7 +472,7 @@
               return null;
           }
   
  -        MavenSettings settings = mavenSettingsBuilder.buildSettings();
  +        Settings settings = mavenSettingsBuilder.buildSettings();
   
           String repoLayoutId = dmRepo.getLayout();
   
  
  
  
  1.12      +4 -4      maven-components/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
  
  Index: PluginParameterExpressionEvaluatorTest.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- PluginParameterExpressionEvaluatorTest.java	15 Apr 2005 05:29:00 -0000	1.11
  +++ PluginParameterExpressionEvaluatorTest.java	18 Apr 2005 21:50:54 -0000	1.12
  @@ -9,7 +9,7 @@
   import org.apache.maven.monitor.event.DefaultEventDispatcher;
   import org.apache.maven.monitor.logging.DefaultLog;
   import org.apache.maven.project.MavenProject;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   import org.codehaus.plexus.PlexusContainer;
   import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
   
  @@ -58,7 +58,7 @@
           MavenProject project = new MavenProject( model );
           project.setFile( new File( "pom.xml" ).getCanonicalFile() );
   
  -        MavenSession session = new MavenSession( project, container, mgr, new MavenSettings(), repo,
  +        MavenSession session = new MavenSession( project, container, mgr, new Settings(), repo,
                                                    new DefaultEventDispatcher(), new DefaultLog( container.getLogger() ),
                                                    Collections.EMPTY_LIST );
   
  @@ -86,7 +86,7 @@
   
           PlexusContainer container = getContainer();
           MavenSession session = new MavenSession( null, // don't need a project for this test.
  -                                                 container, mgr, new MavenSettings(), repo,
  +                                                 container, mgr, new Settings(), repo,
                                                    new DefaultEventDispatcher(), new DefaultLog( container.getLogger() ),
                                                    Collections.EMPTY_LIST );
   
  @@ -107,7 +107,7 @@
   
           PlexusContainer container = getContainer();
           MavenSession session = new MavenSession( null, // don't need a project for this test.
  -                                                 container, mgr, new MavenSettings(), repo,
  +                                                 container, mgr, new Settings(), repo,
                                                    new DefaultEventDispatcher(), new DefaultLog( container.getLogger() ),
                                                    Collections.EMPTY_LIST );
   
  
  
  
  1.3       +120 -7    maven-components/maven-settings/settings.mdo
  
  Index: settings.mdo
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-settings/settings.mdo,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- settings.mdo	12 Apr 2005 01:45:21 -0000	1.2
  +++ settings.mdo	18 Apr 2005 21:50:54 -0000	1.3
  @@ -17,7 +17,8 @@
         <version>1.0.0</version>
         <description>Root element of the user configuration file.</description>
         <fields>
  -        <field>
  +        <!-- [JC] Not ready to use yet, so I'm making if unavailable for now. -->
  +        <!-- field>
             <name>jdks</name>
             <version>1.0.0</version>
             <description><![CDATA[
  @@ -31,7 +32,7 @@
               <type>Jdk</type>
               <multiplicity>*</multiplicity>
             </association>
  -        </field>
  +        </field -->
           <field>
             <name>proxies</name>
             <version>1.0.0</version>
  @@ -77,10 +78,113 @@
             </association>
           </field>
         </fields>
  -      <codeSegments/>
  +      <codeSegments>
  +        <codeSegment>
  +          <version>1.0.0</version>
  +          <code><![CDATA[
  +    private Profile activeProfile;
  +    private Proxy activeProxy;
  +    
  +    public synchronized void initializeActiveProfile(String localRepository)
  +    {
  +        if(getActiveProfile() == null)
  +        {
  +          Profile profile = new Profile();
  +          profile.setLocalRepository(localRepository);
  +          profile.setActive(true);
  +          
  +          addProfile(profile);
  +          activeProfile = profile;
  +        }
  +    }
  +    
  +    public synchronized Profile getActiveProfile()
  +    {
  +        if(activeProfile == null)
  +        {
  +            List profiles = getProfiles();
  +            if ( profiles != null && !profiles.isEmpty() )
  +            {
  +                if ( profiles.size() > 1 )
  +                {
  +                    for ( Iterator it = profiles.iterator(); it.hasNext(); )
  +                    {
  +                        Profile profile = (Profile) it.next();
  +                        if ( profile.isActive() )
  +                        {
  +                            activeProfile = profile;
  +                            break;
  +                        }
  +                    }
  +                }
  +                else
  +                {
  +                    // If we only have one profile, use it as the active one.
  +                    activeProfile = (Profile) profiles.get( 0 );
  +                }
  +            }
  +        }
  +        
  +        return activeProfile;
  +    }
  +
  +    public synchronized Proxy getActiveProxy()
  +    {
  +        if(activeProxy == null)
  +        {
  +            List proxies = getProxies();
  +            if ( proxies != null && !proxies.isEmpty() )
  +            {
  +                if ( proxies.size() > 1 )
  +                {
  +                    for ( Iterator it = proxies.iterator(); it.hasNext(); )
  +                    {
  +                        Proxy proxy = (Proxy) it.next();
  +                        if ( proxy.isActive() )
  +                        {
  +                            activeProxy = proxy;
  +                            break;
  +                        }
  +                    }
  +                }
  +                else
  +                {
  +                    // If we only have one proxy, use it as the active one.
  +                    activeProxy = (Proxy) proxies.get( 0 );
  +                }
  +            }
  +        }
  +
  +        return activeProxy;
  +    }
  +    
  +    public Server getServer( String serverId )
  +    {
  +        Server match = null;
  +
  +        List servers = getServers();
  +        if ( servers != null && serverId != null )
  +        {
  +            for ( Iterator it = servers.iterator(); it.hasNext(); )
  +            {
  +                Server server = (Server) it.next();
  +                if ( serverId.equals( server.getId() ) )
  +                {
  +                    match = server;
  +                    break;
  +                }
  +            }
  +        }
  +
  +        return match;
  +    }
  +        ]]></code>
  +        </codeSegment>
  +      </codeSegments>
       </class>
       <!-- @todo: is any of this too CVS specific? Investigate other SCMs -->
  -    <class>
  +    <!-- [JC] Commenting out until we're ready to use it... -->
  +    <!-- class>
         <name>Jdk</name>
         <version>1.0.0</version>
         <description><![CDATA[Describes one Java environment]]></description>
  @@ -108,7 +212,7 @@
             <type>String</type>
           </field>
         </fields>
  -    </class>
  +    </class -->
       <class>
         <name>Proxy</name>
         <version>1.0.0</version>
  @@ -226,12 +330,21 @@
             <description><![CDATA[The local repository.]]></description>
             <type>String</type>
           </field>
  -        <field>
  +        <!-- [JC] Not ready to use yet, so I'm making if unavailable for now. -->
  +        <!-- field>
             <name>passwordStore</name>
             <version>1.0.0</version>
  -          <required>true</required>
  +          <required>false</required>
             <description><![CDATA[The keystore used to store passwords.]]></description>
             <type>String</type>
  +        </field -->
  +        <field>
  +          <name>offline</name>
  +          <version>1.0.0</version>
  +          <required>false</required>
  +          <description><![CDATA[Indicate whether maven should operate in offline mode full-time.]]></description>
  +          <type>boolean</type>
  +          <defaultValue>false</defaultValue>
           </field>
         </fields>
       </class>
  
  
  
  1.11      +1 -1      maven-components/maven-core-it/it0015/pom.xml
  
  Index: pom.xml
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core-it/it0015/pom.xml,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- pom.xml	13 Apr 2005 05:11:48 -0000	1.10
  +++ pom.xml	18 Apr 2005 21:50:54 -0000	1.11
  @@ -18,7 +18,7 @@
       <dependency>
         <groupId>marmalade</groupId>
         <artifactId>marmalade-core</artifactId>
  -      <version>1.0-alpha-2</version>
  +      <version>1.0-alpha-3-SNAPSHOT</version>
       </dependency>
     </dependencies>
     <build>
  
  
  
  1.31      +12 -35    maven-components/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java
  
  Index: MavenCli.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/cli/MavenCli.java,v
  retrieving revision 1.30
  retrieving revision 1.31
  diff -u -r1.30 -r1.31
  --- MavenCli.java	8 Apr 2005 07:55:05 -0000	1.30
  +++ MavenCli.java	18 Apr 2005 21:50:54 -0000	1.31
  @@ -25,7 +25,6 @@
   import org.apache.commons.cli.ParseException;
   import org.apache.commons.cli.PosixParser;
   import org.apache.maven.Maven;
  -import org.apache.maven.MavenConstants;
   import org.apache.maven.artifact.manager.WagonManager;
   import org.apache.maven.artifact.repository.ArtifactRepository;
   import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
  @@ -41,7 +40,7 @@
   import org.apache.maven.monitor.event.EventDispatcher;
   import org.apache.maven.monitor.logging.DefaultLog;
   import org.apache.maven.plugin.Plugin;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   import org.apache.maven.settings.MavenSettingsBuilder;
   import org.apache.maven.settings.Profile;
   import org.codehaus.classworlds.ClassWorld;
  @@ -65,8 +64,6 @@
   {
       public static final String POMv4 = "pom.xml";
   
  -    public static final String userHome = System.getProperty( "user.home" );
  -
       public static File userDir = new File( System.getProperty( "user.dir" ) );
   
       public static int main( String[] args, ClassWorld classWorld )
  @@ -153,17 +150,23 @@
   
           MavenSettingsBuilder settingsBuilder = (MavenSettingsBuilder) embedder.lookup( MavenSettingsBuilder.ROLE );
   
  -        MavenSettings settings = settingsBuilder.buildSettings();
  +        Settings settings = settingsBuilder.buildSettings();
   
           ArtifactRepositoryFactory artifactRepositoryFactory = (ArtifactRepositoryFactory) embedder.lookup(
               ArtifactRepositoryFactory.ROLE );
   
  +        
  +        boolean snapshotPolicySet = false;
           if ( commandLine.hasOption( CLIManager.OFFLINE ) )
           {
  +            settings.getActiveProfile().setOffline(true);
  +            
               // TODO: this will still check to download if the artifact does not exist locally, instead of failing as it should in offline mode
               artifactRepositoryFactory.setGlobalSnapshotPolicy( ArtifactRepository.SNAPSHOT_POLICY_NEVER );
  +            snapshotPolicySet = true;
           }
  -        else if ( commandLine.hasOption( CLIManager.UPDATE_SNAPSHOTS ) )
  +        
  +        if ( !snapshotPolicySet && commandLine.hasOption( CLIManager.UPDATE_SNAPSHOTS ) )
           {
               artifactRepositoryFactory.setGlobalSnapshotPolicy( ArtifactRepository.SNAPSHOT_POLICY_ALWAYS );
           }
  @@ -352,44 +355,18 @@
       //
       // ----------------------------------------------------------------------
   
  -    protected static File getUserConfigurationDirectory()
  -    {
  -        File mavenUserConfigurationDirectory = new File( userHome, MavenConstants.MAVEN_USER_CONFIGURATION_DIRECTORY );
  -        if ( !mavenUserConfigurationDirectory.exists() )
  -        {
  -            if ( !mavenUserConfigurationDirectory.mkdirs() )
  -            {
  -                //throw a configuration exception
  -            }
  -        }
  -        return mavenUserConfigurationDirectory;
  -    }
  -
  -    protected static ArtifactRepository getLocalRepository( MavenSettings settings,
  +    protected static ArtifactRepository getLocalRepository( Settings settings,
                                                               ArtifactRepositoryFactory repoFactory,
                                                               ArtifactRepositoryLayout repositoryLayout )
           throws Exception
       {
           Profile profile = settings.getActiveProfile();
   
  -        String localRepository = null;
  -        if ( profile != null )
  -        {
  -            localRepository = profile.getLocalRepository();
  -        }
  -
  -        if ( localRepository == null )
  -        {
  -            File userConfigurationDirectory = getUserConfigurationDirectory();
  -            localRepository =
  -                new File( userConfigurationDirectory, MavenConstants.MAVEN_REPOSITORY ).getAbsolutePath();
  -        }
  -
           Repository repo = new Repository();
   
           repo.setId( "local" );
   
  -        repo.setUrl( "file://" + localRepository );
  +        repo.setUrl( "file://" + profile.getLocalRepository() );
   
           return repoFactory.createArtifactRepository( repo, settings, repositoryLayout );
       }
  
  
  
  1.3       +2 -2      maven-components/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java
  
  Index: MavenSettingsBuilder.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/settings/MavenSettingsBuilder.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- MavenSettingsBuilder.java	29 Mar 2005 17:06:30 -0000	1.2
  +++ MavenSettingsBuilder.java	18 Apr 2005 21:50:54 -0000	1.3
  @@ -25,6 +25,6 @@
       String ROLE = MavenSettingsBuilder.class.getName();
   
       // TODO: Don't throw Exception.
  -    MavenSettings buildSettings()
  +    Settings buildSettings()
           throws Exception;
   }
  
  
  
  1.5       +30 -7     maven-components/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
  
  Index: DefaultMavenSettingsBuilder.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultMavenSettingsBuilder.java	29 Mar 2005 19:53:27 -0000	1.4
  +++ DefaultMavenSettingsBuilder.java	18 Apr 2005 21:50:54 -0000	1.5
  @@ -19,6 +19,7 @@
   import java.io.File;
   import java.io.FileReader;
   
  +import org.apache.maven.MavenConstants;
   import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
   
   import org.codehaus.plexus.logging.AbstractLogEnabled;
  @@ -33,6 +34,8 @@
       extends AbstractLogEnabled
       implements MavenSettingsBuilder, Initializable
   {
  +    public static final String userHome = System.getProperty( "user.home" );
  +
       /** @configuration */
       private String settingsPath;
   
  @@ -55,9 +58,11 @@
       // ----------------------------------------------------------------------
   
       // TODO: don't throw Exception.
  -    public MavenSettings buildSettings()
  +    public Settings buildSettings()
           throws Exception
       {
  +        Settings settings = null;
  +        
           if ( settingsFile.exists() && settingsFile.isFile() )
           {
               FileReader reader = null;
  @@ -67,21 +72,39 @@
   
                   SettingsXpp3Reader modelReader = new SettingsXpp3Reader();
   
  -                Settings model = modelReader.read( reader );
  -
  -                return new MavenSettings( model );
  +                settings = modelReader.read( reader );
               }
               finally
               {
                   IOUtil.close( reader );
               }
           }
  -        else
  +        
  +        if(settings == null)
           {
               getLogger().debug( "Settings model not found. Creating empty instance of MavenSettings." );
   
  -            return new MavenSettings();
  +            settings = new Settings();
  +        }
  +        
  +        if(settings.getActiveProfile() == null)
  +        {
  +            File mavenUserConfigurationDirectory = new File( userHome, MavenConstants.MAVEN_USER_CONFIGURATION_DIRECTORY );
  +            if ( !mavenUserConfigurationDirectory.exists() )
  +            {
  +                if ( !mavenUserConfigurationDirectory.mkdirs() )
  +                {
  +                    //throw a configuration exception
  +                }
  +            }
  +
  +            String localRepository =
  +                new File( mavenUserConfigurationDirectory, MavenConstants.MAVEN_REPOSITORY ).getAbsolutePath();
  +            
  +            settings.initializeActiveProfile( localRepository );
           }
  +        
  +        return settings;
       }
   
       private File getSettingsFile()
  
  
  
  1.14      +3 -3      maven-components/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java
  
  Index: MavenExecutionRequest.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/execution/MavenExecutionRequest.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- MavenExecutionRequest.java	16 Mar 2005 06:29:33 -0000	1.13
  +++ MavenExecutionRequest.java	18 Apr 2005 21:50:54 -0000	1.14
  @@ -21,7 +21,7 @@
   import org.apache.maven.monitor.event.EventDispatcher;
   import org.apache.maven.monitor.event.EventMonitor;
   import org.apache.maven.monitor.logging.Log;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   
   import java.util.List;
   
  @@ -49,7 +49,7 @@
   
       EventDispatcher getEventDispatcher();
   
  -    MavenSettings getSettings();
  +    Settings getSettings();
   
       String getBaseDirectory();
   
  
  
  
  1.12      +5 -5      maven-components/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java
  
  Index: MavenSession.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/execution/MavenSession.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- MavenSession.java	21 Mar 2005 08:18:33 -0000	1.11
  +++ MavenSession.java	18 Apr 2005 21:50:54 -0000	1.12
  @@ -22,7 +22,7 @@
   import org.apache.maven.monitor.logging.Log;
   import org.apache.maven.plugin.PluginManager;
   import org.apache.maven.project.MavenProject;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   import org.codehaus.plexus.PlexusContainer;
   import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
   import org.codehaus.plexus.util.dag.CycleDetectedException;
  @@ -59,10 +59,10 @@
   
       private Log log;
   
  -    private final MavenSettings settings;
  +    private final Settings settings;
   
       public MavenSession( MavenProject project, PlexusContainer container, PluginManager pluginManager,
  -                        MavenSettings settings, ArtifactRepository localRepository, EventDispatcher eventDispatcher,
  +                        Settings settings, ArtifactRepository localRepository, EventDispatcher eventDispatcher,
                           Log log, List goals )
       {
           this.project = project;
  @@ -138,7 +138,7 @@
           return log;
       }
   
  -    public MavenSettings getSettings()
  +    public Settings getSettings()
       {
           return settings;
       }
  
  
  
  1.5       +5 -5      maven-components/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java
  
  Index: DefaultMavenExecutionRequest.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/execution/DefaultMavenExecutionRequest.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- DefaultMavenExecutionRequest.java	16 Mar 2005 06:29:33 -0000	1.4
  +++ DefaultMavenExecutionRequest.java	18 Apr 2005 21:50:54 -0000	1.5
  @@ -21,7 +21,7 @@
   import org.apache.maven.monitor.event.EventDispatcher;
   import org.apache.maven.monitor.event.EventMonitor;
   import org.apache.maven.monitor.logging.Log;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   
   import java.util.List;
   
  @@ -47,13 +47,13 @@
   
       private final EventDispatcher eventDispatcher;
   
  -    private final MavenSettings settings;
  +    private final Settings settings;
   
       private final String baseDirectory;
   
       private boolean recursive = true;
   
  -    public DefaultMavenExecutionRequest( ArtifactRepository localRepository, MavenSettings settings,
  +    public DefaultMavenExecutionRequest( ArtifactRepository localRepository, Settings settings,
                                            EventDispatcher eventDispatcher, List goals, List files, String baseDirectory )
       {
           this.localRepository = localRepository;
  @@ -69,7 +69,7 @@
           this.baseDirectory = baseDirectory;
       }
   
  -    public MavenSettings getSettings()
  +    public Settings getSettings()
       {
           return settings;
       }
  
  
  
  1.4       +9 -1      maven-components/maven-core/src/site/apt/offline-mode.apt
  
  Index: offline-mode.apt
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/site/apt/offline-mode.apt,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- offline-mode.apt	11 Apr 2005 21:04:17 -0000	1.3
  +++ offline-mode.apt	18 Apr 2005 21:50:55 -0000	1.4
  @@ -123,7 +123,9 @@
   
       It is not possible to determine whether a file-based location will
       be available except on a case-by-case basis (or a root-url by
  -    root-url basis).
  +    root-url basis). We may want to move the offline sensitivity entirely to
  +    Maven-Artifact, below, so we can be smarter about testing filesystem-based
  +    repositories, etc.
   
     * If not otherwise specified, all other wagons are assumed to be
       remote-only, and are therefore sensitive to offline mode.
  @@ -131,6 +133,12 @@
   ** Maven-Artifact
   
     This is wholly dependent on Maven-Wagon, above.
  +  
  +  We could possibly use a flag on a particular Wagon to see whether it supports
  +  offline mode, and then test to see if the file-based basedir for an aritfact
  +  repository works...if it doesn't work, we can mark that repository offline...
  +  
  +  OTOH, all offline-mode checks can probably be run from Wagon-based APIs.
   
   ** Maven-SCM
   
  
  
  
  1.82      +2 -0      maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
  
  Index: DefaultPluginManager.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java,v
  retrieving revision 1.81
  retrieving revision 1.82
  diff -u -r1.81 -r1.82
  --- DefaultPluginManager.java	15 Apr 2005 05:29:00 -0000	1.81
  +++ DefaultPluginManager.java	18 Apr 2005 21:50:55 -0000	1.82
  @@ -741,6 +741,8 @@
   
           ArtifactFilter filter = new ScopeArtifactFilter( scope );
   
  +        boolean systemOnline = !context.getSettings().getActiveProfile().isOffline();
  +        
           ArtifactResolutionResult result = artifactResolver.resolveTransitively( project.getArtifacts(),
                                                                                   context.getRemoteRepositories(),
                                                                                   context.getLocalRepository(),
  
  
  
  1.1                  maven-components/maven-core/src/test/resources/local-repo/marker.txt
  
  Index: marker.txt
  ===================================================================
  this is just a marker file.
  
  
  1.2       +0 -2      maven-components/maven-core-it/it0015/src/main/scripts/org/apache/maven/it0015/it0015.mmld
  
  Index: it0015.mmld
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core-it/it0015/src/main/scripts/org/apache/maven/it0015/it0015.mmld,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- it0015.mmld	1 Mar 2005 02:43:22 -0000	1.1
  +++ it0015.mmld	18 Apr 2005 21:50:55 -0000	1.2
  @@ -1,5 +1,3 @@
  -<?xml version="1.0"?>
  -
   <mojo xmlns="marmalade:mojo">
     <metadata>
       <id>it0015</id>
  
  
  
  1.21      +4 -2      maven-components/maven-core/src/test/java/org/apache/maven/MavenTestCase.java
  
  Index: MavenTestCase.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/MavenTestCase.java,v
  retrieving revision 1.20
  retrieving revision 1.21
  diff -u -r1.20 -r1.21
  --- MavenTestCase.java	24 Mar 2005 04:44:12 -0000	1.20
  +++ MavenTestCase.java	18 Apr 2005 21:50:55 -0000	1.21
  @@ -53,7 +53,9 @@
   
       protected File getLocalRepositoryPath()
       {
  -        return getTestFile( "src/test/resources/local-repo" );
  +        File markerFile =  getFileForClasspathResource( "local-repo/marker.txt" );
  +        
  +        return markerFile.getAbsoluteFile().getParentFile();
       }
   
       protected File getFileForClasspathResource( String resource )
  
  
  
  1.9       +2 -2      maven-components/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
  
  Index: ProjectClasspathTest.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/test/java/org/apache/maven/project/ProjectClasspathTest.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- ProjectClasspathTest.java	15 Apr 2005 07:31:40 -0000	1.8
  +++ ProjectClasspathTest.java	18 Apr 2005 21:50:55 -0000	1.9
  @@ -30,12 +30,12 @@
       extends MavenTestCase
   {
   
  -    private String dir = "src/test/resources/projects/scope/";
  +    private String dir = "projects/scope/";
   
       public void testProjectClasspath()
           throws Exception
       {
  -        File f = getTestFile( dir + "project-with-scoped-dependencies.xml" );
  +        File f = getFileForClasspathResource( dir + "project-with-scoped-dependencies.xml" );
   
           // XXX: Because this test fails, we resort to crude reflection hacks, see PLX-108 for the solution
   //        assertEquals( ProjectClasspathArtifactResolver.class, getContainer().lookup( ArtifactResolver.ROLE ).getClass() );
  
  
  
  1.6       +2 -2      maven-components/maven-core/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java
  
  Index: ArtifactRepositoryFactory.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/artifact/repository/ArtifactRepositoryFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ArtifactRepositoryFactory.java	30 Mar 2005 03:30:08 -0000	1.5
  +++ ArtifactRepositoryFactory.java	18 Apr 2005 21:50:55 -0000	1.6
  @@ -18,7 +18,7 @@
   
   import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
   import org.apache.maven.model.Repository;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   
   /**
    * @author jdcasey
  @@ -28,7 +28,7 @@
   
       public static final String ROLE = ArtifactRepositoryFactory.class.getName();
   
  -    public ArtifactRepository createArtifactRepository( Repository modelRepository, MavenSettings settings,
  +    public ArtifactRepository createArtifactRepository( Repository modelRepository, Settings settings,
                                                           ArtifactRepositoryLayout repositoryLayout );
   
       void setGlobalSnapshotPolicy( String snapshotPolicy );
  
  
  
  1.6       +2 -2      maven-components/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java
  
  Index: DefaultArtifactRepositoryFactory.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/artifact/repository/DefaultArtifactRepositoryFactory.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- DefaultArtifactRepositoryFactory.java	30 Mar 2005 03:30:08 -0000	1.5
  +++ DefaultArtifactRepositoryFactory.java	18 Apr 2005 21:50:55 -0000	1.6
  @@ -18,7 +18,7 @@
   
   import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
   import org.apache.maven.model.Repository;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   import org.apache.maven.settings.Server;
   import org.apache.maven.wagon.authentication.AuthenticationInfo;
   import org.codehaus.plexus.logging.AbstractLogEnabled;
  @@ -33,7 +33,7 @@
   {
       private String globalSnapshotPolicy = null;
   
  -    public ArtifactRepository createArtifactRepository( Repository modelRepository, MavenSettings settings,
  +    public ArtifactRepository createArtifactRepository( Repository modelRepository, Settings settings,
                                                           ArtifactRepositoryLayout repositoryLayout )
       {
           Server repoProfile = null;
  
  
  
  1.35      +19 -10    maven-components/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
  
  Index: DefaultLifecycleExecutor.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- DefaultLifecycleExecutor.java	15 Apr 2005 06:16:47 -0000	1.34
  +++ DefaultLifecycleExecutor.java	18 Apr 2005 21:50:55 -0000	1.35
  @@ -32,6 +32,7 @@
   import org.apache.maven.plugin.descriptor.PluginDescriptor;
   import org.apache.maven.project.MavenProject;
   import org.apache.maven.project.MavenProjectBuilder;
  +import org.apache.maven.settings.Settings;
   import org.codehaus.plexus.logging.AbstractLogEnabled;
   import org.codehaus.plexus.logging.Logger;
   
  @@ -222,17 +223,17 @@
        * phase in the lifecycle and if it does place it at the end of the list of goals
        * to execute for that given phase.
        *
  -     * @param mavenSession
  +     * @param session
        * @throws Exception
        */
  -    private void processPluginPhases( Plugin plugin, MavenSession mavenSession, Map phaseMap )
  +    private void processPluginPhases( Plugin plugin, MavenSession session, Map phaseMap )
           throws Exception
       {
           String groupId = plugin.getGroupId();
   
           String artifactId = plugin.getArtifactId();
   
  -        pluginManager.verifyPlugin( groupId, artifactId, mavenSession );
  +        pluginManager.verifyPlugin( groupId, artifactId, session );
   
           PluginDescriptor pluginDescriptor = pluginManager.getPluginDescriptor( groupId, artifactId );
   
  @@ -264,7 +265,7 @@
                                                              "' was declared in pom.xml, but does not exist" );
                   }
   
  -                configureMojo( mojoDescriptor, phaseMap );
  +                configureMojo( mojoDescriptor, phaseMap, session.getSettings() );
               }
           }
           else
  @@ -273,7 +274,7 @@
               {
                   MojoDescriptor mojoDescriptor = (MojoDescriptor) j.next();
   
  -                configureMojo( mojoDescriptor, phaseMap );
  +                configureMojo( mojoDescriptor, phaseMap, session.getSettings() );
               }
           }
       }
  @@ -285,13 +286,21 @@
        *
        * @param mojoDescriptor
        */
  -    private void configureMojo( MojoDescriptor mojoDescriptor, Map phaseMap )
  +    private void configureMojo( MojoDescriptor mojoDescriptor, Map phaseMap, Settings settings )
       {
  -        if ( mojoDescriptor.getPhase() != null )
  +        if( settings.getActiveProfile().isOffline() && mojoDescriptor.requiresOnline() )
  +        {
  +            String goal = mojoDescriptor.getGoal();
  +            getLogger().warn( goal + " requires online mode, but maven is currently offline. Disabling " + goal + "." );
  +        }
  +        else
           {
  -            Phase phase = (Phase) phaseMap.get( mojoDescriptor.getPhase() );
  +            if ( mojoDescriptor.getPhase() != null )
  +            {
  +                Phase phase = (Phase) phaseMap.get( mojoDescriptor.getPhase() );
   
  -            phase.getGoals().add( mojoDescriptor.getId() );
  +                phase.getGoals().add( mojoDescriptor.getId() );
  +            }
           }
       }
   
  @@ -357,7 +366,7 @@
               }
           }
   
  -        configureMojo( mojoDescriptor, phaseMap );
  +        configureMojo( mojoDescriptor, phaseMap, session.getSettings() );
       }
   
       private void executePhase( String phase, MavenSession session, Map phaseMap )
  
  
  
  1.4       +24 -0     maven-components/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java
  
  Index: MojoDescriptor.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/MojoDescriptor.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- MojoDescriptor.java	15 Apr 2005 04:52:31 -0000	1.3
  +++ MojoDescriptor.java	18 Apr 2005 21:50:55 -0000	1.4
  @@ -66,6 +66,8 @@
       private String requiresDependencyResolution = null;
   
       private boolean requiresProject = true;
  +    
  +    private boolean requiresOnline = false;
   
       private String language = DEFAULT_LANGUAGE;
   
  @@ -180,6 +182,28 @@
           return requiresProject;
       }
   
  +    // ----------------------------------------------------------------------
  +    // Online vs. Offline requirement
  +    // ----------------------------------------------------------------------
  +
  +    public void setRequiresOnline( boolean requiresOnline )
  +    {
  +        this.requiresOnline = requiresOnline;
  +    }
  +
  +    // blech! this isn't even intelligible as a method name. provided for 
  +    // consistency...
  +    public boolean isRequiresOnline()
  +    {
  +        return requiresOnline;
  +    }
  +
  +    // more english-friendly method...keep the code clean! :)
  +    public boolean requiresOnline()
  +    {
  +        return requiresOnline;
  +    }
  +
       public void setRequirements( List requirements )
       {
           this.requirements = requirements;
  
  
  
  1.46      +14 -3     maven-components/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
  
  Index: DefaultMaven.java
  ===================================================================
  RCS file: /home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/DefaultMaven.java,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- DefaultMaven.java	8 Apr 2005 04:48:04 -0000	1.45
  +++ DefaultMaven.java	18 Apr 2005 21:50:55 -0000	1.46
  @@ -32,7 +32,7 @@
   import org.apache.maven.project.MavenProjectBuilder;
   import org.apache.maven.project.ProjectBuildingException;
   import org.apache.maven.reactor.ReactorException;
  -import org.apache.maven.settings.MavenSettings;
  +import org.apache.maven.settings.Settings;
   import org.apache.maven.settings.Proxy;
   import org.codehaus.plexus.PlexusConstants;
   import org.codehaus.plexus.PlexusContainer;
  @@ -76,6 +76,8 @@
       protected PlexusContainer container;
   
       protected ArtifactRepositoryFactory artifactRepositoryFactory;
  +    
  +    protected WagonManager wagonManager;
   
       // ----------------------------------------------------------------------
       // Project execution
  @@ -87,12 +89,18 @@
           {
               throw new ReactorException( "You must specify at least one goal. Try 'install'." );
           }
  +        
  +        if( request.getSettings().getActiveProfile().isOffline() )
  +        {
  +            getLogger().info( "Maven is running in offline mode." );
  +        }
   
           EventDispatcher dispatcher = request.getEventDispatcher();
           String event = MavenEvents.REACTOR_EXECUTION;
   
           // TODO: goals are outer loop
           dispatcher.dispatchStart( event, request.getBaseDirectory() );
  +        
           try
           {
               List projects;
  @@ -285,12 +293,15 @@
       /**
        * @todo [BP] this might not be required if there is a better way to pass
        * them in. It doesn't feel quite right.
  +     * 
  +     * @todo [JC] we should at least provide a mapping of protocol-to-proxy for
  +     * the wagons, shouldn't we?
        */
       private void resolveParameters( MavenExecutionRequest request ) throws ComponentLookupException
       {
           WagonManager wagonManager = (WagonManager) container.lookup( WagonManager.ROLE );
   
  -        MavenSettings settings = request.getSettings();
  +        Settings settings = request.getSettings();
   
           Proxy proxy = settings.getActiveProxy();
   
  
  
  

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