PR: MNG-680

set file in USD, don't return a dummy basedir if it is in the repository

git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@280333 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Brett Leslie Porter 2005-09-12 12:47:29 +00:00
parent e635816bcd
commit 8948d497ce
2 changed files with 30 additions and 30 deletions

View File

@ -518,7 +518,7 @@ public class DefaultMavenProjectBuilder
try try
{ {
project = processProjectLogic( pomLocation, project, repositories, profileManager ); project = processProjectLogic( pomLocation, project, repositories, profileManager, projectDir );
} }
catch ( ModelInterpolationException e ) catch ( ModelInterpolationException e )
{ {
@ -544,7 +544,7 @@ public class DefaultMavenProjectBuilder
* and projects are not cached or reused * and projects are not cached or reused
*/ */
private MavenProject processProjectLogic( String pomLocation, MavenProject project, List remoteRepositories, private MavenProject processProjectLogic( String pomLocation, MavenProject project, List remoteRepositories,
ProfileManager profileMgr ) ProfileManager profileMgr, File projectDir )
throws ProjectBuildingException, ModelInterpolationException throws ProjectBuildingException, ModelInterpolationException
{ {
Model model = project.getModel(); Model model = project.getModel();
@ -571,17 +571,9 @@ public class DefaultMavenProjectBuilder
// We don't need all the project methods that are added over those in the model, but we do need basedir // We don't need all the project methods that are added over those in the model, but we do need basedir
Map context = new HashMap( System.getProperties() ); Map context = new HashMap( System.getProperties() );
// FIXME: why is project.file not filled in here? MavenProject.getBasedir() defaults if ( projectDir != null )
// to the current directory which causes all sorts of problems; might be better off
// setting that to null and just filling in the project file name and removing this.
if ( pomLocation != null && new File( pomLocation ).getParent() != null )
{ {
context.put( "basedir", new File( pomLocation ).getParent() ); context.put( "basedir", projectDir.getAbsolutePath() );
}
else
{
context.put( "basedir", project.getBasedir() );
} }
model = modelInterpolator.interpolate( model, context ); model = modelInterpolator.interpolate( model, context );
@ -717,7 +709,7 @@ public class DefaultMavenProjectBuilder
model = getCachedModel( parentModel.getGroupId(), parentModel.getArtifactId(), parentModel.getVersion() ); model = getCachedModel( parentModel.getGroupId(), parentModel.getArtifactId(), parentModel.getVersion() );
// the only way this will have a value is if we find the parent on disk... // the only way this will have a value is if we find the parent on disk...
File parentProjectDir = null; File parentDescriptor = null;
String parentRelativePath = parentModel.getRelativePath(); String parentRelativePath = parentModel.getRelativePath();
@ -725,7 +717,7 @@ public class DefaultMavenProjectBuilder
// <relativePath/> // <relativePath/>
if ( model == null && projectDir != null && StringUtils.isNotEmpty( parentRelativePath ) ) if ( model == null && projectDir != null && StringUtils.isNotEmpty( parentRelativePath ) )
{ {
File parentDescriptor = new File( projectDir, parentRelativePath ); parentDescriptor = new File( projectDir, parentRelativePath );
try try
{ {
@ -743,16 +735,16 @@ public class DefaultMavenProjectBuilder
Model candidateParent = readModel( parentDescriptor ); Model candidateParent = readModel( parentDescriptor );
// this works because parent-version is still required... // this works because parent-version is still required...
boolean versionMatches = parentModel.getVersion().equals( candidateParent.getVersion() );
if ( !versionMatches && candidateParent.getParent() != null )
{
versionMatches = parentModel.getVersion().equals( candidateParent.getParent().getVersion() );
}
if ( parentModel.getGroupId().equals( candidateParent.getGroupId() ) && if ( parentModel.getGroupId().equals( candidateParent.getGroupId() ) &&
parentModel.getArtifactId().equals( candidateParent.getArtifactId() ) && ( parentModel.getArtifactId().equals( candidateParent.getArtifactId() ) && versionMatches )
parentModel.getVersion().equals( candidateParent.getVersion() ) || (
candidateParent.getParent() != null &&
parentModel.getVersion().equals( candidateParent.getParent().getVersion() ) ) ) )
{ {
model = candidateParent; model = candidateParent;
parentProjectDir = parentDescriptor.getParentFile();
getLogger().debug( "Using parent-POM from the project hierarchy at: \'" + getLogger().debug( "Using parent-POM from the project hierarchy at: \'" +
parentModel.getRelativePath() + "\' for project: " + project.getId() ); parentModel.getRelativePath() + "\' for project: " + project.getId() );
} }
@ -790,8 +782,14 @@ public class DefaultMavenProjectBuilder
model = findModelFromRepository( parentArtifact, remoteRepositories, localRepository ); model = findModelFromRepository( parentArtifact, remoteRepositories, localRepository );
} }
File parentProjectDir = null;
if ( parentDescriptor != null )
{
parentProjectDir = parentDescriptor.getParentFile();
}
MavenProject parent = assembleLineage( model, lineage, localRepository, parentProjectDir, MavenProject parent = assembleLineage( model, lineage, localRepository, parentProjectDir,
parentSearchRepositories, aggregatedRemoteWagonRepositories ); parentSearchRepositories, aggregatedRemoteWagonRepositories );
parent.setFile( parentDescriptor );
project.setParent( parent ); project.setParent( parent );
@ -1098,11 +1096,12 @@ public class DefaultMavenProjectBuilder
try try
{ {
project.setFile( new File( ".", "pom.xml" ) ); // TODO: remove - confirm this was a correct decision
// project.setFile( new File( ".", "pom.xml" ) );
List remoteRepositories = buildArtifactRepositories( superModel ); List remoteRepositories = buildArtifactRepositories( superModel );
project = processProjectLogic( "<Super-POM>", project, remoteRepositories, null ); project = processProjectLogic( "<Super-POM>", project, remoteRepositories, null, null );
return project; return project;
} }

View File

@ -245,7 +245,8 @@ public class MavenProject
} }
else else
{ {
return new File( System.getProperty( "user.dir" ) ); // repository based POM
return null;
} }
} }
@ -342,8 +343,8 @@ public class MavenProject
if ( isAddedToClasspath( a ) ) if ( isAddedToClasspath( a ) )
{ {
// TODO: let the scope handler deal with this // TODO: let the scope handler deal with this
if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) ||
|| Artifact.SCOPE_SYSTEM.equals( a.getScope() ) ) Artifact.SCOPE_SYSTEM.equals( a.getScope() ) )
{ {
String refId = getProjectReferenceId( a.getGroupId(), a.getArtifactId() ); String refId = getProjectReferenceId( a.getGroupId(), a.getArtifactId() );
MavenProject project = (MavenProject) projectReferences.get( refId ); MavenProject project = (MavenProject) projectReferences.get( refId );
@ -378,8 +379,8 @@ public class MavenProject
if ( isAddedToClasspath( a ) ) if ( isAddedToClasspath( a ) )
{ {
// TODO: let the scope handler deal with this // TODO: let the scope handler deal with this
if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) ||
|| Artifact.SCOPE_SYSTEM.equals( a.getScope() ) ) Artifact.SCOPE_SYSTEM.equals( a.getScope() ) )
{ {
list.add( a ); list.add( a );
} }
@ -404,8 +405,8 @@ public class MavenProject
Artifact a = (Artifact) i.next(); Artifact a = (Artifact) i.next();
// TODO: let the scope handler deal with this // TODO: let the scope handler deal with this
if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) if ( Artifact.SCOPE_COMPILE.equals( a.getScope() ) || Artifact.SCOPE_PROVIDED.equals( a.getScope() ) ||
|| Artifact.SCOPE_SYSTEM.equals( a.getScope() ) ) Artifact.SCOPE_SYSTEM.equals( a.getScope() ) )
{ {
Dependency dependency = new Dependency(); Dependency dependency = new Dependency();
@ -1139,7 +1140,7 @@ public class MavenProject
/** /**
* @return a list of ArtifactRepository objects constructed * @return a list of ArtifactRepository objects constructed
* from the Repository objects returned by getPluginRepositories. * from the Repository objects returned by getPluginRepositories.
*/ */
public List getPluginArtifactRepositories() public List getPluginArtifactRepositories()
{ {