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/07/16 00:39:04 UTC
svn commit: r677074 - in
/maven/sandbox/branches/SI_MAVEN_2_1/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/project/
Author: sisbell
Date: Tue Jul 15 15:39:03 2008
New Revision: 677074
URL: http://svn.apache.org/viewvc?rev=677074&view=rev
Log:
Fix for finding poms on local path.
Modified:
maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
Modified: maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=677074&r1=677073&r2=677074&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue Jul 15 15:39:03 2008
@@ -502,9 +502,9 @@
{
// getLogger().debug( "Allowing project-build to proceed for: " + projectDescriptor );
- //Model model = readModel( "unknown", projectDescriptor, STRICT_MODEL_PARSING );
+ //Model model = readModelFromLocalPath( "unknown", projectDescriptor, STRICT_MODEL_PARSING );
- Model model = readModel( "unknown", projectDescriptor, new PomArtifactResolver(config.getLocalRepository(),
+ Model model = readModelFromLocalPath( "unknown", projectDescriptor, new PomArtifactResolver(config.getLocalRepository(),
buildArtifactRepositories( getSuperModel() ), artifactResolver) );
@@ -560,7 +560,7 @@
artifactResolver.resolve( projectArtifact, remoteArtifactRepositories, localRepository );
File file = projectArtifact.getFile();
- model = readModel( projectId, file, new PomArtifactResolver(localRepository, remoteArtifactRepositories, artifactResolver) );
+ model = readModelFromRepository( projectId, file, new PomArtifactResolver(localRepository, remoteArtifactRepositories, artifactResolver) );
String downloadUrl = null;
@@ -1003,7 +1003,7 @@
// We will return a different project object using the new model (hence the need to return a project, not just modify the parameter)
project = new MavenProject( model );
-
+
project.setOriginalModel( originalModel );
project.setActiveProfiles( activeProfiles );
@@ -2045,17 +2045,33 @@
}
- private boolean isOldProjectBuilder = false;
+ private Model readModelFromLocalPath( String projectId,
+ File projectDescriptor,
+ PomArtifactResolver resolver )
+ throws ProjectBuildingException
+ {
+ if(projectDescriptor == null) {
+ throw new IllegalArgumentException("projectDescriptor: null, Project Id =" + projectId);
+ }
- protected void setOldProjectBuilder() {
- isOldProjectBuilder = true;
- }
+ if(projectBuilder == null) {
+ throw new IllegalArgumentException("projectBuilder: not initialized");
+ }
+
+ MavenProject mavenProject;
+ try {
+ mavenProject = projectBuilder.buildFromLocalPath(new FileInputStream(projectDescriptor), null, resolver,
+ projectDescriptor.getParentFile());
+ } catch (IOException e) {
+ e.printStackTrace();
+ throw new ProjectBuildingException(projectId, "File = " + projectDescriptor.getAbsolutePath() , e);
+ }
- protected void setNewProjectBuilder() {
- isOldProjectBuilder = false;
- }
+ return mavenProject.getModel();
+
+ }
- private Model readModel( String projectId,
+ private Model readModelFromRepository( String projectId,
File projectDescriptor,
PomArtifactResolver resolver )
throws ProjectBuildingException
@@ -2067,11 +2083,11 @@
if(projectBuilder == null) {
throw new IllegalArgumentException("projectBuilder: not initialized");
}
-
+
MavenProject mavenProject;
try {
- mavenProject = projectBuilder.buildFromStream(new FileInputStream(projectDescriptor), null, resolver,
- projectDescriptor.getParentFile());
+ mavenProject = projectBuilder.buildFromRepository(new FileInputStream(projectDescriptor), null, resolver
+ );
} catch (IOException e) {
e.printStackTrace();
throw new ProjectBuildingException(projectId, "File = " + projectDescriptor.getAbsolutePath() , e);
Modified: maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java?rev=677074&r1=677073&r2=677074&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/ProjectBuilder.java Tue Jul 15 15:39:03 2008
@@ -13,11 +13,12 @@
String ROLE = ProjectBuilder.class.getName();
- MavenProject buildFromArtifact(Artifact artifact, Collection<InterpolatorProperty> interpolatorProperties,
- PomArtifactResolver resolver)
+ MavenProject buildFromLocalPath(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
+ PomArtifactResolver resolver, File baseDirectory)
throws IOException;
- MavenProject buildFromStream(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
- PomArtifactResolver resolver, File projectDirectory)
+ MavenProject buildFromRepository(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
+ PomArtifactResolver resolver)
throws IOException;
+
}
Modified: maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java?rev=677074&r1=677073&r2=677074&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java Tue Jul 15 15:39:03 2008
@@ -41,16 +41,40 @@
this.artifactFactory = artifactFactory;
}
- public MavenProject buildFromArtifact(Artifact artifact, Collection<InterpolatorProperty> interpolatorProperties, PomArtifactResolver resolver)
+ public MavenProject buildFromRepository(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
+ PomArtifactResolver resolver)
throws IOException {
+
+ if (pom == null) {
+ throw new IllegalArgumentException("pom: null");
+ }
+
if (resolver == null) {
throw new IllegalArgumentException("resolver: null");
}
- resolver.resolve(artifact);
- return buildFromStream(new FileInputStream(artifact.getFile()), interpolatorProperties, resolver, null);//TODO: Fix
+
+ List<InterpolatorProperty> properties;
+ if (interpolatorProperties == null) {
+ properties = new ArrayList<InterpolatorProperty>();
+ } else {
+ properties = new ArrayList<InterpolatorProperty>(interpolatorProperties);
+ }
+
+ DomainModel domainModel = new PomClassicDomainModel(pom);
+ List<DomainModel> domainModels = new ArrayList<DomainModel>();
+ domainModels.add(domainModel);
+ domainModels.addAll(getDomainModelParentsFromRepository((PomClassicDomainModel) domainModel, resolver));
+
+ PomClassicTransformer transformer = new PomClassicTransformer();
+ ModelTransformerContext ctx = new ModelTransformerContext(
+ Arrays.asList(new ArtifactModelContainerFactory(), new IdModelContainerFactory()));
+ Model model = ((PomClassicDomainModel) ctx.transform(domainModels, transformer,
+ transformer, properties)).getModel();
+ System.out.println("*:" + new PomClassicDomainModel(model).asString());
+ return new MavenProject(model);
}
- public MavenProject buildFromStream(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
+ public MavenProject buildFromLocalPath(InputStream pom, Collection<InterpolatorProperty> interpolatorProperties,
PomArtifactResolver resolver, File projectDirectory)
throws IOException {
@@ -73,41 +97,43 @@
properties = new ArrayList<InterpolatorProperty>(interpolatorProperties);
}
- DomainModel domainModel = new PomClassicDomainModel(pom);
+ PomClassicDomainModel domainModel = new PomClassicDomainModel(pom);
List<DomainModel> domainModels = new ArrayList<DomainModel>();
domainModels.add(domainModel);
- domainModels.addAll(getDomainModelParentsFromRepository((PomClassicDomainModel) domainModel, resolver, projectDirectory));
+ if(domainModel.getModel().getParent() != null) {
+ if(isParentLocal(domainModel.getModel().getParent(), projectDirectory )) {
+ domainModels.addAll(getDomainModelParentsFromLocalPath(domainModel, resolver,
+ projectDirectory));
+ } else {
+ domainModels.addAll(getDomainModelParentsFromRepository(domainModel, resolver));
+ }
+ }
PomClassicTransformer transformer = new PomClassicTransformer();
ModelTransformerContext ctx = new ModelTransformerContext(
Arrays.asList(new ArtifactModelContainerFactory(), new IdModelContainerFactory()));
Model model = ((PomClassicDomainModel) ctx.transform(domainModels, transformer,
transformer, properties)).getModel();
+ System.out.println(new PomClassicDomainModel(model).asString());
+ return new MavenProject(model);
+ }
- // validateModel(model);
- for (DomainModel dm : domainModels) {
- // System.out.println(dm.getEventHistory());
- }
- MavenProject mavenProject = new MavenProject(model);
- Artifact artifact = artifactFactory.createProjectArtifact(model.getGroupId(), model.getArtifactId(),
- model.getVersion());
- if (mavenProject.getBuild() != null && mavenProject.getBuild().getOutputDirectory() != null
- && mavenProject.getBuild().getFinalName() != null) {
- File artifactFile = new File(mavenProject.getBuild().getDirectory(), mavenProject.getBuild().getFinalName()
- + "." + mavenProject.getPackaging());//TODO: fix extension
- if (!artifactFile.exists()) {
- throw new IOException("Artifact does not exist: File = " + artifactFile.getAbsolutePath());
+ private boolean isParentLocal(Parent parent, File projectDirectory){
+ try {
+ File f = new File(projectDirectory, parent.getRelativePath()).getCanonicalFile();
+ if (f.isDirectory()) {
+ f = new File(f, "pom.xml");
}
- artifact.setFile(artifactFile);
+ // logger.info("File: " + f.getAbsolutePath());
+ return f.exists();
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
}
-
- mavenProject.setArtifact(artifact);
-
- return mavenProject;
}
private List<DomainModel> getDomainModelParentsFromRepository(PomClassicDomainModel domainModel,
- PomArtifactResolver artifactResolver, File projectDirectory) throws IOException {
+ PomArtifactResolver artifactResolver) throws IOException {
if (artifactFactory == null) {
throw new IllegalArgumentException("artifactFactory: not initialized");
}
@@ -122,37 +148,74 @@
Artifact artifactParent =
artifactFactory.createParentArtifact(parent.getGroupId(), parent.getArtifactId(), parent.getVersion());
+ artifactResolver.resolve(artifactParent);
- Model model = domainModel.getModel();
+ PomClassicDomainModel parentDomainModel = new PomClassicDomainModel(new FileInputStream(artifactParent.getFile()));
+ if (!parentDomainModel.matchesParent(domainModel.getModel().getParent())) {
+ logger.warn("Parent pom ids do not match: File = " + artifactParent.getFile().getAbsolutePath());
+ }
- File parentFile = new File(projectDirectory, model.getParent().getRelativePath()).getCanonicalFile();
- if (parentFile.isDirectory()) {
- parentFile = new File(parentFile, "pom.xml");
+ domainModels.add(parentDomainModel);
+ domainModels.addAll(getDomainModelParentsFromRepository(parentDomainModel, artifactResolver));
+ return domainModels;
+ }
+
+
+ private List<DomainModel> getDomainModelParentsFromLocalPath(PomClassicDomainModel domainModel,
+ PomArtifactResolver artifactResolver,
+ File projectDirectory)
+ throws IOException {
+
+ if (artifactFactory == null) {
+ throw new IllegalArgumentException("artifactFactory: not initialized");
}
- //logger.info("Project Directory = " + projectDirectory.getAbsolutePath()) ;
- //logger.info("Relative PATH = " + model.getParent().getRelativePath());
- //logger.info("File:" + new File(projectDirectory, model.getParent().getRelativePath()).getAbsolutePath());
- //logger.info("Canonical Parent File: = " + parentFile.getAbsolutePath());
- artifactParent.setFile(parentFile);
- if (!parentFile.exists()) {
- logger.info("Parent pom does not exist on local path: File = " + parentFile.getAbsolutePath());
- artifactResolver.resolve(artifactParent);
-// throw new IOException("Parent pom does not exist: File = " + artifactParent.getFile() + ", Child Id = " +
- // model.getGroupId() + ":" + model.getArtifactId() + ":" + model.getVersion());
+ List<DomainModel> domainModels = new ArrayList<DomainModel>();
+
+ Parent parent = domainModel.getModel().getParent();
+
+ if (parent == null) {
+ return domainModels;
}
+ Model model = domainModel.getModel();
+ /*
+ logger.info("-----------------");
+ logger.info("Project Directory =" + projectDirectory.getAbsolutePath());
+ logger.info("Parent Path = " + model.getParent().getRelativePath());
+ logger.info("Relative Path = " + new File(projectDirectory, model.getParent().getRelativePath()));
+ */
+ File parentFile = new File(projectDirectory, model.getParent().getRelativePath()).getCanonicalFile();
+ //logger.info("Parent File = " + parentFile.getAbsolutePath());
+ if (parentFile.isDirectory()) {
+ // logger.info("Is directory = " + parentFile.getAbsolutePath());
+ parentFile = new File(parentFile.getAbsolutePath(), "pom.xml");
+ //logger.info("New Directory = " + parentFile.getAbsolutePath());
+ }
- PomClassicDomainModel parentDomainModel = new PomClassicDomainModel(new FileInputStream(artifactParent.getFile()));
+ if(!parentFile.exists()) {
+ throw new IOException("File does not exist: File =" + parentFile.getAbsolutePath());
+ }
+
+ PomClassicDomainModel parentDomainModel = new PomClassicDomainModel(new FileInputStream(parentFile));
if (!parentDomainModel.matchesParent(domainModel.getModel().getParent())) {
- logger.warn("Parent pom ids do not match: File = " + artifactParent.getFile().getAbsolutePath());
+ logger.warn("Parent pom ids do not match: File = " + parentFile.getAbsolutePath());
}
domainModels.add(parentDomainModel);
- domainModels.addAll(getDomainModelParentsFromRepository(parentDomainModel, artifactResolver, artifactParent.getFile().getParentFile()));
+ if(parentDomainModel.getModel().getParent() != null) {
+ if(isParentLocal( parentDomainModel.getModel().getParent(), parentFile.getParentFile() )) {
+ // logger.info("Parent Local: " + parentFile.getParentFile());
+ domainModels.addAll(getDomainModelParentsFromLocalPath(parentDomainModel, artifactResolver, parentFile.getParentFile()));
+ } else {
+ //logger.info("Parent Repo: ");
+ domainModels.addAll(getDomainModelParentsFromRepository(parentDomainModel, artifactResolver));
+ }
+ }
return domainModels;
}
+
public void enableLogging(Logger logger) {
this.logger = logger;
}
@@ -165,4 +228,6 @@
throw new IOException("Failed to validate: " + validationResult.toString());
}
}
+
+
}
Modified: maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
URL: http://svn.apache.org/viewvc/maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java?rev=677074&r1=677073&r2=677074&view=diff
==============================================================================
--- maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java (original)
+++ maven/sandbox/branches/SI_MAVEN_2_1/maven-project/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java Tue Jul 15 15:39:03 2008
@@ -139,15 +139,4 @@
return projectBuilder.build( pom, getLocalRepository(), new DefaultProfileManager( getContainer(), ctx ) );
}
- protected MavenProject getProjectOld( File pom)
- throws Exception
- {
- Properties props = System.getProperties();
- ProfileActivationContext ctx = new DefaultProfileActivationContext( props, false );
-
- ((DefaultMavenProjectBuilder) projectBuilder).setOldProjectBuilder();
-
-
- return projectBuilder.build( pom, getLocalRepository(), new DefaultProfileManager( getContainer(), ctx ) );
- }
}