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 2008/08/25 19:05:06 UTC
svn commit: r688778 - in
/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src:
main/java/org/apache/maven/project/
main/java/org/apache/maven/project/builder/
main/java/org/apache/maven/project/builder/impl/
test/java/org/apache/maven...
Author: sisbell
Date: Mon Aug 25 10:05:05 2008
New Revision: 688778
URL: http://svn.apache.org/viewvc?rev=688778&view=rev
Log:
Fix for calculating maven parent project.
Modified:
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java
Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=688778&r1=688777&r2=688778&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Mon Aug 25 10:05:05 2008
@@ -38,10 +38,7 @@
import org.apache.maven.profiles.activation.ProfileActivationException;
import org.apache.maven.profiles.build.ProfileAdvisor;
import org.apache.maven.project.artifact.InvalidDependencyVersionException;
-import org.apache.maven.project.build.model.DefaultModelLineage;
-import org.apache.maven.project.build.model.ModelLineage;
import org.apache.maven.project.build.model.ModelLineageBuilder;
-import org.apache.maven.project.build.model.ModelLineageIterator;
import org.apache.maven.project.builder.PomArtifactResolver;
import org.apache.maven.project.builder.ProjectBuilder;
import org.apache.maven.project.inheritance.ModelInheritanceAssembler;
@@ -171,13 +168,12 @@
MavenProject project = null;//projectWorkspace.getProject( projectDescriptor );
if (project == null) {
- Model model = readModelFromLocalPath("unknown", projectDescriptor, new PomArtifactResolver(config.getLocalRepository(),
- repositoryHelper.buildArtifactRepositories(getSuperModel()), artifactResolver));
- project = buildInternal(model,
+ project = readModelFromLocalPath("unknown", projectDescriptor, new PomArtifactResolver(config.getLocalRepository(),
+ repositoryHelper.buildArtifactRepositories(getSuperModel()), artifactResolver), config);
+ project = buildInternal(project.getModel(),
config,
- repositoryHelper.buildArtifactRepositories(getSuperModel()),
projectDescriptor,
- STRICT_MODEL_PARSING,
+ project.getParentFile(),
true,
true);
}
@@ -212,9 +208,9 @@
Model model = repositoryHelper.findModelFromRepository(artifact, remoteArtifactRepositories, localRepository);
ProjectBuilderConfiguration config = new DefaultProjectBuilderConfiguration().setLocalRepository(localRepository);
-
- project = buildInternal(model, config, remoteArtifactRepositories, artifact.getFile(),
- false, false, false);
+ //TODO: Construct parent
+ project = buildInternal(model, config, artifact.getFile(), null,
+ false, false);
}
return project;
@@ -262,7 +258,7 @@
MavenProject project;
try {
- project = new MavenProject(superModel, artifactFactory, mavenTools, repositoryHelper, this);
+ project = new MavenProject(superModel, artifactFactory, mavenTools, repositoryHelper, this, config);
} catch (InvalidRepositoryException e) {
throw new ProjectBuildingException(STANDALONE_SUPERPOM_GROUPID + ":"
+ STANDALONE_SUPERPOM_ARTIFACTID,
@@ -274,7 +270,7 @@
//project.setActiveProfiles(activeProfiles);
try {
- interpolateModelAndInjectDefault(project.getModel(), null, config, activeProfiles);
+ interpolateModelAndInjectDefault(project.getModel(), null, null, config, activeProfiles);
project.setRemoteArtifactRepositories(mavenTools.buildArtifactRepositories(superModel.getRepositories()));
project.setPluginArtifactRepositories(mavenTools.buildArtifactRepositories(superModel.getRepositories()));
@@ -376,16 +372,15 @@
private MavenProject buildInternal(Model model,
ProjectBuilderConfiguration config,
- List parentSearchRepositories,
File projectDescriptor,
- boolean strict,
+ File parentDescriptor,
boolean isReactorProject,
boolean fromSourceTree)
throws ProjectBuildingException {
MavenProject superProject;
try {
- superProject = new MavenProject(getSuperModel(), artifactFactory, mavenTools, repositoryHelper, this);
+ superProject = new MavenProject(getSuperModel(), artifactFactory, mavenTools, repositoryHelper, this, config);
} catch (InvalidRepositoryException e) {
throw new ProjectBuildingException(STANDALONE_SUPERPOM_GROUPID + ":"
+ STANDALONE_SUPERPOM_ARTIFACTID,
@@ -428,7 +423,7 @@
MavenProject project;
try {
- project = interpolateModelAndInjectDefault(model, projectDescriptor, config, activated);
+ project = interpolateModelAndInjectDefault(model, projectDescriptor, parentDescriptor, config, activated);
}
catch (ModelInterpolationException e) {
throw new InvalidProjectModelException(projectId, e.getMessage(), projectDescriptor, e);
@@ -460,6 +455,7 @@
private MavenProject interpolateModelAndInjectDefault(Model model,
File pomFile,
+ File parentFile,
ProjectBuilderConfiguration config,
List activeProfiles
)
@@ -484,13 +480,13 @@
modelDefaultsInjector.injectDefaults(model);
// We will return a different project object using the new model (hence the need to return a project, not just modify the parameter)
- MavenProject project = new MavenProject(model, artifactFactory, mavenTools, repositoryHelper, this);
+ MavenProject project = new MavenProject(model, artifactFactory, mavenTools, repositoryHelper, this, config);
project.setActiveProfiles(activeProfiles);
Artifact projectArtifact = artifactFactory.createBuildArtifact(project.getGroupId(), project.getArtifactId(),
project.getVersion(), project.getPackaging());
project.setArtifact(projectArtifact);
-
+ project.setParentFile(parentFile);
validateModel(model, pomFile);
return project;
}
@@ -654,9 +650,11 @@
}
}
- private Model readModelFromLocalPath(String projectId,
+ private MavenProject readModelFromLocalPath(String projectId,
File projectDescriptor,
- PomArtifactResolver resolver)
+ PomArtifactResolver resolver,
+ ProjectBuilderConfiguration config
+ )
throws ProjectBuildingException {
if (projectDescriptor == null) {
throw new IllegalArgumentException("projectDescriptor: null, Project Id =" + projectId);
@@ -670,13 +668,13 @@
try {
mavenProject = projectBuilder.buildFromLocalPath(new FileInputStream(projectDescriptor),
Arrays.asList(getSuperModel()), null, null, resolver,
- projectDescriptor.getParentFile());
+ projectDescriptor.getParentFile(), config);
} catch (IOException e) {
e.printStackTrace();
throw new ProjectBuildingException(projectId, "File = " + projectDescriptor.getAbsolutePath(), e);
}
- return mavenProject.getModel();
+ return mavenProject;
}
Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java?rev=688778&r1=688777&r2=688778&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/MavenProject.java Mon Aug 25 10:05:05 2008
@@ -139,6 +139,18 @@
private MavenProjectBuilder mavenProjectBuilder;
+ private ProjectBuilderConfiguration projectBuilderConfiguration;
+
+ private File parentFile;
+
+ public File getParentFile() {
+ return parentFile;
+ }
+
+ public void setParentFile(File parentFile) {
+ this.parentFile = parentFile;
+ }
+
public MavenProject()
{
Model model = new Model();
@@ -156,13 +168,15 @@
}
public MavenProject(Model model, ArtifactFactory artifactFactory, MavenTools mavenTools,
- RepositoryHelper repositoryHelper, MavenProjectBuilder mavenProjectBuilder)
+ RepositoryHelper repositoryHelper, MavenProjectBuilder mavenProjectBuilder,
+ ProjectBuilderConfiguration projectBuilderConfiguration)
throws InvalidRepositoryException {
setModel( model );
this.artifactFactory = artifactFactory;
this.mavenTools = mavenTools;
this.repositoryHelper = repositoryHelper;
this.mavenProjectBuilder = mavenProjectBuilder;
+ this.projectBuilderConfiguration = projectBuilderConfiguration;
originalModel = ModelUtils.cloneModel( model );
DistributionManagement dm = model.getDistributionManagement();
@@ -221,6 +235,10 @@
setArtifacts( Collections.unmodifiableSet( project.getArtifacts() ) );
}
+ if(project.getParentFile() != null) {
+ parentFile = new File(project.getParentFile().getAbsolutePath());
+ }
+
// if ( project.getPluginArtifacts() != null )
// {
// setPluginArtifacts( Collections.unmodifiableSet( project.getPluginArtifacts() ) );
@@ -421,6 +439,13 @@
public MavenProject getParent()
{
+ if(parent == null && parentFile != null) {
+ try {
+ parent = mavenProjectBuilder.build(parentFile, projectBuilderConfiguration);
+ } catch (ProjectBuildingException e) {
+ e.printStackTrace();
+ }
+ }
return parent;
}
Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java?rev=688778&r1=688777&r2=688778&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/PomClassicDomainModel.java Mon Aug 25 10:05:05 2008
@@ -29,11 +29,7 @@
import org.codehaus.plexus.util.WriterFactory;
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.Writer;
+import java.io.*;
/**
* Provides a wrapper for the maven model.
@@ -59,6 +55,10 @@
private String id;
+ private File file;
+
+ private File parentFile;
+
/**
* Constructor
*
@@ -96,6 +96,20 @@
this.inputBytes = IOUtil.toByteArray( inputStream );
}
+ public PomClassicDomainModel(File file)
+ throws IOException
+ {
+ this(new FileInputStream(file));
+ this.file = file;
+ }
+
+ public File getParentFile() {
+ return parentFile;
+ }
+
+ public void setParentFile(File parentFile) {
+ this.parentFile = parentFile;
+ }
/**
* Returns true if groupId.equals(a.groupId) && artifactId.equals(a.artifactId) && version.equals(a.version),
@@ -212,6 +226,16 @@
}
/**
+ *
+ *
+ * @return file of pom. May be null.
+ */
+ public File getFile()
+ {
+ return file;
+ }
+
+ /**
* @see org.apache.maven.shared.model.DomainModel#getEventHistory()
*/
public String getEventHistory()
Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java?rev=688778&r1=688777&r2=688778&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java Mon Aug 25 10:05:05 2008
@@ -21,6 +21,7 @@
import org.apache.maven.model.Model;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.ProjectBuilderConfiguration;
import org.apache.maven.shared.model.InterpolatorProperty;
import org.apache.maven.shared.model.ImportModel;
@@ -46,13 +47,14 @@
* @param interpolatorProperties properties used for interpolation of properties within the model
* @param resolver artifact resolver used in resolving artifacts
* @param baseDirectory the base directory of the model
+ * @param projectBuilderConfiguration
* @return a maven project for the specified input stream
* @throws IOException if there is a problem in the construction of the maven project
*/
- MavenProject buildFromLocalPath( InputStream pom, List<Model> inheritedModels,
- Collection<ImportModel> importModels,
- Collection<InterpolatorProperty> interpolatorProperties,
- PomArtifactResolver resolver, File baseDirectory )
+ MavenProject buildFromLocalPath(InputStream pom, List<Model> inheritedModels,
+ Collection<ImportModel> importModels,
+ Collection<InterpolatorProperty> interpolatorProperties,
+ PomArtifactResolver resolver, File baseDirectory, ProjectBuilderConfiguration projectBuilderConfiguration)
throws IOException;
}
Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java?rev=688778&r1=688777&r2=688778&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java Mon Aug 25 10:05:05 2008
@@ -24,8 +24,7 @@
import org.apache.maven.artifact.factory.ArtifactFactory;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.project.RepositoryHelper;
+import org.apache.maven.project.*;
import org.apache.maven.project.builder.ArtifactModelContainerFactory;
import org.apache.maven.project.builder.IdModelContainerFactory;
import org.apache.maven.project.builder.PomArtifactResolver;
@@ -40,7 +39,6 @@
import org.codehaus.plexus.logging.Logger;
import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
@@ -69,6 +67,8 @@
private RepositoryHelper repositoryHelper;
+ private MavenProjectBuilder mavenProjectBuilder;
+
/**
* Default constructor
*/
@@ -91,12 +91,13 @@
}
/**
- * @see ProjectBuilder#buildFromLocalPath(java.io.InputStream, java.util.List, java.util.Collection, java.util.Collection, org.apache.maven.project.builder.PomArtifactResolver, java.io.File)
+ * @see ProjectBuilder#buildFromLocalPath(java.io.InputStream, java.util.List, java.util.Collection, java.util.Collection, org.apache.maven.project.builder.PomArtifactResolver, java.io.File, org.apache.maven.project.ProjectBuilderConfiguration)
*/
- public MavenProject buildFromLocalPath( InputStream pom, List<Model> inheritedModels,
- Collection<ImportModel> importModels,
- Collection<InterpolatorProperty> interpolatorProperties,
- PomArtifactResolver resolver, File projectDirectory )
+ public MavenProject buildFromLocalPath(InputStream pom, List<Model> inheritedModels,
+ Collection<ImportModel> importModels,
+ Collection<InterpolatorProperty> interpolatorProperties,
+ PomArtifactResolver resolver, File projectDirectory,
+ ProjectBuilderConfiguration projectBuilderConfiguration)
throws IOException
{
if ( pom == null )
@@ -139,7 +140,7 @@
domainModels.add( domainModel );
MavenProject mavenParent = null;
-
+ File parentFile = null;
if ( domainModel.getModel().getParent() != null )
{
List<DomainModel> mavenParents;
@@ -153,10 +154,14 @@
}
if(mavenParents.size() > 0) {
- mavenParent = buildFromLocalPath( ((InputStreamDomainModel) mavenParents.get(0)).getInputStream(), inheritedModels,
- importModels, interpolatorProperties, resolver, projectDirectory);
+ PomClassicDomainModel dm = (PomClassicDomainModel) mavenParents.get(0);
+ parentFile = dm.getFile();
+ domainModel.setParentFile(parentFile);
+ // mavenParent = buildFromLocalPath( dm.getInputStream(), inheritedModels,
+ // importModels, interpolatorProperties, resolver, projectDirectory);
+ // mavenParent.setFile(dm.getFile());
}
-
+
domainModels.addAll(mavenParents);
}
@@ -174,8 +179,10 @@
Model model = transformedDomainModel.getModel();
try {
- MavenProject mavenProject = new MavenProject( model, artifactFactory, mavenTools, repositoryHelper, null);
+ MavenProject mavenProject = new MavenProject( model, artifactFactory, mavenTools, repositoryHelper, null,
+ projectBuilderConfiguration);
mavenProject.setParent(mavenParent);
+ mavenProject.setParentFile(parentFile);
return mavenProject;
} catch (InvalidRepositoryException e) {
throw new IOException(e.getMessage());
@@ -223,7 +230,7 @@
artifactResolver.resolve( artifactParent );
PomClassicDomainModel parentDomainModel =
- new PomClassicDomainModel( new FileInputStream( artifactParent.getFile() ) );
+ new PomClassicDomainModel( artifactParent.getFile() );
if ( !parentDomainModel.matchesParent( domainModel.getModel().getParent() ) )
{
logger.warn( "Parent pom ids do not match: File = " + artifactParent.getFile().getAbsolutePath() );
@@ -274,7 +281,7 @@
throw new IOException( "File does not exist: File =" + parentFile.getAbsolutePath() );
}
- PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( new FileInputStream( parentFile ) );
+ PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( parentFile );
if ( !parentDomainModel.matchesParent( domainModel.getModel().getParent() ) )
{
logger.warn( "Parent pom ids do not match: File = " + parentFile.getAbsolutePath() );
Modified: maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java?rev=688778&r1=688777&r2=688778&view=diff
==============================================================================
--- maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java (original)
+++ maven/components/branches/sisbell-maven-2.1-profile/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java Mon Aug 25 10:05:05 2008
@@ -70,6 +70,7 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
+ assertNotNull("Parent is null", project1.getParent());
assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
Map map = project1.getArtifactMap();