You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2009/04/20 21:51:57 UTC
svn commit: r766833 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/
maven-project/src/main/java/org/apache/maven/project/
Author: sisbell
Date: Mon Apr 20 19:51:57 2009
New Revision: 766833
URL: http://svn.apache.org/viewvc?rev=766833&view=rev
Log:
Support for specifying pom file on command line. The builder now checks (in order): 1) top-level maven project from config matches build pom parent; 2) relative path pom; 2) repository pom.
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=766833&r1=766832&r2=766833&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Mon Apr 20 19:51:57 2009
@@ -282,6 +282,7 @@
if ( isRoot )
{
project.setExecutionRoot( true );
+ request.getProjectBuildingConfiguration().setTopLevelProjectForReactor(project);
}
if ( ( project.getPrerequisites() != null ) && ( project.getPrerequisites().getMaven() != null ) )
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=766833&r1=766832&r2=766833&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Mon Apr 20 19:51:57 2009
@@ -42,7 +42,6 @@
import org.apache.maven.model.PomClassicDomainModel;
import org.apache.maven.model.ProcessorContext;
import org.apache.maven.model.Profile;
-import org.apache.maven.model.interpolator.DefaultInterpolator;
import org.apache.maven.model.interpolator.Interpolator;
import org.apache.maven.model.interpolator.InterpolatorProperty;
import org.apache.maven.model.interpolator.PomInterpolatorTag;
@@ -81,9 +80,6 @@
private RepositorySystem repositorySystem;
@Requirement
- private PlexusContainer container;
-
- @Requirement
List<ModelEventListener> listeners;
@Requirement
@@ -460,9 +456,14 @@
if ( domainModel.getParentId() != null )
{
List<DomainModel> mavenParents;
- if ( isParentLocal( domainModel.getRelativePathOfParent(), pomFile.getParentFile() ) )
+ MavenProject topProject = projectBuilderConfiguration.getTopLevelProjectFromReactor();
+ if(useTopLevelProjectForParent(domainModel, topProject) )
+ {
+ mavenParents = getDomainModelParentsFromLocalPath( domainModel, localRepository, remoteRepositories, topProject.getFile(), projectBuilderConfiguration );
+ }
+ else if ( isParentLocal( domainModel.getRelativePathOfParent(), pomFile.getParentFile() ) )
{
- mavenParents = getDomainModelParentsFromLocalPath( domainModel, localRepository, remoteRepositories, pomFile.getParentFile() );
+ mavenParents = getDomainModelParentsFromLocalPath( domainModel, localRepository, remoteRepositories, pomFile.getParentFile(), projectBuilderConfiguration );
}
else
{
@@ -513,11 +514,23 @@
// Lineage count is inclusive to add the POM read in itself.
transformedDomainModel.setLineageCount( lineageCount + 1 );
- Model m = transformedDomainModel.getModel();
transformedDomainModel.setParentFile( parentFile );
return transformedDomainModel;
}
+
+ private static boolean useTopLevelProjectForParent(PomClassicDomainModel currentModel, MavenProject topProject) throws IOException
+ {
+ if(topProject == null || currentModel.getModel().getParent() == null)
+ {
+ return false;
+ }
+
+ return topProject.getGroupId().equals(currentModel.getParentGroupId())
+ && topProject.getArtifactId().equals(currentModel.getParentArtifactId())
+ && topProject.getVersion().equals(currentModel.getParentVersion());
+
+ }
private void validateModel( Model model, File pomFile )
throws InvalidProjectModelException
@@ -646,7 +659,7 @@
* @throws IOException
*/
private List<DomainModel> getDomainModelParentsFromLocalPath( PomClassicDomainModel domainModel, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories,
- File projectDirectory )
+ File projectDirectory, ProjectBuilderConfiguration projectBuilderConfiguration )
throws IOException
{
List<DomainModel> domainModels = new ArrayList<DomainModel>();
@@ -663,15 +676,23 @@
{
parentFile = new File( parentFile.getAbsolutePath(), "pom.xml" );
}
-
- if ( !parentFile.isFile() )
+ MavenProject topProject = projectBuilderConfiguration.getTopLevelProjectFromReactor();
+ boolean isTop = useTopLevelProjectForParent(domainModel, topProject);
+ PomClassicDomainModel parentDomainModel = null;
+ if ( !isTop )
+ {
+ if(!parentFile.isFile())
+ {
+ throw new IOException( "File does not exist: File = " + parentFile.getAbsolutePath() );
+ }
+ parentDomainModel = new PomClassicDomainModel( parentFile );
+ parentDomainModel.setProjectDirectory( parentFile.getParentFile() );
+ }
+ else
{
- throw new IOException( "File does not exist: File = " + parentFile.getAbsolutePath() );
+ parentDomainModel = new PomClassicDomainModel(projectBuilderConfiguration.getTopLevelProjectFromReactor().getFile());
}
- PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( parentFile );
- parentDomainModel.setProjectDirectory( parentFile.getParentFile() );
-
if ( !parentDomainModel.matchesParentOf( domainModel ) )
{
logger.info( "Parent pom ids do not match: Parent File = " + parentFile.getAbsolutePath() + ", Parent ID = " + parentDomainModel.getId() + ", Child ID = " + domainModel.getId()
@@ -691,9 +712,20 @@
domainModels.add( parentDomainModel );
if ( domainModel.getParentId() != null )
{
- if ( isParentLocal( parentDomainModel.getRelativePathOfParent(), parentFile.getParentFile() ) )
+ if(isTop)
+ {
+ if ( isParentLocal( parentDomainModel.getRelativePathOfParent(), parentFile.getParentFile() ) )
+ {
+ domainModels.addAll( getDomainModelParentsFromLocalPath( parentDomainModel, localRepository, remoteRepositories, topProject.getFile(), projectBuilderConfiguration ) );
+ }
+ else
+ {
+ domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, localRepository, remoteRepositories ) );
+ }
+ }
+ else if ( isParentLocal( parentDomainModel.getRelativePathOfParent(), parentFile.getParentFile() ) )
{
- domainModels.addAll( getDomainModelParentsFromLocalPath( parentDomainModel, localRepository, remoteRepositories, parentFile.getParentFile() ) );
+ domainModels.addAll( getDomainModelParentsFromLocalPath( parentDomainModel, localRepository, remoteRepositories, parentFile.getParentFile(), projectBuilderConfiguration ) );
}
else
{
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java?rev=766833&r1=766832&r2=766833&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultProjectBuilderConfiguration.java Mon Apr 20 19:51:57 2009
@@ -44,6 +44,18 @@
private Date buildStartTime;
private List<ModelEventListener> listeners;
+
+ private MavenProject topProject;
+
+ public MavenProject getTopLevelProjectFromReactor()
+ {
+ return topProject;
+ }
+
+ public void setTopLevelProjectForReactor(MavenProject mavenProject)
+ {
+ this.topProject = mavenProject;
+ }
public ProjectBuilderConfiguration setGlobalProfileManager( ProfileManager globalProfileManager )
{
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java?rev=766833&r1=766832&r2=766833&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ProjectBuilderConfiguration.java Mon Apr 20 19:51:57 2009
@@ -32,4 +32,8 @@
Date getBuildStartTime();
ProjectBuilderConfiguration setBuildStartTime( Date buildStartTime );
+
+ MavenProject getTopLevelProjectFromReactor();
+
+ void setTopLevelProjectForReactor(MavenProject mavenProject);
}