You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/07/14 14:00:05 UTC
svn commit: r793871 - in
/maven/components/trunk/maven-core/src/main/java/org/apache/maven:
lifecycle/ project/
Author: bentmann
Date: Tue Jul 14 12:00:05 2009
New Revision: 793871
URL: http://svn.apache.org/viewvc?rev=793871&view=rev
Log:
o Used project realm during dependency resolution
o Fixed NPEs
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=793871&r1=793870&r2=793871&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Tue Jul 14 12:00:05 2009
@@ -57,6 +57,7 @@
import org.apache.maven.repository.RepositorySystem;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.component.annotations.Requirement;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.logging.Logger;
@@ -140,6 +141,8 @@
goals = Collections.singletonList( goal );
}
}
+
+ ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
for ( MavenProject currentProject : session.getProjects() )
{
@@ -157,6 +160,12 @@
{
session.setCurrentProject( currentProject );
+ ClassRealm projectRealm = currentProject.getClassRealm();
+ if ( projectRealm != null )
+ {
+ Thread.currentThread().setContextClassLoader( projectRealm );
+ }
+
MavenExecutionPlan executionPlan = calculateExecutionPlan( session, goals.toArray( new String[] {} ) );
//TODO: once we have calculated the build plan then we should accurately be able to download
@@ -215,6 +224,8 @@
finally
{
session.setCurrentProject( null );
+
+ Thread.currentThread().setContextClassLoader( oldContextClassLoader );
}
}
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=793871&r1=793870&r2=793871&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Tue Jul 14 12:00:05 2009
@@ -72,8 +72,6 @@
@Requirement
private ResolutionErrorHandler resolutionErrorHandler;
-
- private MavenProject standaloneProject;
// ----------------------------------------------------------------------
// MavenProjectBuilder Implementation
@@ -143,6 +141,8 @@
project.setRemoteArtifactRepositories( listener.getRemoteRepositories() );
project.setPluginArtifactRepositories( listener.getPluginRepositories() );
+ project.setClassRealm( listener.getProjectRealm() );
+
try
{
if ( configuration.isProcessPlugins() )
@@ -252,11 +252,6 @@
public MavenProject buildStandaloneSuperProject( ProjectBuildingRequest config )
throws ProjectBuildingException
{
- if ( standaloneProject != null )
- {
- return standaloneProject;
- }
-
ModelBuildingRequest request = getModelBuildingRequest( config );
ModelBuildingResult result;
@@ -269,15 +264,20 @@
throw new ProjectBuildingException( "[standalone]", "Failed to build standalone project", e );
}
+ MavenProject standaloneProject;
+
try
{
standaloneProject = new MavenProject( result.getEffectiveModel(), repositorySystem, this, config );
}
catch ( InvalidRepositoryException e )
{
- // Not going to happen.
+ throw new IllegalStateException( e );
}
+ standaloneProject.setActiveProfiles( result.getActiveExternalProfiles() );
+ standaloneProject.setInjectedProfileIds( "external", getProfileIds( result.getActiveExternalProfiles() ) );
+
standaloneProject.setExecutionRoot( true );
return standaloneProject;
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java?rev=793871&r1=793870&r2=793871&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java Tue Jul 14 12:00:05 2009
@@ -98,11 +98,13 @@
List<ArtifactRepository> remoteRepositories )
throws ArtifactResolutionException
{
+ ClassRealm projectRealm = container.getContainerRealm();
+
Build build = model.getBuild();
if ( build == null )
{
- return null;
+ return projectRealm;
}
List<Plugin> extensionPlugins = new ArrayList<Plugin>();
@@ -117,7 +119,7 @@
if ( build.getExtensions().isEmpty() && extensionPlugins.isEmpty() )
{
- return null;
+ return projectRealm;
}
String realmId = model.getGroupId() + ':' + model.getArtifactId() + ':' + model.getVersion();
@@ -129,8 +131,6 @@
ClassWorld world = ( (MutablePlexusContainer) container ).getClassWorld();
- ClassRealm projectRealm;
-
synchronized ( world )
{
projectRealm = world.getClassRealm( realmId );
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=793871&r1=793870&r2=793871&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/MavenProject.java Tue Jul 14 12:00:05 2009
@@ -68,6 +68,7 @@
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
import org.apache.maven.repository.RepositorySystem;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -167,6 +168,8 @@
private Map<String, Object> context;
+ private ClassRealm classRealm;
+
//
public MavenProject()
@@ -380,16 +383,6 @@
{
this.parent = parent;
}
-
- public void setRemoteArtifactRepositories( List<ArtifactRepository> remoteArtifactRepositories )
- {
- this.remoteArtifactRepositories = remoteArtifactRepositories;
- }
-
- public List<ArtifactRepository> getRemoteArtifactRepositories()
- {
- return remoteArtifactRepositories;
- }
public boolean hasParent()
{
@@ -1346,6 +1339,21 @@
return build;
}
+ public void setRemoteArtifactRepositories( List<ArtifactRepository> remoteArtifactRepositories )
+ {
+ this.remoteArtifactRepositories = remoteArtifactRepositories;
+ }
+
+ public List<ArtifactRepository> getRemoteArtifactRepositories()
+ {
+ if ( remoteArtifactRepositories == null )
+ {
+ remoteArtifactRepositories = new ArrayList<ArtifactRepository>();
+ }
+
+ return remoteArtifactRepositories;
+ }
+
public void setPluginArtifactRepositories( List<ArtifactRepository> pluginArtifactRepositories )
{
this.pluginArtifactRepositories = pluginArtifactRepositories;
@@ -1357,6 +1365,11 @@
*/
public List<ArtifactRepository> getPluginArtifactRepositories()
{
+ if ( pluginArtifactRepositories == null )
+ {
+ pluginArtifactRepositories = new ArrayList<ArtifactRepository>();
+ }
+
return pluginArtifactRepositories;
}
@@ -1969,4 +1982,25 @@
}
return context.get( key );
}
+
+ /**
+ * Sets the project's class realm.
+ *
+ * @param classRealm The class realm hosting the build extensions of this project, may be {@code null}.
+ */
+ public void setClassRealm( ClassRealm classRealm )
+ {
+ this.classRealm = classRealm;
+ }
+
+ /**
+ * Gets the project's class realm. This class realm hosts the build extensions of the project.
+ *
+ * @return The project's class realm or {@code null}.
+ */
+ public ClassRealm getClassRealm()
+ {
+ return classRealm;
+ }
+
}
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java?rev=793871&r1=793870&r2=793871&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/ProjectBuildingHelper.java Tue Jul 14 12:00:05 2009
@@ -55,7 +55,7 @@
* @param model The model to create the project realm for, must not be {@code null}
* @param localRepository The local repository to use for artifact resolution, must not be {@code null}.
* @param remoteRepositories The remote repositories to use for artifact resolution, must not be {@code null}.
- * @return The project realm or {@code null} if no build extensions are present.
+ * @return The project realm, never {@code null}.
* @throws ArtifactResolutionException If any build extension could not be resolved.
*/
ClassRealm createProjectRealm( Model model, ArtifactRepository localRepository,