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