mirror of
https://github.com/apache/maven.git
synced 2025-02-28 05:39:15 +00:00
Pushing project workspace usage out of ProjectCacheAspect into DefaultMavenProjectBuilder and DefaultModelLineageBuilder, to make it easier to understand how these critical pieces of logic execute relative to other pieces of the project-building process, such as managed-dependency merging.
git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@636023 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
b8042967e0
commit
e7eefe0b3f
@ -1,225 +0,0 @@
|
||||
package org.apache.maven.project.aspect;
|
||||
|
||||
import org.apache.maven.model.Model;
|
||||
import org.apache.maven.model.Parent;
|
||||
import org.apache.maven.artifact.Artifact;
|
||||
import org.apache.maven.project.DefaultMavenProjectBuilder;
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.apache.maven.project.ProjectBuildingException;
|
||||
import org.apache.maven.project.build.model.ModelLineage;
|
||||
import org.apache.maven.project.build.model.DefaultModelLineageBuilder;
|
||||
import org.apache.maven.project.build.model.ModelAndFile;
|
||||
|
||||
import org.codehaus.plexus.util.StringUtils;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public privileged aspect ProjectCacheAspect
|
||||
{
|
||||
|
||||
private pointcut mavenProjectBuilder( DefaultMavenProjectBuilder builder ):
|
||||
execution( * DefaultMavenProjectBuilder+.*( .. ) )
|
||||
&& this( builder );
|
||||
|
||||
// private pointcut setMavenProjectParent( MavenProject child, MavenProject parent, DefaultMavenProjectBuilder builder ):
|
||||
// call( void MavenProject.setParent( MavenProject ) )
|
||||
// && cflow( mavenProjectBuilder( builder ) )
|
||||
// && within( DefaultMavenProjectBuilder+ )
|
||||
// && !within( ProjectCacheAspect )
|
||||
// && args( parent )
|
||||
// && target( child );
|
||||
//
|
||||
// void around( MavenProject child, MavenProject parent, DefaultMavenProjectBuilder builder ): setMavenProjectParent( child, parent, builder )
|
||||
// {
|
||||
// // if the incoming project is null, don't get involved.
|
||||
// if ( parent != null )
|
||||
// {
|
||||
// String key = createCacheKey( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
|
||||
//
|
||||
// builder.logger.debug( "Checking cache for parent project instance: " + key );
|
||||
// MavenProject cachedProject = (MavenProject) builder.projectCache.get( key );
|
||||
//
|
||||
// // if the cached project is null, don't get involved.
|
||||
// if ( cachedProject != null )
|
||||
// {
|
||||
// builder.logger.debug( "Using cached parent project instance in child: " + child.getId() );
|
||||
// proceed( child, cachedProject, builder );
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// builder.logger.debug( "Using original (passed) parent project instance in child: " + child.getId() );
|
||||
// proceed( child, parent, builder );
|
||||
// }
|
||||
|
||||
private pointcut pbBuildFromRepository( Artifact artifact, DefaultMavenProjectBuilder builder ):
|
||||
execution( MavenProject DefaultMavenProjectBuilder+.buildFromRepository( Artifact, .. ) )
|
||||
&& args( artifact, .. )
|
||||
&& this( builder );
|
||||
|
||||
MavenProject around( Artifact artifact, DefaultMavenProjectBuilder builder )
|
||||
throws ProjectBuildingException:
|
||||
pbBuildFromRepository( artifact, builder )
|
||||
{
|
||||
String key = createCacheKey( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
|
||||
MavenProject project = null;
|
||||
|
||||
boolean skipCache = false;
|
||||
if ( !Artifact.LATEST_VERSION.equals( artifact.getVersion() ) && !Artifact.RELEASE_VERSION.equals( artifact.getVersion() ) )
|
||||
{
|
||||
builder.logger.debug( "Checking cache for project (in buildFromRepository): " + key );
|
||||
project = (MavenProject) builder.projectWorkspace.getProject( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
|
||||
}
|
||||
|
||||
if ( project == null )
|
||||
{
|
||||
builder.logger.debug( "Allowing buildFromRepository to proceed for: " + key );
|
||||
project = proceed( artifact, builder );
|
||||
|
||||
if ( !skipCache )
|
||||
{
|
||||
builder.logger.debug( "Caching result for: " + key + " (also keyed by file: " + project.getFile() + ")" );
|
||||
builder.projectWorkspace.storeProjectByCoordinate( project );
|
||||
builder.projectWorkspace.storeProjectByFile( project );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.logger.debug( "Returning cached project: " + project );
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
private pointcut pbBuildFromFile( File pomFile, DefaultMavenProjectBuilder builder ):
|
||||
execution( MavenProject DefaultMavenProjectBuilder.buildFromSourceFileInternal( File, .. ) )
|
||||
&& args( pomFile, .. )
|
||||
&& this( builder );
|
||||
|
||||
MavenProject around( File pomFile, DefaultMavenProjectBuilder builder )
|
||||
throws ProjectBuildingException:
|
||||
pbBuildFromFile( pomFile, builder )
|
||||
{
|
||||
builder.logger.debug( "Checking cache-hit on project (in build*): " + pomFile );
|
||||
|
||||
MavenProject project = (MavenProject) builder.projectWorkspace.getProject( pomFile );
|
||||
|
||||
if ( project == null )
|
||||
{
|
||||
builder.logger.debug( "Allowing project-build to proceed for: " + pomFile );
|
||||
project = proceed( pomFile, builder );
|
||||
|
||||
String key = createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() );
|
||||
|
||||
builder.logger.debug( "Caching result for: " + key + " (also keyed by file: " + pomFile + ")" );
|
||||
builder.projectWorkspace.storeProjectByFile( project );
|
||||
builder.projectWorkspace.storeProjectByCoordinate( project );
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.logger.debug( "Returning cached project: " + project );
|
||||
}
|
||||
|
||||
builder.logger.debug( "Project: " + project.getId() + " has basedir: " + project.getBasedir() );
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
private String createCacheKey( String groupId, String artifactId, String version )
|
||||
{
|
||||
return groupId + ":" + artifactId + ":" + version;
|
||||
}
|
||||
|
||||
private pointcut mlbResolveParentPom( ModelAndFile child, DefaultModelLineageBuilder builder ):
|
||||
execution( private ModelAndFile DefaultModelLineageBuilder.resolveParentPom( ModelAndFile, .. ) )
|
||||
&& args( child, .. )
|
||||
&& this( builder );
|
||||
|
||||
ModelAndFile around( ModelAndFile child, DefaultModelLineageBuilder builder )
|
||||
throws ProjectBuildingException:
|
||||
mlbResolveParentPom( child, builder )
|
||||
{
|
||||
Model childModel = child.getModel();
|
||||
Parent parentRef = childModel.getParent();
|
||||
|
||||
ModelAndFile parent = null;
|
||||
|
||||
if ( parentRef != null
|
||||
&& !StringUtils.isEmpty( parentRef.getGroupId() )
|
||||
&& !StringUtils.isEmpty( parentRef.getArtifactId() )
|
||||
&& !StringUtils.isEmpty( parentRef.getVersion() ) )
|
||||
{
|
||||
String key = createCacheKey( parentRef.getGroupId(), parentRef.getArtifactId(), parentRef.getVersion() );
|
||||
|
||||
builder.logger.debug( "Checking cache for parent model-and-file instance: " + key );
|
||||
parent = (ModelAndFile) builder.projectWorkspace.getModelAndFile( parentRef.getGroupId(), parentRef.getArtifactId(), parentRef.getVersion() );
|
||||
|
||||
if ( parent == null )
|
||||
{
|
||||
builder.logger.debug( "Allowing parent-model resolution to proceed for: " + key + " (child is: " + childModel.getId() + ")" );
|
||||
parent = proceed( child, builder );
|
||||
|
||||
if ( parent != null )
|
||||
{
|
||||
builder.logger.debug( "Caching parent model-and-file under: " + key + " and file: " + parent.getFile() + " (child is: " + childModel.getId() + ")" );
|
||||
builder.projectWorkspace.storeModelAndFile( parent );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.logger.debug( "Returning cached instance." );
|
||||
}
|
||||
}
|
||||
|
||||
return parent;
|
||||
}
|
||||
|
||||
private pointcut mlbReadModelCacheHit( File pomFile, DefaultModelLineageBuilder builder ):
|
||||
call( Model DefaultModelLineageBuilder.readModel( File ) )
|
||||
&& withincode( ModelLineage DefaultModelLineageBuilder.buildModelLineage( .. ) )
|
||||
&& args( pomFile )
|
||||
&& this( builder );
|
||||
|
||||
Model around( File pomFile, DefaultModelLineageBuilder builder )
|
||||
throws ProjectBuildingException:
|
||||
mlbReadModelCacheHit( pomFile, builder )
|
||||
{
|
||||
builder.logger.debug( "Checking cache for model-and-file instance for pom in file: " + pomFile );
|
||||
ModelAndFile cached = (ModelAndFile) builder.projectWorkspace.getModelAndFile( pomFile );
|
||||
if ( cached != null )
|
||||
{
|
||||
builder.logger.debug( "Returning cached pom instance." );
|
||||
return cached.getModel();
|
||||
}
|
||||
|
||||
builder.logger.debug( "Allowing readModel(..) to proceed for pom in file: " + pomFile );
|
||||
return proceed( pomFile, builder );
|
||||
}
|
||||
|
||||
private pointcut mlbCacheableModelAndFileConstruction( Model model, File pomFile, DefaultModelLineageBuilder builder ):
|
||||
call( ModelAndFile.new( Model, File, .. ) )
|
||||
&& withincode( ModelLineage DefaultModelLineageBuilder.buildModelLineage( .. ) )
|
||||
&& args( model, pomFile, .. )
|
||||
&& this( builder );
|
||||
|
||||
ModelAndFile around( Model model, File pomFile, DefaultModelLineageBuilder builder ):
|
||||
mlbCacheableModelAndFileConstruction( model, pomFile, builder )
|
||||
{
|
||||
builder.logger.debug( "Checking cache for model-and-file instance for file: " + pomFile );
|
||||
ModelAndFile cached = (ModelAndFile) builder.projectWorkspace.getModelAndFile( pomFile );
|
||||
if ( cached == null )
|
||||
{
|
||||
builder.logger.debug( "Allowing construction to proceed for model-and-file with model: " + model.getId() + " and file: " + pomFile );
|
||||
cached = proceed( model, pomFile, builder );
|
||||
|
||||
builder.logger.debug( "Storing: " + cached );
|
||||
builder.projectWorkspace.storeModelAndFile( cached );
|
||||
}
|
||||
else
|
||||
{
|
||||
builder.logger.debug( "Returning cached model-and-file instance." );
|
||||
}
|
||||
|
||||
return cached;
|
||||
}
|
||||
}
|
@ -208,10 +208,30 @@ public MavenProject buildFromRepository( Artifact artifact,
|
||||
ArtifactRepository localRepository )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
|
||||
String artifactKey = artifact.getId();
|
||||
|
||||
return buildInternal( model, localRepository, remoteArtifactRepositories, artifact.getFile(), null,
|
||||
false, false, false );
|
||||
MavenProject project = null;
|
||||
if ( !Artifact.LATEST_VERSION.equals( artifact.getVersion() ) && !Artifact.RELEASE_VERSION.equals( artifact.getVersion() ) )
|
||||
{
|
||||
getLogger().debug( "Checking cache for project (in buildFromRepository): " + artifactKey );
|
||||
project = projectWorkspace.getProject( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
|
||||
}
|
||||
|
||||
if ( project == null )
|
||||
{
|
||||
getLogger().debug( "Allowing buildFromRepository to proceed for: " + artifactKey );
|
||||
|
||||
Model model = findModelFromRepository( artifact, remoteArtifactRepositories, localRepository );
|
||||
|
||||
project = buildInternal( model, localRepository, remoteArtifactRepositories, artifact.getFile(), null,
|
||||
false, false, false );
|
||||
}
|
||||
else
|
||||
{
|
||||
getLogger().debug( "Returning cached project: " + project );
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
|
||||
private Logger logger;
|
||||
@ -442,16 +462,29 @@ private MavenProject buildFromSourceFileInternal( File projectDescriptor,
|
||||
ProfileManager profileManager )
|
||||
throws ProjectBuildingException
|
||||
{
|
||||
Model model = readModel( "unknown", projectDescriptor, STRICT_MODEL_PARSING );
|
||||
getLogger().debug( "Checking cache-hit on project (in build*): " + projectDescriptor );
|
||||
|
||||
MavenProject project = buildInternal( model,
|
||||
localRepository,
|
||||
buildArtifactRepositories( getSuperModel() ),
|
||||
projectDescriptor,
|
||||
profileManager,
|
||||
STRICT_MODEL_PARSING,
|
||||
true,
|
||||
true );
|
||||
MavenProject project = projectWorkspace.getProject( projectDescriptor );
|
||||
|
||||
if ( project == null )
|
||||
{
|
||||
getLogger().debug( "Allowing project-build to proceed for: " + projectDescriptor );
|
||||
|
||||
Model model = readModel( "unknown", projectDescriptor, STRICT_MODEL_PARSING );
|
||||
|
||||
project = buildInternal( model,
|
||||
localRepository,
|
||||
buildArtifactRepositories( getSuperModel() ),
|
||||
projectDescriptor,
|
||||
profileManager,
|
||||
STRICT_MODEL_PARSING,
|
||||
true,
|
||||
true );
|
||||
}
|
||||
else
|
||||
{
|
||||
getLogger().debug( "Returning cached project: " + project );
|
||||
}
|
||||
|
||||
return project;
|
||||
}
|
||||
@ -779,6 +812,11 @@ private MavenProject buildInternal( Model model,
|
||||
project.setFile( projectDescriptor );
|
||||
}
|
||||
|
||||
getLogger().debug( "Caching project: " + project.getId() + " (also keyed by file: " + project.getFile() + ")" );
|
||||
|
||||
projectWorkspace.storeProjectByCoordinate( project );
|
||||
projectWorkspace.storeProjectByFile( project );
|
||||
|
||||
project.setManagedVersionMap( createManagedVersionMap( projectId, project.getDependencyManagement(), projectDescriptor ) );
|
||||
|
||||
return project;
|
||||
|
@ -100,7 +100,12 @@ public ModelLineage buildModelLineage( File pom,
|
||||
List currentRemoteRepositories = remoteRepositories == null ? new ArrayList()
|
||||
: new ArrayList( remoteRepositories );
|
||||
|
||||
ModelAndFile current = new ModelAndFile( readModel( pom ), pom, validProfilesXmlLocation );
|
||||
ModelAndFile current = projectWorkspace.getModelAndFile( pom );
|
||||
if ( current == null )
|
||||
{
|
||||
current = new ModelAndFile( readModel( pom ), pom, validProfilesXmlLocation );
|
||||
projectWorkspace.storeModelAndFile( current );
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
@ -337,6 +342,19 @@ private ModelAndFile resolveParentPom( ModelAndFile child,
|
||||
{
|
||||
validateParentDeclaration( modelParent, model );
|
||||
|
||||
String key = modelParent.getGroupId() + ":" + modelParent.getArtifactId() + ":" + modelParent.getVersion();
|
||||
getLogger().debug( "Checking cache for parent model-and-file instance: " + key );
|
||||
|
||||
result = projectWorkspace.getModelAndFile( modelParent.getGroupId(), modelParent.getArtifactId(), modelParent.getVersion() );
|
||||
|
||||
if ( result != null )
|
||||
{
|
||||
getLogger().debug( "Returning cached instance." );
|
||||
return result;
|
||||
}
|
||||
|
||||
getLogger().debug( "Allowing parent-model resolution to proceed for: " + key + " (child is: " + model.getId() + ")" );
|
||||
|
||||
File parentPomFile = null;
|
||||
|
||||
if ( ( modelPomFile != null ) )
|
||||
@ -363,10 +381,15 @@ private ModelAndFile resolveParentPom( ModelAndFile child,
|
||||
{
|
||||
if ( allowStubs )
|
||||
{
|
||||
getLogger().debug( "DISREGARDING the error encountered while resolving artifact for: "
|
||||
+ modelParent.getId()
|
||||
+ ", building a stub model in its place.",
|
||||
e );
|
||||
getLogger().warn( "An error was encountered while resolving artifact for: "
|
||||
+ modelParent.getId() + "\n\nError was: "
|
||||
+ e.getMessage() );
|
||||
|
||||
if ( getLogger().isDebugEnabled() )
|
||||
{
|
||||
getLogger().debug( "Stack trace: ", e );
|
||||
}
|
||||
|
||||
parentPomFile = null;
|
||||
}
|
||||
else
|
||||
@ -382,7 +405,7 @@ private ModelAndFile resolveParentPom( ModelAndFile child,
|
||||
{
|
||||
getLogger().warn( "Cannot find parent POM: " + modelParent.getId()
|
||||
+ " for child: " + model.getId()
|
||||
+ ". Using stub model instead." );
|
||||
+ ".\n\nMaven is using a stub model instead for this build." );
|
||||
|
||||
Model parent = new Model();
|
||||
|
||||
@ -407,6 +430,12 @@ private ModelAndFile resolveParentPom( ModelAndFile child,
|
||||
}
|
||||
}
|
||||
|
||||
if ( result != null )
|
||||
{
|
||||
getLogger().debug( "Caching parent model-and-file: " + result );
|
||||
projectWorkspace.storeModelAndFile( result );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -37,4 +37,9 @@ public boolean isValidProfilesXmlLocation()
|
||||
return validProfilesXmlLocation;
|
||||
}
|
||||
|
||||
public String toString()
|
||||
{
|
||||
return model.getId() + "@" + file;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -16,15 +16,16 @@ public class DefaultProjectWorkspace
|
||||
{
|
||||
|
||||
private MavenWorkspaceStore workspaceStore;
|
||||
// private Logger logger;
|
||||
private Logger logger;
|
||||
|
||||
public DefaultProjectWorkspace()
|
||||
{
|
||||
}
|
||||
|
||||
protected DefaultProjectWorkspace( MavenWorkspaceStore workspaceStore )
|
||||
protected DefaultProjectWorkspace( MavenWorkspaceStore workspaceStore, Logger logger )
|
||||
{
|
||||
this.workspaceStore = workspaceStore;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
public ModelAndFile getModelAndFile( String groupId,
|
||||
@ -35,7 +36,7 @@ public ModelAndFile getModelAndFile( String groupId,
|
||||
|
||||
String key = createCacheKey( groupId, artifactId, version );
|
||||
|
||||
// getLogger().debug( "Retrieving ModelAndFile instance for: " + key + " from workspace." );
|
||||
getLogger().debug( "Retrieving ModelAndFile instance for: " + key + " from workspace." );
|
||||
return (ModelAndFile) cache.get( key );
|
||||
}
|
||||
|
||||
@ -45,7 +46,7 @@ public ModelAndFile getModelAndFile( File modelFile )
|
||||
|
||||
Object pathKey = resolvePathKey( modelFile );
|
||||
|
||||
// getLogger().debug( "Retrieving ModelAndFile instance for: " + pathKey + " from workspace." );
|
||||
getLogger().debug( "Retrieving ModelAndFile instance for: " + pathKey + " from workspace." );
|
||||
return (ModelAndFile) cache.get( pathKey );
|
||||
}
|
||||
|
||||
@ -67,7 +68,7 @@ public MavenProject getProject( File projectFile )
|
||||
|
||||
Object pathKey = resolvePathKey( projectFile );
|
||||
|
||||
// getLogger().debug( "Retrieving MavenProject instance for: " + pathKey + " from workspace." );
|
||||
getLogger().debug( "Retrieving MavenProject instance for: " + pathKey + " from workspace." );
|
||||
return (MavenProject) cache.get( pathKey );
|
||||
}
|
||||
|
||||
@ -79,7 +80,7 @@ public MavenProject getProject( String groupId,
|
||||
|
||||
String key = createCacheKey( groupId, artifactId, version );
|
||||
|
||||
// getLogger().debug( "Retrieving MavenProject instance for: " + key + " from workspace." );
|
||||
getLogger().debug( "Retrieving MavenProject instance for: " + key + " from workspace." );
|
||||
return (MavenProject) cache.get( key );
|
||||
}
|
||||
|
||||
@ -89,7 +90,7 @@ public void storeModelAndFile( ModelAndFile modelAndFile )
|
||||
|
||||
Object pathKey = resolvePathKey( modelAndFile.getFile() );
|
||||
|
||||
// getLogger().debug( "Storing ModelAndFile instance under: " + pathKey + " in workspace." );
|
||||
getLogger().debug( "Storing ModelAndFile instance under: " + pathKey + " in workspace." );
|
||||
cache.put( pathKey, modelAndFile );
|
||||
|
||||
cache = workspaceStore.getWorkspaceCache( ProjectWorkspace.MODEL_AND_FILE_BYGAV_KEY );
|
||||
@ -97,7 +98,7 @@ public void storeModelAndFile( ModelAndFile modelAndFile )
|
||||
Model model = modelAndFile.getModel();
|
||||
String key = createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() );
|
||||
|
||||
// getLogger().debug( "Storing ModelAndFile instance under: " + key + " in workspace." );
|
||||
getLogger().debug( "Storing ModelAndFile instance under: " + key + " in workspace." );
|
||||
cache.put( key, modelAndFile );
|
||||
}
|
||||
|
||||
@ -111,7 +112,7 @@ public void storeProjectByFile( MavenProject project )
|
||||
|
||||
Object pathKey = resolvePathKey( project.getFile() );
|
||||
|
||||
// getLogger().debug( "Storing MavenProject instance under: " + pathKey + " in workspace." );
|
||||
getLogger().debug( "Storing MavenProject instance under: " + pathKey + " in workspace." );
|
||||
cache.put( pathKey, project );
|
||||
}
|
||||
|
||||
@ -121,7 +122,7 @@ public void storeProjectByCoordinate( MavenProject project )
|
||||
|
||||
String key = createCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() );
|
||||
|
||||
// getLogger().debug( "Storing MavenProject instance under: " + key + " in workspace." );
|
||||
getLogger().debug( "Storing MavenProject instance under: " + key + " in workspace." );
|
||||
cache.put( key, project );
|
||||
}
|
||||
|
||||
@ -130,19 +131,19 @@ private String createCacheKey( String groupId, String artifactId, String version
|
||||
return groupId + ":" + artifactId + ":" + version;
|
||||
}
|
||||
|
||||
// protected Logger getLogger()
|
||||
// {
|
||||
protected Logger getLogger()
|
||||
{
|
||||
// if ( logger == null )
|
||||
// {
|
||||
// logger = new ConsoleLogger( Logger.LEVEL_INFO, "internal" );
|
||||
// }
|
||||
//
|
||||
// return logger;
|
||||
// }
|
||||
|
||||
return logger;
|
||||
}
|
||||
|
||||
public void enableLogging( Logger logger )
|
||||
{
|
||||
// this.logger = logger;
|
||||
this.logger = logger;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -4,6 +4,8 @@
|
||||
import org.apache.maven.project.MavenProject;
|
||||
import org.apache.maven.project.build.model.ModelAndFile;
|
||||
import org.apache.maven.workspace.DefaultMavenWorkspaceStore;
|
||||
import org.codehaus.plexus.logging.Logger;
|
||||
import org.codehaus.plexus.logging.console.ConsoleLogger;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
@ -17,7 +19,7 @@ public void testStoreAndRetrieveModelAndFile()
|
||||
{
|
||||
ModelAndFile maf = newModelAndFile( "group", "artifact", "1" );
|
||||
|
||||
DefaultProjectWorkspace ws = new DefaultProjectWorkspace( new DefaultMavenWorkspaceStore() );
|
||||
DefaultProjectWorkspace ws = newWorkspace();
|
||||
ws.storeModelAndFile( maf );
|
||||
|
||||
ModelAndFile r1 = ws.getModelAndFile( maf.getFile() );
|
||||
@ -29,11 +31,17 @@ public void testStoreAndRetrieveModelAndFile()
|
||||
assertSame( maf, r2 );
|
||||
}
|
||||
|
||||
private DefaultProjectWorkspace newWorkspace()
|
||||
{
|
||||
DefaultProjectWorkspace ws = new DefaultProjectWorkspace( new DefaultMavenWorkspaceStore(), new ConsoleLogger( Logger.LEVEL_INFO, "test" ) );
|
||||
return ws;
|
||||
}
|
||||
|
||||
public void testStoreAndRetrieveProjectByFile_CoordinateRetrievalReturnsNull()
|
||||
{
|
||||
MavenProject project = newProject( "group", "artifact", "1" );
|
||||
|
||||
DefaultProjectWorkspace ws = new DefaultProjectWorkspace( new DefaultMavenWorkspaceStore() );
|
||||
DefaultProjectWorkspace ws = newWorkspace();
|
||||
ws.storeProjectByFile( project );
|
||||
|
||||
assertSame( project, ws.getProject( project.getFile() ) );
|
||||
@ -44,7 +52,7 @@ public void testStoreAndRetrieveProjectByCoordinate_FileRetrievalReturnsNull()
|
||||
{
|
||||
MavenProject project = newProject( "group", "artifact", "1" );
|
||||
|
||||
DefaultProjectWorkspace ws = new DefaultProjectWorkspace( new DefaultMavenWorkspaceStore() );
|
||||
DefaultProjectWorkspace ws = newWorkspace();
|
||||
ws.storeProjectByCoordinate( project );
|
||||
|
||||
assertNull( ws.getProject( project.getFile() ) );
|
||||
|
@ -27,6 +27,9 @@
|
||||
public class ModelAndFileCachingTest
|
||||
extends PlexusTestCase
|
||||
{
|
||||
|
||||
private static final String MY_PKG = ModelAndFileCachingTest.class.getPackage().getName().replace( '.', '/' );
|
||||
|
||||
private static final String MY_PATH = ModelAndFileCachingTest.class.getName()
|
||||
.replace( '.', '/' )
|
||||
+ ".class";
|
||||
@ -224,11 +227,18 @@ private ModelAndFile newModelAndFile( String gid,
|
||||
private File getFile( String path )
|
||||
{
|
||||
ClassLoader cloader = Thread.currentThread().getContextClassLoader();
|
||||
URL myRes = cloader.getResource( MY_PATH );
|
||||
URL res = cloader.getResource( MY_PATH );
|
||||
|
||||
File myFile = new File( myRes.getPath() );
|
||||
File myFile = new File( res.getPath() );
|
||||
|
||||
return new File( myFile.getParentFile(), path );
|
||||
File result = new File( myFile.getParentFile(), path );
|
||||
|
||||
if ( !result.exists() )
|
||||
{
|
||||
result = new File( "src/test/resources", MY_PKG + "/" + path );
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user